Hadoop集羣搭建實驗之僞分佈式部署

1)安裝虛擬機VirtualBox

先卸載,再安裝,

學會基本操作,  啓動虛擬機,  新建虛擬機,  主機網絡管理器查看虛擬網卡,

2)安裝CentOS

安裝1臺乾淨的CentOS作爲搭建hadoop集羣的基礎環境

純命令行界面安裝成功登陸, 忘記root密碼會修改, 

虛擬網卡配置,  win7和CenOS構成的網絡拓撲,ifconfig查看IP地址, ping命令測試,XSHELL遠程連接,

修改配置文件配置IP地址, 配置文件的位置/etc/sysconfig/network-scripts

配置YUM源, 連接阿里源,自動安裝軟件  yum list    和  yum install  

學會虛擬機的複製,複製後應該修改IP,避免IP地址衝突, 複製的新虛擬機的MAC地址是自動分配的不會衝突

可參考系列博文Hadoop手把手逐級搭建,從單機僞分佈到高可用+聯邦

https://yq.aliyun.com/users/r3cgwpwhr7cie?spm=a2c4e.11153940.0.0.cea964409exlsb

一 Hadoop僞分佈式部署(Pseudo Distributed)

1)複製一臺新的CentOS虛擬機

必須關機後才能複製
2)XSHELL遠程登錄

注意VirtualBox主機網絡管理器的虛擬網卡IP地址必須和CentOS一個網段

3)通過配置文件修改IP地址

配置文件位置/etc/sysconfig/network-scripts/ifcfg-enp0s8,文件名和網絡名稱對應

修改後執行service network restart重啓網絡接口,XSHELL用新的IP地址重新連接

4)拷貝Hadoop安裝包和JAVA JDK安裝包到Linux

拷貝到/home目錄

5)解兩個壓縮安裝包到指定目錄

cd /home

tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz  -C /usr/local/

tar -zxvf jdk-7u79-linux-x64.tar.gz -C /usr/local/

cd  /usr/local/

6)修改hostname主機名

vi /etc/hostname   主機名修改爲hadoop

7)修改hosts文件

vi /etc/hosts

前兩行保留,刪除掉多餘的行,只增加一行

192.168.56.10 hadoop     

注意:IP地址設置爲虛擬機Linux的IP地址,按實際地址設置

8)設置環境變量並使之生效

vi /etc/profile

增加以下內容:

#jdk
export JAVA_HOME=/usr/local/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin

#hadoop
export HADOOP_HOME=/usr/local/hadoop-2.6.0-cdh5.7.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile 讓環境變量生效
echo $JAVA_HOME

 echo $HADOOP_HOME 測試環境變量是否生效

9)設置本機的SSH免密登錄

執行 ssh  hadoopssh 192.168.56.20(當前Linux的IP地址),測試能否免密登錄本機Linux,如果必須輸入才能登錄,就必須進行SSH免密登錄設置

執行ssh-keygen命令,遇到提示直接回車,生成一個密鑰對,使用RSA加密算法,生成一個公鑰和一個私鑰

執行ssh-copy-id  hadoopssh 192.168.56.20命令 , 把公鑰發送到目標機

再次執行 ssh  hadoop ssh 192.168.56.20,測試能否免密登錄本機Linux,如果能不輸入密碼自動登錄成功,說明SSH免密登錄設置成功

10)關閉防火牆firewall和SeLinux

關閉防火牆命令 systemctl disable firewalld 關閉後執行systemctl status firewalld查看防火牆狀態爲inactive,關閉成功

關閉SeLinux命令 setenforce 0 關閉後執行getenforce查看SeLinux的狀態爲Permissive,關閉成功

11)修改hadoop-env.sh文件

文件路徑是/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop-env.sh

cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop

vi hadoop-env.sh

a)修改JAVA_HOME環境變量的值爲java jdk的存放路徑

# export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/java/jdk1.8

b)還要修改HADOOP_CONF_DIR變量的值,HADOOP_CONF_DIR表示hadoop配置文件的存放路徑,否則執行start-dfs.sh啓動hdfs時會報錯
#export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}
export HADOOP_CONF_DIR=/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop

執行source hadoop-env.sh讓設置生效

12)配置core-site.xml文件

文件路徑是/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/core-site.xml

cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop

vi core-site.xml

在<configuration> </configuration>之間增加藍色字體配置參數

<configuration>  <property>
    <name>fs.defaultFS</name>
        <value>hdfs://hadoop:8020</value>
  </property>
   <property>
      <name>hadoop.tmp.dir</name>
      <value>/root/hdfs/tmp</value>
   </property></configuration>

13)修改hdfs-site.xml 配置文件

文件路徑是/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hdfs-site.xml 

cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop

vi hdfs-site.xml 

在<configuration> </configuration>之間增加藍色字體配置參數

<configuration> <property>
     <name>dfs.replication</name>
     <value>1</value>
 </property></configuration>

14)修改slaves文件

cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/ 切換到slaves文件所在目錄

vi slaves   

