hadoop環境構建

《Hadoop大數據技術》

  • 實驗目的
  1. 安裝Java環境
  2. 搭建Hadoop單機模式
  3. 在hadoop僞分佈式基礎上搭建Hadoop完全分佈式模式環境  
  • 實驗環境 

Win10+Centos7(Vmware workstation14)+winscp

  1. jdk 環境變量配置

打開一個terminal窗口,切換到管理員命令,關閉網絡防火牆,並取消開機自啓防火牆。

查找系統自帶的openjdk並刪除。

刪除後再檢查一次是否完全刪除openjdk

查看本機的地址

 

 

 

 

 

 

 

打開安裝的winscp,將下載好的hadoop-2.6.0.tar.gz和jdk-8u181.tar.gz傳到虛擬機的Documents中

 

 

 

 

 

再usr文件下創建java文件夾

 

 

將Documents中jdk的壓縮包移動到新建的java文件中並解壓

 

 

 

 

編輯 /home/wj/.bash_profile 文件

 

 

 

 

 

 

 

使用source  /home/wj/.bash_profile命令時文件生效,然後用java -version命令檢驗jdk配置是否成功。

 

 

 

 

  1.  安裝hadoop

解壓hadoop-2.6.0.tar.gz安裝包:解壓安裝包至~目錄下

 

 

 

用 vi ~/.bashrc 命令 編輯.bashrc文件,並使之生效

添加配置信息:

export HADOOP_HOME=~/hadoop-2.6.0/

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

 

 

 

 

 

 

 

使用hadoop version命令,檢驗配置信息是否生效。

 

 

 

 

 

 

切換目錄: cd hadoop-2.6.0/etc/hadoop/

編輯 hadoop-env.sh 文件

修改

export JAVA_HOME=/usr/java/jdk1.8.0_181/

 

 

 

 

 

配置core-site.xml文件

<property>

  <name>fs.defaultFS</name>

  <value>hdfs://master</value>

</property>

 

 

 

 

 

 

配置hdfs-site.xml文件

    <property>

     <name>dfs.replication</name>

     <value>1</value>

</property>

 

 

 

 

 

配置mapred-site.xml

先將mapred-site.xml.template文件複製爲mapred-site.xml。

 

 

 

再修改mapred-site.xml文件

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

 

 

 

 

 

配置yarn-site.xml

    <property>                 

              <name>yarn.nodemanager.aux-services</name>

  <value>mapreduce_shuffle</value>

</property>

    <property>

  <name>yarn.resourcemanager.hostname</name>

  <value>master</value>

    </property>

 

 

 

 

 

 

 

 

格式化HDFS文件系統:格式化的過程是創建初始目錄和文件系統結構的過程。格式化只需進行一次,下次啓動不再需要格式化

hdfs namenode -format

 

 

 

 

 

使用jps命令,正確啓動會出現至少三個進程

NameNode

DataNode

SecondaryNameNode

 

 

 

 

 

啓動YARN,用$ jps命令驗證,正確啓動將多出以下兩個進程

 

 

 

 

 

 

 

 

 

瀏覽器驗證

 

在瀏覽器地址欄中輸入master:50070網址,查看NameNode 和 Datanode 信息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

停止所有進程

stop-all.sh

 

 

 

 

 

 

 

用命令jps查看:關閉了Hadoop所有進程

 

 

 

  1. 在hadoop僞分佈式基礎上搭建Hadoop完全分佈式模式環境

 準備工作:

  1. 在僞分佈模式下,確保已關閉Hadoop所有進程。
  2. 爲了完全分佈式能正確格式化HDFS系統,刪除${HADOOP_HOME}/logs目錄下的所有內容。

 

 

 

 刪除${HADOOP_HOME}/log目錄下所有內容:

