Hadoop手把手逐級搭建 第二階段: Hadoop完全分布式(full)

前置步驟:

1). 第一階段:Hadoop單機偽分布(single)

0. 步驟概述

1). 克隆4臺虛擬機

2). 為完全分布式配置ssh免密

3). 將hadoop配置修改為完全分布式

4). 啟動完全分布式集群

5). 在完全分布式集群上測試wordcount程序

1. 克隆4臺虛擬機

1.1 使用hadoop0克隆4臺虛擬機hadoop1,hadoop2,hadoop3,hadoop4

1.1.0 克隆虛擬機hadoop1

1.1.1 右鍵點擊當前虛擬機hadoop0

1.1.2 在右鍵菜單選中“管理”

1.1.3 在“管理”的子菜單選中“克隆”

1.1.4 彈出“克隆虛擬機向?qū)А贝翱?
1.1.5 點擊“下一步”進入“克隆源”選擇窗口

1.1.6 在“克隆源”中選擇“虛擬機當前狀態(tài)”或者“現(xiàn)有快照(僅限關(guān)閉的虛擬機)(S):”

1.1.7 點擊下一步進入“克隆類型”窗口

1.1.8 選擇“創(chuàng)建完整克隆”,點擊下一步

1.1.9 在“新虛擬機名稱”窗口,“虛擬機名稱(V)”中填入新虛擬機“hadoop1”,“位置(L)”中選擇目錄

1.1.10 點擊“完成”開始克隆

1.2生成新的mac地址

1.2.1 右鍵點擊新建的虛擬機hadoop1

1.1.2在右鍵菜單選中點擊“設(shè)置”

1.1.3 在“虛擬機設(shè)置”窗口,“硬件”標簽下,選中“網(wǎng)絡(luò)適配器”

1.1.4 在窗口右側(cè)點擊“高級”

1.1.5 在“網(wǎng)絡(luò)適配器高級設(shè)置”窗口最下方“MAC 地址(M)”一欄點擊“生成”

1.1.6 點擊“確定”使設(shè)置生效

1.3 修改主機名

1.3.1 啟動新虛擬機hadoop1

1.3.2 修改network中的HOSTNAME

1.3.2.1 修改生效前命令提示符中現(xiàn)有的主機名還是hadoop0
[root@hadoop0 ~]# vim /etc/sysconfig/network
HOSTNAME=hadoop1

1.3.2.2 修改完成后/etc/sysconfig/network完整內(nèi)容如下
NETWORKING=yes 
HOSTNAME=hadoop1 
GATEWAY=192.168.111.2 

1.4 修改hadoop1的IP地址

