ubuntu安裝偽分布式Hadoop3.1.2


本文是基於已經安裝好的ubuntu環境上搭建偽分布式hadoop,在virtualbox安裝ubuntu可以參考小編的

virtualbox安裝ubuntu16.04 LTS及其配置

 

一、Hadoop的三種運行模式(啟動模式)

1.1、單機模式(獨立模式)(LocalStandalone  Mode

  -默認情況下,Hadoop即處於該模式,用於開發和調式。

  -不對配置文件進行修改。
  -使用本地文件系統,而不是分布式文件系統。
  -Hadoop不會啟動NameNode、DataNode、JobTracker、TaskTracker等守護進程,Map()和Reduce()任務作為同一個進程的不同部分來執行的。
  -用於對MapReduce程序的邏輯進行調試,確保程序的正確。

1.2、偽分布式模式(Pseudo-Distrubuted Mode

  -Hadoop的守護進程運行在本機機器,模擬一個小規模的集群 

  -在一台主機模擬多主機。
  -Hadoop啟動NameNode、DataNode、JobTracker、TaskTracker這些守護進程都在同一台機器上運行,是相互獨立的Java進程。
  -在這種模式下,Hadoop使用的是分布式文件系統,各個作業也是由JobTraker服務,來管理的獨立進程。在單機模式之上增加了代碼調試功能,允許檢查內存使用情況,HDFS輸入輸出,

    以及其他的守護進程交互。類似於完全分布式模式,因此,這種模式常用來開發測試Hadoop程序的執行是否正確。
  -修改3個配置文件:core-site.xml(Hadoop集群的特性,作用於全部進程及客戶端)、hdfs-site.xml(配置HDFS集群的工作屬性)、mapred-site.xml(配置MapReduce集群的屬性)
  -格式化文件系統

1.3、全分布式集群模式(Full-Distributed Mode

  -Hadoop的守護進程運行在一個集群上 

  -Hadoop的守護進程運行在由多台主機搭建的集群上,是真正的生產環境。
  -在所有的主機上安裝JDK和Hadoop,組成相互連通的網絡。
  -在主機間設置SSH免密碼登錄,把各從節點生成的公鑰添加到主節點的信任列表。
  -修改3個配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml,指定NameNode和JobTraker的位置和端口,設置文件的副本等參數
  -格式化文件系統

 

二、准備系統環境

2.1、運行虛擬機,進行靜態網絡配置:

  在終端上輸入ifconfig -a命令查看網卡名,我的主機有三個網絡接口,分別是enp0s3(橋接網卡),enp0s8(NAT),lo(動態獲取ip)

# ifconfig -a

 

  對/etc/network/interfaces文件進行編輯,以下是在終端上執行的命令:

sudo vim /etc/network/interfaces

  上圖是ubuntu的/etc/network/interfaces文件默認的內容,默認動態獲取方法的配置

  但是在業務上需要給ubuntu主機配置靜態ip網絡,在這里我只對enp0s3進行修改,以下是靜態分配的配置方法(根據自己的需求改)

auto enp0s3
iface enp0s3 inet static
address 192.168.87.138
netmask 255.255.255.0
gateway 192.168.87.254

  接下來需要添加域名服務器,編輯/etc/resolv.conf文件,添加域名服務器,在這里我選擇全球通用DNS域名服務器,國內用戶推薦使用,速度較快!

sudo vim /etc/resolv.conf
nameserver 114.114.114.114
或者
nameserver 8.8.8.8

  配置已經完成了,接下來需要重啟網絡,網絡重啟有多種方法,在這里只列出兩種方法,二選一即可。

  1. 重啟網卡

/etc/init.d/networking restart

  2. 這兩條命令是重啟某個網絡接口,一個系統可能有多個網絡接口

# ifdown enp0s3
# ifup enp0s3

  檢查網絡配置參數是否正確:

# ifconfig

 

   檢查是否能ping通:

ping www.qq.com

 

   已成功ping通,靜態網絡已配置好了。

 

2.2、修改主機名與IP地址的對應關系

  查看主機名:

# hostname

  修改/etc/hosts文件:

# vim /etc/hosts

  

  /etc/hosts文件默認是上圖所示,修改文件為以下內容,注釋127.0.1.1,添加主機靜態地址與主機名:

 

2.3、配置本機ssh免密碼登錄

  單機配置ssh免密登陸的話,輸入以下的命令即可:

  提示輸入信息,一直回車按默認即可。

# ssh-keygen -t rsa
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys

  

  完成之后,以 root 用戶登錄,修改 ssh 配置文件:

 

vim /etc/ssh/sshd_config

  把文件中的下面幾條信息的注釋去掉,如圖所示:

RSAAuthentication yes # 啟用RSA認證
PubkeyAuthentication yes # 啟用公鑰私鑰配對認證方式
AuthorizedKeysFile .ssh/authorized_keys #公鑰文件路徑(和上面生成的文件同)

 

  然后重啟服務:

# service sshd restart

 

  輸入ssh localhost驗證出現如下界面,中間不需要輸入密碼,即配置完成。

 

# ssh localhost

 

 

2.4、 安裝Oracle Java,並配置環境變量

  1. 從官網下載oracle jdk1.8

  2. 解壓tar包,指定解壓/usr/local/目錄

# tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/local/

  3. 配置環境變量

# vim /etc/profile

  然后添加以下配置在文件尾:

export JAVA_HOME=/usr/local/jdk1.8.0_211
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib

  保存退出即可。

  4. 測試jdk配置成功否

  刷新環境變量:

# source /etc/profile

  輸入java -verion,如配置成功,有下圖的java版本在終端上顯示:

 

  到此,hadoop需要的系統環境已經搭建完畢了,接下來開始搭建偽分布式hadoop集群~

 

三、搭建偽分布式hadoop集群

3.1 安裝hadoop

  官網下載hadoop3.1.2,解壓hadoop安裝包到/usr/local/目錄下:

# tar -zxvf hadoop-3.1.2.tar.gz -C /usr/local  

  在環境變量配置hadoop:

# vim /etc/profile

  然后添加以下配置在文件尾:

export HADOOP_HOME=/usr/local/hadoop-3.1.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_HDFS_HOME=/usr/local/hadoop-3.1.2
export HADOOP_CONF_DIR=/usr/local/hadoop-3.1.2/etc/hadoop

  使用source /etc/profile刷新環境變量后,用hadoop version命令測試是否安裝成功:

# source /etc/profile
# hadoop version

 

3.2 偽分布式hadoop配置

  hadoop的配置文件統一放在$HADOOP_HOME/etc/hadoop目錄下,在這里我們只需要修改5個文件,分別是hadoop-env.sh,core-site.xml,mapred-site.xml,yarn-site.xml,yarn-site.xml。

  1. hadoop-env.sh

  在文件中修改如下:

export JAVA_HOME=/usr/local/jdk1.8.0_211
export HADOOP_HOME=/usr/local/hadoop-3.1.2

 

  2. core-site.xml

<configuration>
  <property>    <name>fs.defaultFS</name>    <value>hdfs://localhost:9000/</value>   </property>

    <property>
      <name>hadoop.tmp.dir</name>
      <value>/usr/local/hadoop/data/</value>
    </property>

    <property>
      <name>fs.checkpoint.dir</name>
      <value>file:///usr/local/hadoop/data/dfs/namesecondary</value>
   </property>

</configuration>

 

  3. hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.http.address</name>
        <value>luengmingbiao:50070</value>
    </property>
   <property>
     <name>dfs.namenode.name.dir</name>
     <value>file:///usr/local/hadoop/data/dfs/name</value>
</property>
<property>
     <name>dfs.datanode.data.dir</name>
     <value>file:///usr/local/hadoop/data/dfs/data</value>
   </property>
</configuration>

 

  4. mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

 

  5. yarn-site.xml

<configuraion>
  <property>     <name>yarn.resourcemanager.hostname</name>     <value>luengmingbiao</value>   </property>   <property>     <name>yarn.nodemanager.aux-services</name>     <value>mapreduce_shuffle</value>   </property>   <property> <name>yarn.application.classpath</name>     <value>/usr/local/hadoop-3.1.2/etc/hadoop:/usr/local/hadoop-3.1.2/share/hadoop/common/lib/*:/usr/local/hadoop-3.1.2/share/hadoop/common/*:/usr/local/hadoop-3.1.2/share/hadoop/hdfs:/usr/local/hadoop-3.1.2/share/hadoop/hdfs/lib/*:/usr/local/hadoop-3.1.2/share/hadoop/hdfs/*:/usr/local/hadoop-3.1.2/share/hadoop/mapreduce/lib/*:/usr/local/hadoop-3.1.2/share/hadoop/mapreduce/*:/usr/local/hadoop-3.1.2/share/hadoop/yarn:/usr/local/hadoop-3.1.2/share/hadoop/yarn/lib/*:/usr/local/hadoop-3.1.2/share/hadoop/yarn/*</value>   </property> </configuraion>

注: “yarn.application.classpath“可以通過在終端上輸入如下命令獲取:

# hadoop classpath

 

 

  對hdfs(Hadoop Distributed File System)進行格式化,hdfs是用來存儲數據的分布式文件系統。

# hdfs namenode -format

 

  出現上述圖所示,代表成功格式化。

  Hadoop3.x以上版本在啟動上有一個坑,不添加以下配置啟動進程的時候會報以下的錯並打印到終端上:

 

  解決方案(可以只針對ERROR出現的變量進行定義,如果不行再配置全部):

# vim $HADOOP_HOME/sbin/start-dfs.sh

 

# vim $HADOOP_HOME/sbin/stop-dfs.sh

 

 

# vim $HADOOP_HOME/sbin/start-yarn.sh

 

# vim $HADOOP_HOME/sbin/stop-yarn.sh

 

3.3 啟動Hadoop

  1. 啟動HDFS

# hdfs --daemon start namenode    
# hdfs --daemon start datanode   
# hdfs --daemon start secondarynamenode

  或

# start-dfs.sh

 

  2. 啟動YARN集群

# yarn --daemon start resourcemanager
# yarn --daemon start nodemanager

  或

# start-yarn.sh

 

  3. jps命令查看是否啟動成功

 

  4. HDFS和YARN集群都有默認的Web可視化頁面

    HDFS: http://主機ip:50070

 

    YARN:http://主機ip:8088

 

 

 3.4 測試Hadoop

  建立測試文件:

# vim test.txt

  然后輸入如下數據:

hello hadoop
hello World
Hello Java
Hey man
i am a programmer

  將測試文件放到測試目錄中:

# hdfs dfs -mkdir hdfs:///hadoop
# hdfs dfs -mkdir hdfs:///hadoop/input
# hdfs dfs -put ./test.txt hdfs:///hadoop/input

  執行hadoop自帶的wordcount程序:

# hadoop jar /usr/local/hadoop-3.1.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar wordcount hdfs:///hadoop/input hdfs:///output

 

 

  然后在命令行輸入 hdfs dfs -cat hdfs:///output/part-r-00000 查看詞頻統計結果:

# hdfs dfs -cat hdfs:///output/part-r-00000

 

   到此,偽分布式Hadoop已經搭建成功了~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM