Hadoop完全分散式搭建步驟
請在搭建偽分散式的基礎上搭建完全分散式
1、克隆兩臺虛擬機器(點選藍色超連結有如何克隆虛擬機器)。
2、克隆完成之後首先在三臺機器上都分別輸入 $ ifconfig
檢視是否有eth0
如下:是正確的。
【
eth0 Link encap:Ethernet HWaddr 00:0C:29:01:E6:92
inet addr:192.168.85.141 Bcast:192.168.85.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe01:e692/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1021 errors:0 dropped:0 overruns:0 frame:0
TX packets:441 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:288048 (281.2 KiB) TX bytes:54808 (53.5 KiB)lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)】
如果有eth0則執行第三步。
如果沒有eth0,則需要解決eth0消失或變成了eth1的問題。<=====點選藍色超連結。
然後再執行第三步
3、配置靜態ip --------三臺機器都需要配置靜態ip。
我使用net模式。----------點選該藍色超連結檢視如何修改ip地址。
4、修改hosts檔案 ----三臺機器都需要修改。
$ sudo vim /etc/hosts
追加:【靜態ip 主機名】
【192.168.85.113 dog1
192.168.85.114 dog2
192.168.85.115 dog3
】
5、關閉防火牆 --------三臺機器都需要關閉。
$ sudo service iptables stop
$ sudo service ip6tables stop
這個命令可以臨時關閉防火牆
$ sudo chkconfig iptables off
$ sudo chkconfig ip6tables off
這個命令可以永久關閉防火牆(需要reboot)
$ sudo chkconfig iptables --list
$ sudo chkconfig ip6tables --list
這個命令可以檢視防火牆的狀態
6、關閉selinx服務
重啟後永久關閉selinux
$ sudo vi /etc/selinux/config
將檔案裡標紅的部分改為disabled
【
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
】
$ sudo sestatus -v
這個命令可以檢視selinux的狀態
$ sudo setenforce 0
這個命令可以臨時關閉selinux
7、同步時間 -----三臺機器都需要同步時間
檢視當前系統時間:
$ date
時間同步:
$ sudo ntpdate -u time.windows.com
若不加上-u引數, 會出現以下提示:no server suitable for synchronization found;
連不上時間伺服器IP也會出現此提示,這個時侯可以換一個時間伺服器。
-u:此引數可以越過防火牆與主機同步
將系統時間同步到硬體時鐘上:
$ sudo hwclock -w
8、驗證無密碼登陸是否可用(三臺機器都可以互相無密碼登陸)
$ ssh dog2
$ ssh dog3
9、修改主機名
$ sudo vim /etc/sysconfig/network----克隆的機器都需要修改。
修改為:
【HOSTNAME=???】
使之生效:
$ reboot
10、建議將之前配置的偽分散式備份一下 ------三臺機器都是如此
$ cp -r /home/betty/soft/hadoop/etc/hadoop /home/betty/soft/hadoop/etc/pseudo_hadoop -----備份偽分散式
$ mv /home/betty/soft/hadoop/etc/hadoop /home/betty/soft/hadoop/etc/cluster_hadoop -----建立完全分散式的配置
$ ln -s /home/betty/soft/hadoop/etc/cluster_hadoop /home/betty/soft/hadoop/etc/hadoop -----建立軟連線指向完全分散式的配置
11、配置Hadoop的配置檔案。
配置core-site.xml
【 <!--預設檔案系統的名稱。一個URI的
方案和許可權決定檔案系統的實現。的
uri的方案確定config屬性(fs. schema .impl)命名
檔案系統實現類。uri的許可權已經被使用
確定檔案系統的主機、埠等。
指定主節點位置,提供一個對外的介面供其他程式使用
-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<!--其他臨時目錄的基礎
hadoop系統臨時目錄(格式化後的namenode和datanode)
-->
<name>hadoop.tmp.dir</name>
<value>/home/betty/soft/tmp</value>
</property>】
配置hdfs-site.xml
【 <property>
<!--副本數-->
<name>dfs.replication</name>
<value>3</value>
</property>】
配置yarn-site.xml
【 <property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!--指定resourcemanager所在主機-->
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>】
配置mapred-site.xml
此目錄下沒有該檔案,我們需要將mapred-site.xml.template 複製一份,改成此名。
$ cp mapred-site.xml.template mapred-site.xml
然後再修改:
【<!--指定mr任務在哪個上面執行(本地、經典和yarn)-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>】
配置slaves:決定了那臺機器裡邊有datanode
【 dog1
dog2
dog3】
以上配置三臺機器必須都要相同。可以先配置一臺機器,然後將/home/betty/soft/hadoop整個資料夾傳送到其他機器上這樣比較容易。
$ scp -r ~/soft/hadoop [email protected]:~/soft/hadoop-2.7.3
$ scp -r ~/soft/hadoop [email protected]:~/soft/hadoop-2.7.3
12、重啟所有機器
此時,我們叢集搭建成功了,為了確保配置檔案生效,我們最好reboot所有的機器
13、進行格式化分散式檔案系統
格式化之前需要刪除各個節點的原hadoop.tmp.dir資料夾下的所有檔案,否則格式化會報錯!一定要刪除!
$ sudo rm -rf /tmp/*
格式化命令:最好在dog1上進行。
$ hdfs namenode -format
14、啟動叢集
$start-all.sh
或
$ start-dfs.sh
$ start-yarn.sh
注意 :
如果遇到了這個問題:dog1: /home/betty/soft/hadoop-2.7.3/sbin/hadoop-daemon.sh: line 165: /tmp/hadoop-betty-namenode.pid: Permission denied
解決辦法:$sudo chmod 777 /tmp
15、檢視程序
$ jps
檢視三臺虛擬主機的hadoop相關程序
[[email protected] hadoop]$ jps --------------------dog1五個程序
10210 Jps
9698 SecondaryNameNode
9864 ResourceManager
7471 DataNode
9497 NameNode
[[email protected] hadoop]$ jps --------------------dog2三個程序
8071 NodeManager
8279 Jps
7961 DataNode
[[email protected] hadoop]$ jps --------------------dog3三個程序
5266 NodeManager
5155 DataNode
5444 Jps
16、web訪問網頁
192.168.233.110:50070
192.168.233.110:8088
都出現兩個活躍節點,就完全配置成功
17、關閉叢集
$ stop-all.sh 關閉所有主機