ubuntu安裝僞分佈式Hadoop3.1.2

做業要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3223html

 

本文是基於已經安裝好的ubuntu環境上搭建僞分佈式hadoop,在virtualbox安裝ubuntu能夠參考小編的java

virtualbox安裝ubuntu16.04 LTS及其配置node

 

1、Hadoop的三種運行模式(啓動模式)

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

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

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

1.2、僞分佈式模式(Pseudo-Distrubuted Mode

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

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

    以及其餘的守護進程交互。相似於徹底分佈式模式,所以,這種模式經常使用來開發測試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的位置和端口,設置文件的副本等參數
  -格式化文件系統oracle

 

2、準備系統環境

2.一、運行虛擬機,進行靜態網絡配置:

  在終端上輸入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.二、修改主機名與IP地址的對應關係

  查看主機名:

# hostname

  修改/etc/hosts文件:

# vim /etc/hosts

  

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

 

2.三、配置本機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.四、 安裝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集羣~

 

3、搭建僞分佈式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已經搭建成功了~

相關文章
相關標籤/搜索