14.1.1 修改hadoop1的IP地址為192.168.111.211
[root@hadoop0 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.111.211

1.4.2 修改完成后/etc/sysconfig/network-scripts/ifcfg-eth0完整內(nèi)容如下
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.111.211
NETMASK=255.255.255.0
GATEWAY=192.168.111.2

1.5 刪除70-persistent-net.rules文件

[root@hadoop0 ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules

1.6 重啟虛擬機使配置生效

[root@hadoop0 ~]# init 6

1.7 查看主機名:命令提示符中主機名已變成hadoop1

[root@hadoop1 ~]# hostname
hadoop1

1.8 測試外網(wǎng)是否暢通

[root@hadoop1 ~]# ping baidu.com
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=5.50 ms
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=5.50 ms

#如果返回如上信息表示網(wǎng)絡(luò)暢通

1.9 克隆另外3臺虛擬機

使用同樣的方式克隆并配置另外3臺虛擬機,分別命名為hadoop2,hadoop3,hadoop4

2. 為完全分布式配置ssh免密

2.1 在hadoop1上修改hosts文件

2.1.1 將/etc/hosts文件內(nèi)容替換如下
[root@hadoop1 ~]# vim /etc/hosts
192.168.111.211 hadoop1
192.168.111.212 hadoop2
192.168.111.213 hadoop3
192.168.111.214 hadoop4

2.1.2 將hadoop1上的/etc/hosts分發(fā)到hadoop2,hadoop3,hadoop4三個節(jié)點
[root@hadoop1 ~]# scp /etc/hosts hadoop2:/etc/hosts
[root@hadoop1 ~]# scp /etc/hosts hadoop3:/etc/hosts
[root@hadoop1 ~]# scp /etc/hosts hadoop4:/etc/hosts

2.2 在hadoop1上生成密匙

[root@hadoop1 ~]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

2.3 設(shè)置本機ssh免密

[root@hadoop1 ~]# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

2.4 將hadoop1生成的公匙拷貝到hadoop2

2.4.1 拷貝過程中需要輸入hadoop2的密碼
[root@hadoop1 ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub hadoop2
root@hadoop2's password: 
Now try logging into the machine, with "ssh 'hadoop2'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

2.4.2 同理,將公匙拷貝hadoop3和hadoop4

2.5 測試從hadoop1通過ssh連接到hadoop2

2.5.1 ssh到hadoop2
[root@hadoop1 ~]# ssh hadoop2
Last login: Mon Nov 27 04:10:16 2017 from 192.168.111.211

2.5.2無需輸入密碼直接進入hadoop2,說明免密成功
[root@hadoop2 ~]

2.6 退出hadoop2連接,回到hadoop1

2.6.1 使用exit命令退出
[root@hadoop2 ~]# exit
logout
Connection to hadoop2 closed.

2.6.2 命令提示符顯示已經(jīng)回到hadoop1
[root@hadoop1 ~]# 

3. 將hadoop配置修改為完全分布式

3.0 進入$HADOOP_HOME/etc/hadoop目錄

[root@hadoop1 ~]# cd /opt/test/hadoop-2.6.5/etc/hadoop

3.1 修改core-site.xml配置

# 將$HADOOP_HOME/etc/hadoop/core-site.xml內(nèi)容替換如下
[root@hadoop1 hadoop]# vim core-site.xml
<configuration>
<!-- 修改defaultFS為hadoop1-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9000</value>
    </property>
<!-- 修改了臨時文件存放位置-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/test/hadoop/full</value>
</property>
</configuration>

3.2 修改hdfs-site.xml配置

# 將$HADOOP_HOME/etc/hadoop/hdfs-site.xml內(nèi)容替換如下
[root@hadoop1 hadoop]# vim hdfs-site.xml
<configuration>
<!-- 將備份數(shù)修改為3,小于等于當前datanode數(shù)目即可-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
<!-- 將secondary namenode改為hadoop2-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop2:50090</value>
</property>
<property>
       <name>dfs.namenode.name.dir</name>
    <value>file://${hadoop.tmp.dir}/dfs/name</value>
 </property>
 <property>
    <name>dfs.namenode.data.dir</name>
    <value>file://${hadoop.tmp.dir}/dfs/data</value>
 </property>
 <property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
 </property>
</configuration>

3.3 修改yarn-site.xml

# 將$HADOOP_HOME/etc/hadoop/yarn-site.xml內(nèi)容替換如下
[root@hadoop1 hadoop]# vim yarn-site.xml
<configuration>
<!-- 添加了yarn.resourcemanager.hostname 屬性-->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop1</value>
</property>
 
<property>  
    <name>yarn.nodemanager.aux-services</name>  
    <value>mapreduce_shuffle</value>  
</property>  
<!-- 添加了yarn.nodemanager.auxservices.mapreduce.shuffle.class屬性-->
<property>
    <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>

3.4 配置salves文件

# 將$HADOOP_HOME/etc/hadoop/slaves內(nèi)容替換如下
[root@hadoop1 hadoop]# vim slaves
hadoop2
hadoop3
hadoop4

3.5 分發(fā)hadoop配置到所有節(jié)點

[root@hadoop1 hadoop]# scp core-site.xml hdfs-site.xml yarn-site.xml slaves hadoop2:`pwd`
[root@hadoop1 hadoop]# scp core-site.xml hdfs-site.xml yarn-site.xml slaves hadoop3:`pwd`
[root@hadoop1 hadoop]# scp core-site.xml hdfs-site.xml yarn-site.xml slaves hadoop4:`pwd`

3.6 分發(fā)hosts文件到所有節(jié)點

[root@hadoop1 hadoop]# scp /etc/hosts hadoop2:/etc/
[root@hadoop1 hadoop]# scp /etc/hosts hadoop3:/etc/
[root@hadoop1 hadoop]# scp /etc/hosts hadoop4:/etc/

4. 啟動完全分布式集群

4.1 在hadoop1上重新格式化namenode

[root@hadoop1 ~]# hdfs namenode -format

4.2 在hadoop1上啟動集群

[root@hadoop1 ~]# start-dfs.sh

4.3 在hadoop1上啟動yarn

[root@hadoop1 ~]# start-yarn.sh

4.4 在各節(jié)點上查看進程

4.4.1 節(jié)點hadoop1
[root@hadoop1 ~]# jps
1466 NameNode
1756 ResourceManager
2014 Jps

4.4.2 節(jié)點hadoop2
[root@hadoop2 ~]# jps
1663 Jps
1546 NodeManager
1397 DataNode
1454 SecondaryNameNode

4.4.3 節(jié)點hadoop3
[root@hadoop3 ~]# jps
1599 Jps
1457 NodeManager
1399 DataNode

4.4.4 節(jié)點hadoop4
[root@hadoop4 ~]# jps
1411 DataNode
1475 NodeManager
1613 Jps

5. 在完全分布式集群上測試wordcount程序

5.1 從hadoop1進入$HADOOP_HOME/share/hadoop/mapreduce/目錄

[root@hadoop1 ~]# cd /opt/test/hadoop-2.6.5/share/hadoop/mapreduce/

5.2上傳test.txt文件到根目錄

5.2.1 默認上傳
[root@hadoop1 mapreduce]# hadoop fs -put test.txt /

5.2.2 也可以指定blocksize上傳
[root@hadoop1 mapreduce]# hdfs dfs -D dfs.blocksize=1048576 -put test.txt /

5.3 運行wordcount測試程序,輸出到/output

[root@hadoop1 mapreduce]# 
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /test.txt /output
#運行時會首先看到如下信息
INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032

5.4 查看mapreduce運行結(jié)果

[root@hadoop1 mapreduce]# hadoop dfs -text /output/part-*
hello   100003
world   200002
“hello  100000

后續(xù)步驟:

3). 第三階段:Hadoop高可用(HA)

4). 第四階段:Hadoop高可用+聯(lián)邦+視圖文件系統(tǒng)(HA+Federation+ViewFs)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容