刪除localhost,添加本機名hadoop

15)創建HDFS存放數據的目錄

cd /root 切換到root目錄

執行命令mkdir -p  hdfs/tmp  在root目錄下創建兩級子目錄/root/hdfs/tmp,

路徑/root/hdfs/tmp和core-site.xml文件中的hadoop.tmp.dir參數值相同

16)格式化HDFS文件系統

首次啓動Hadoop集羣之前,必須先格式化HDFS文件系統

cd $HADOOP_HOME  切換到hadoop安裝目錄

cd bin 切換到bin目錄

ls  查看 有一個SHELL腳本文件hdfs

執行 hdfs namenode -format 格式化命令

出現Storage directory /root/hdfs/tmp/dfs/name has been successfully formatted.

17)啓動HDFS集羣

執行腳本start-dfs.sh啓動hdfs

18)執行java進程查看命令jps,除了Jps外,出現以下三個進程,說明HDFS啓動成功:

3041 NameNode
3315 SecondaryNameNode
3128 DataNode3500 Jps

進程啓動問題的解決:

如果發現NameNode進程沒有啓動,

可先嚐試執行hadoop-daemon.sh start namenode命令來啓動namenode,

再輸入jps命令查看NameNode進程是否啓動, 

 如果NameNode還沒有啓動,   再執行stop-dfs.sh停止hdfs所有進程,   

再執行hdfs namenode -format命令,重新執行一次格式化,

然後再次執行start-dfs.sh啓動hdfs的所有進程,

最後,執行jps命令,查看NameNode,DataNode,SecondaryNameNode三個進程,是否全部啓動成功

19)執行hadoop fs -ls / 查看hdfs文件系統目錄
此時hdfs文件系統根目錄下還沒有任何目錄,

可以執行hadoop fs -mkdir /input命令,在hdfs文件系統的根目錄下創建一個input子目錄,

然後再執行hadoop fs -ls / 查看目錄命令, 會發現出現了一個子目錄:Found 1 items
drwxr-xr-x   - root supergroup          0 2019-09-12 09:50 /input

還可以執行hadoop fs -put /usr/local/hadoop-2.6.0-cdh5.7.0/README.txt  /input   命令,  把Linux本地文件系統上的一個文件上傳到HDFS文件系統的/input目錄中

20)在win7下,用chrome瀏覽器訪問HDFS自帶的web配置網站 http://192.168.56.20:50070 ,能出現如下頁面說明訪問成功:


================================================================================

從第21步開始,執行配置並啓動資源協調器yarn

21)修改mapred.xml配置文件

cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 切換到mapred.xml配置文件所在目錄

cp mapred-site.xml.template mapred-site.xml   複製mapred-site.xml.template模板文件爲一個新配置文件mapred-site.xml

vi mapred-site.xml

在<configuration> </configuration>之間增加藍色字體配置參數,複製粘貼時小心亂碼

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

22)修改yarn-site.xml配置文件

cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 切換到yarn-site.xml配置文件所在目錄

vi yarn-site.xml

在<configuration> </configuration>之間增加藍色字體配置參數,複製粘貼時小心亂碼

<configuration><property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property></configuration>

23)啓動資源協調器yarn

執行腳本start-yarn.sh啓動yarn

24)執行java進程查看命令jps,除了Jps外,多出現兩個進程ResourceManager和NodeManager,說明yarn啓動成功:

2688 DataNode
2833 Jps2546 NameNode2116 ResourceManager
2196 NodeManager2794 SecondaryNameNode

25)在win7下,用chrome瀏覽器訪問yarn自帶的web配置網站 http://192.168.56.20:8088,能出現如下頁面說明訪問成功:



從第26步開始,運行一個hadoop自帶的mapreduce示例程序:wordcount詞頻統計

本次練習使用官方案例程序
$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar

26)首先確認第25步已經成功啓動資源協調器yarn,如果沒有啓動就執行start-yarn.sh啓動yarn

再執行文件上傳命令,上傳本地Linux文件系統的一個文件文件README.txt 到hdfs文件系統的/inpu目錄

hadoop fs -put /usr/local/hadoop-2.6.0-cdh5.7.0/README.txt /input

27)執行詞頻統計程序wordcount

切換到目錄 cd /usr/local/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce

執行命令hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount  /input/README.txt /output

請注意/output不能提前存在,執行命令後會自動創建該目錄

28)查看詞頻統計程序wordcount的執行結果

先執行命令 hadoop fs -ls /output  查看hdfs的/output目錄的內容,應該出現:

Found 2 items
-rw-r--r--   1 root supergroup          0 2019-09-16 09:50 /output/_SUCCESS
-rw-r--r--   1 root supergroup       1306 2019-09-16 09:50 /output/part-r-00000

wordcount運行結果會輸出到文件output/part-r-00000中,執行命令:

hadoop fs -cat /output/part-r-00000  查看詞頻統計程序wordcount的執行結果,類似:

details    1
distribution    2
eligible    1
encryption    3
exception    1

說明詞頻統計程序運行正確