1. 程式人生 > >Hadoop完全分散式搭建步驟

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    關閉所有主機