$ rm -rf ~/hadoop/log/*

 

 

配置完全分佈式模式:

  1. 修改主機名稱

將/etc/ hostname文件修改成Master:

vi /etc/hostname

 

 

 

 

 

將內容改爲Master

reboot重啓後生效

  1. 將/etc/hosts文件修改成如下內容

文件原內容:

 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

修改爲

127.0.0.1  localhost

192.168.81.142 master

192.168.81.143 slave1

192.168.81.144 Slave2

 

注:192.168.81.139 master爲本機的ip,這裏先指定了Slave1/Slave2機器及對應的IP,這些機器在後面步驟會由Master機器克隆出來。

reboot重啓虛擬機使修改文件生效。

重啓後主機名變成了Master,連接網絡後

用命令$ ping Master,就可以ping通Master主機了

注:退出使用ctrl+c。

 

 

 

 

 

 

 

 

測試slave1連通性

 

 

 

 

測試slave2連通性

 

 

 

 

  1.  克隆客戶機

因爲要搭建由3臺機器組成的完全分佈式集羣,現在只有1臺Master機器,所以需要用Master機器克隆出另外2臺機器。

克隆方法:

1) 關閉Linux客戶機,否則進行無法克隆操作

2) 左側欄點擊要克隆的LInux客戶機,右鍵管理克隆

 

 

 

 

 

 

                                             

 

3) 連續點擊下一步至克隆類型,選擇創建完整克隆,點擊下一步

 

 

 

                                      

 

 

 

 

 

 

 

 

 

 

 

 

 

4) 修改虛擬機名稱和位置:關於位置選擇,最好每臺客戶機單獨建一個文件夾:

 

 

 

 

 

 

 

 

 

 

5) 點擊完成,等待克隆完成,此過程大概需要3-5分鐘。

 

 

 

 

 

 

 

 

 

 

 

 

重複克隆方法5步,克隆slave2虛擬機

 

 

 

 

8)修改2臺克隆機的主機名稱

9)重啓兩臺虛擬機

打開第一臺克隆機,將其主機名稱命名爲Slave1,然後reboot重啓生效

 vi /etc/hostname

 

 

打開第二臺克隆機,將它的主機名稱命名爲Slave2,然後reboot重啓生效。

 

 

  1.  SSH配置

在完全分佈式模式下,集羣內所有機器需要免密登錄到集羣內所有機器,即 Master、Slave1、Slave2三臺機器需要免密登錄到其他任意兩臺機器。免密登錄的方法和僞分佈的免密登錄方法一樣,在Master、Slave1、Slave2機器生成公/私密鑰對,然後將公鑰發送給集羣內的所有機器,以Master免密登錄其他集羣內的所有機器爲例,其他兩臺機器重複以下操作。

1)在Master主機生成密鑰對

ssh-keygen -t rsa

 

 

 

 

 

 

 

 

 將Master公鑰id_rsa.pub追加到Master的~/.ssh/authorized_keys文件中,並複製到另外2臺Slave機器上

scp ~/.ssh/authorized_keys  wj@slave1: ~/

 

scp ~/.ssh/authorized_keys  wj@slave2:~/

分別在slave1和slave2中使用ssh-keygen -t rsa命令產生密鑰

 

 

 

                                           

 

 

 

 

 

分別使用chmod 600 ~/.ssh/authorized_keys命令修改slave1和slave2中的文件權限

 

 

驗證免密登錄:在Master主機驗證免密碼登錄集羣所有機器

 

 

 

 

 

  1.  配置完全分佈式文件

1) 配置core-site.xml

修改core-site.xml文件內容爲:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

        <property>

                <name>hadoop.tmp.dir</name>

                <value>~/hadoop-2.6.0/tmp</value>

        </property>

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://master</value>

        </property>

</configuration>

 

 

 

 

 

 

 

 

 

2)配置hdfs-site.xml

修改hdfs-site.xml文件內容爲:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

        <property>

                <name>dfs.replication</name>

                <value>2</value>

        </property>

</configuration>

 

 

 

 

 

 

 

 

3) 配置mapred-site.xml

mapred-site.xml與僞分佈式的配置一樣,不需改變。

4) 配置yarn-site.xml

修改yarn-site.xml文件內容爲:

<?xml version="1.0"?>

<configuration>

        <property>

                <name>yarn.resourcemanager.hostname</name>

                <value>master</value>

        </property>

        <property>

                <name>yarn.nodemanager.aux-services</name>

                <value>mapreduce_shuffle</value>

        </property>

</configuration>

 

 

 

 

 

 

 

 

 

5) 分發配置:將Master的配置目錄文件分發至其他機器

 

$ cd ~/hadoop/etc/

$ scp -r hadoop hadoop@Slave1:~/hadoop/etc/

$ scp -r hadoop hadoop@Slave2:~/hadoop/etc/

 準備工作:

1. 在僞分佈模式下,確保已關閉Hadoop所有進程。

2. 爲了完全分佈式能正確格式化HDFS系統,刪除${HADOOP_HOME}/tmp及${HADOOP_HOME}/logs目錄下的所有內容。

1)刪除${HADOOP_HOME}/tmp目錄下所有內容:

$ rm -rf ~/hadoop/tmp/*

2) 刪除${HADOOP_HOME}/log目錄下所有內容:

$ rm -rf ~/hadoop/log/*

配置完全分佈式模式:

1.修改主機名稱

1)將/etc/ hostname文件修改成Master:

$sudo vi /etc/hostname  

Master

注意:reboot重啓後才生效

2)將/etc/hosts文件修改成如下內容:

原內容:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

 

修改爲:

$ sudo vi /etc/hosts

127.0.0.1  localhost

192.168.30.128 Master

192.168.30.129 Slave1

192.168.30.130 Slave2

注意:這裏先指定了Slave1/Slave2機器及對應的IP,這些機器在後面步驟會由Master機器克隆出來。

3)重啓Linux生效:

$ reboot

重啓後主機名變成了Master,用命令$ ping Master,就可以ping通Master主機了。

hadoop@Master:~$ ping Master

PING Master (192.168.30.128) 56(84) bytes of data.

64 bytes from Master (192.168.30.128): icmp_seq=1 ttl=64 time=0.014 ms

64 bytes from Master (192.168.30.128): icmp_seq=2 ttl=64 time=0.085 ms

 

2.刪除原來的SSH配置

因爲主機名稱已改變,新的主機名還沒有加到公私密鑰中,用$ ssh Master不能免密登錄,需要刪除原來的SSH,待重新生成新的SSH。

$ rm -rf ~/.ssh/*

3.克隆客戶機

因爲要搭建由3臺機器組成的完全分佈式集羣,現在只有1臺Master機器,所以需要用Master機器克隆出另外2臺機器。

克隆方法:

1) 關閉Linux客戶機,否則進行無法克隆操作

2) 左側欄點擊要克隆的LInux客戶機,右鍵管理克隆

 

3) 連續點擊下一步至克隆類型,選擇創建完整克隆,點擊下一步

4) 修改虛擬機名稱和位置:關於位置選擇,最好每臺客戶機單獨建一個文件夾:

5) 點擊完成,等待克隆完成,此過程大概需要3-5分鐘。

按照如上方法,一共克隆出2臺機器。

6) 修改2臺克隆機的主機名稱

打開第一臺克隆機,將其主機名稱命名爲Slave1,然後reboot重啓生效。

$ sudo vi /etc/hostname

Slave1

$ reboot

打開第二臺克隆機,將它的主機名稱命名爲Slave2,然後reboot重啓生效。

$ sudo vi /etc/hostname

Slave2

$ reboot

4.SSH配置

在完全分佈式模式下,集羣內所有機器需要免密登錄到集羣內所有機器,即 Master、Slave1、Slave2三臺機器需要免密登錄到其他任意兩臺機器。免密登錄的方法和僞分佈的免密登錄方法一樣,在Master、Slave1、Slave2機器生成公/私密鑰對,然後將公鑰發送給集羣內的所有機器,以Master免密登錄其他集羣內的所有機器爲例,其他兩臺機器重複以下操作。

1)在Master主機生成密鑰對

$ ssh-keygen -t rsa -P ''

2) 將Master公鑰id_rsa.pub追加到Master的~/.ssh/authorized_keys文件中,並複製到另外2臺Slave機器上

$ ssh-copy-id -i  ~/.ssh/id-rsa.pub Master

$ ssh-copy-id -i  ~/.ssh/id-rsa.pub Slave1

$ ssh-copy-id -i  ~/.ssh/id-rsa.pub Slave2

3) 驗證免密登錄:在Master主機驗證免密碼登錄集羣所有機器

$ ssh Master

$ ssh Slave1

$ ssh Slave2

5.配置完全分佈式文件

在僞分佈式模式下已經配置了hadoop-env.sh,現在只需要配置4個xml即可,再將配置分發給其他機器。注意:以下配置均在Master機器操作。

進入Master機器的hadoop配置文件目錄${HADOOP_HOME}/etc/hadoop/

$ cd ~/hadoop/etc/hadoop/

1) 配置core-site.xml

修改core-site.xml文件內容爲:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

        <property>

                <name>hadoop.tmp.dir</name>

                <value>~/hadoop-2.6.0/tmp</value>

        </property>

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://Master</value>

        </property>

</configuration>

注意:fs.defaultFS修改爲Master機器的IP地址或者主機名稱

2)配置hdfs-site.xml

修改hdfs-site.xml文件內容爲:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

        <property>

                <name>dfs.replication</name>

                <value>2</value>

        </property>

</configuration>

3) 配置mapred-site.xml

mapred-site.xml與僞分佈式的配置一樣,不需改變。

4) 配置yarn-site.xml

修改yarn-site.xml文件內容爲:

<?xml version="1.0"?>

<configuration>

        <property>

                <name>yarn.resourcemanager.hostname</name>

                <value>Master</value>

        </property>

        <property>

                <name>yarn.nodemanager.aux-services</name>

                <value>mapreduce_shuffle</value>

        </property>

</configuration>

5) 分發配置:將Master的配置目錄文件分發至其他機器

$ cd ~/hadoop/etc/

$ scp -r hadoop hadoop@Slave1:~/hadoop/etc/

$ scp -r hadoop hadoop@Slave2:~/hadoop/etc/

 

下面通通沒測試

6.指定集羣Slaves配置

此過程是與僞分佈式模式最根本的區別。配置Slavers文件就是制定哪些機器是Slave機器,Hadoop將變成完全分佈式模式。配置方法如下:

在Master主機操作,進入配置目錄${HADOOP_HOME}/etc/hadoop/,修改slavers文件

$ cd ~/hadoop/etc/hadoop

$ vi slaves

將slaves文件的內容修改爲:

Slave1

Slave2

注意:

1) 此配置只需要在Master機器進行,其他從機不需要配置此文件;

2) 要將slaves文件原來的localhost刪除掉,再添加Slave主機名稱, Slave主機名稱也可以改爲Slave IP地址。

7.格式化HDFS文件系統

$ hdfs namenode -format

8.啓動Hadoop守護進程

分別啓動HDFS和YARN

$ start-dfs.sh

$ start-yarn.sh

或者用以下命令啓動HDFS和YARN, 注意:此命令已經過時,不推薦使用。

$ start-all.sh

 

9.驗證Hadoop進程

1)  $ jps命令驗證:

用$ jps命令分別在每一臺機器驗證

$ jps

執行jps命令後,Master主機包含以下三個進程爲啓動成功

SecondaryNameNode

NameNode

ResourceManager

分別在三臺Slave主機執行jps命令,包含以下兩個進程爲啓動成功

NodeManager

DataNode

注:如果某個機器少了某個進程,應該到相應機器去找對應的log查看原因,log存放路徑爲${HADOOP_HOME}/logs目錄下。例如:Slave2機器少了DataNode進程,則應該進入到Slave2機器的${HADOOP_HOME}/logs目錄下,查看datanode相關的log,找到啓動失敗的根源。

$ cd ~/hadoop/logs

$ more hadoop-hadoop-datanode-Slave2.log

2) 瀏覽器(WebUI)驗證

查看hadoop的文件系統,可以查看 NameNode 和 Datanode 信息,還可以在線查看 HDFS 中的文件:在Master機器瀏覽器輸入網址: http://Master:50070 ,出現以下界面爲成功。 注:用虛擬機內部的瀏覽器。宿主機(物理機)訪問則需要將localhost換成虛擬機的ip,用ifconfig命令查看虛擬機ip ,如:http://192.168.30.128:50070  

 

 

 

 

 

 

 

 

點擊Datanodes,顯示有兩臺datanode信息。

 

 

瀏覽器查看集羣所有應用程序

訪問集羣中的所有應用程序的默認端口號爲8088。輸入網址:http://Master:8088

可以看到Active Nodes爲2,說明集羣有2個節點正在運行。

  • 實驗總結(每項不少於20字)

存在問題: 

1、在設置免密登陸時,由master將authorized_keys發送到另外兩臺主機上時,出現錯誤,

2、Hadoop集羣配置完成後無法成功分發配置

解決方法: 

手動複製master中的authorized_keys的內容到slave1和slave2中。

收穫: 

  1. Hadoop配置文件後需要格式化,修改配置後也需要格式化
  2. 正常情況下使用scp命令傳輸到slave1和slave2的文件在home文件下
  3. 使用jps命令後提示command not found,有兩個原因
  1. jdk沒有安裝,或者該命令被意外刪除。
  2. 檢查jdk的環境配置文件.bash_profile是否配置正確。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章