【hadoop是2.6.5版本 xshell是6版本 jdk是1.8.0.131 虛擬機是CentOS-6.9-x86_64-bin-DVD1.iso vmware10】
1.創建虛擬機
第一步:在VMware中創建一台新的虛擬機。如圖2.2所示。
圖2.2
第二步:選擇“自定義安裝”,然后單擊“下一步”按鈕,如圖2.3所示。
圖2.3
第三步:單擊“下一步” 按鈕,如圖2.4所示。
圖2.4
第四步:選擇“稍后安裝操作系統”,然后單擊“下一步” 按鈕,如圖2.5所示。
圖2.5
第五步:客戶機操作系統選擇Linux,版本選擇“CentOS 64位”,然后單擊“下一步” 按鈕,如圖2.6所示。
圖2.6
第六步:在這里可以選擇“修改虛擬機名稱”和“虛擬機存儲的物理地址”,如圖2.7所示。
圖2.7
第七步:根據本機電腦情況給Linux虛擬機分配“處理器個數”和每個處理器的“核心數量”。注意不能超過自己電腦的核數,推薦處理數量為1,每個處理器的核心數量為1,如圖2.8所示。
圖2.8
第八步:給Linux虛擬機分配內存。分配的內存大小不能超過自己本機的內存大小,多台運行的虛擬機的內存總合不能超過自己本機的內存大小,如圖2.9所示。
圖2.9
第九步:使用NAT方式為客戶機操作系統提供主機IP地址訪問主機撥號或外部以太網網絡連接,如圖2.10所示。
圖2.10
第十步:選擇“SCSI控制器為LSI Logic(L)”,然后單擊“下一步” 按鈕,如圖2.11所示。
圖2.11
第十一步:選擇“虛擬磁盤類型為SCSI(S)”,然后單擊“下一步” 按鈕,如圖2.12所示。
圖2.12
第十二步:選擇“創建新虛擬磁盤”,然后單擊“下一步” 按鈕,如圖2.13所示。
圖2.13
第十三步:根據本機的磁盤大小給Linux虛擬機分配磁盤,並選擇“將虛擬機磁盤拆分為多個文件”,然后單擊“下一步”按鈕,如圖2.14所示。
圖2.14
第十四步:根據需要修改存儲磁盤文件的位置。如果不更改,默認存儲在Linux虛擬機安裝文件目錄,如圖2.15所示。
圖2.15
第十五步:單擊“完成”按鈕,完成新虛擬機向導,如圖2.16所示。
圖2.16
第十六步:在虛擬機名字上單擊鼠標右鍵,選擇“設置”來設置安裝的ISO文件。選擇“CD/DVD à 使用ISO鏡像文件”,選擇自己的鏡像文件,然后單擊“確定”按鈕,如圖2.17所示。
圖2.17
第十七步:開啟設置好的虛擬機,進行Linux虛擬機安裝,如圖2.18所示。
圖2.18
第十八步:選擇“不再顯示此消息”,然后單擊“取消” 按鈕。
第十九步:進入到VMware虛擬機選擇“Instell or upgrade an existing system”單擊“回車” 鍵進行安裝。或者不作任何操作,它將倒計時90秒后自動安裝。進入到VMware后可以用“Ctrl+Alt”組合鍵退出VMware,如圖2.19所示。
圖2.19
第二十步:進入到安裝前測試頁面,通過方向鍵選擇“Skip”按鈕跳過測試,如圖2.20所示。
圖2.20
第二十一步:用鼠標單擊“Next” 按鈕進行下一步操作,如圖2.21所示。
圖2.21
第二十二步:用鼠標選擇“中文簡體”,然后單擊“下一步”按鈕,如圖2.22所示。

圖2.22
第二十三步:鍵盤選擇“美國英語式”,然后單擊“下一步” 按鈕,如圖2.23所示。

圖2.23
第二十四步:選擇“基本存儲設備”,然后單擊“下一步” 按鈕,如圖2.24所示。

圖2.24
第二十五步:單擊“忽略所有數據” 按鈕,如圖2.25所示。
圖2.25
第二十六步:設置Linux虛擬機的“主本名”,然后單擊“下一步” 按鈕,如圖2.26所示。
圖2.26
第二十七步:設置時間區域,勾選系統使用UTC時間,然后單擊“下一步”按鈕,如圖2.27所示。
圖2.27
第二十八步:設置管理員用戶root的密碼,如圖2.28所示。(統一使用123456)
圖2.28
第二十九步:選擇“使用所有空間”,然后單擊“下一步”按鈕,如圖2.29所示。
圖2.29
第三十步:單擊“將修改寫入磁盤”按鈕,如圖2.30所示。
圖2.30
第三十一步:選擇Minimal,然后單擊“下一步” 按鈕。這里安裝的是純命令行版,也可以安裝桌面版,可以選擇Desktop或者Minimal Desktop,如圖2.31所示。
圖2.31
第三十二步:進行安裝界面,這里一共需要安裝332個軟件包,如圖2.32所示。
圖2.32
第三十三步:單擊“重新引導” 按鈕,完成安裝,如圖2.33所示。

圖2.33
第三十四步:測試安裝是否成功。輸入用戶root和用戶密碼,如果能進入到如下界面,說明安裝成功,如圖2.34所示。
圖2.34
[root@localhost ~]#
root:是登錄到Linux系統的用戶名。
localhost:是Linux系統的主機名。
~:是root用戶所在的位置。“~”是表示root的家目錄,root家目錄實際路徑是/home/root。
2.linux虛擬機 安裝JDK和Hadoop
為在生產環境中hadoop大數據集群是由多台服務器組成的集群,為了方便學習這里采用在VMware平台中搭建虛擬機的方式模擬hadoop大數據集群。若要想實現hadoop大數據集群環境,至少需要4台虛擬機,其中1台Master節點,3台Slave節點,每台節點配置環境。為了實現hadoop集群須有一台Master節點和多台Slave節點(其中IP地址第三段“153”需要跟自己的VMware工具平台網段一致,可以通過在VMware工作平台中單擊“編輯-->虛擬網絡編輯器-->VMware8-->子網”來查看)。


具體配置如表5.1所示。
表5.1 集群節點信息
| 主機名 |
IP地址 |
| Master001 |
192.168.153.200 |
| Slave001 |
192.168.153.201 |
| Slave002 |
192.168.153.202 |
| Slave003 |
192.168.153.203 |
1. 基礎信息配置。
首先在一台虛擬機中設置基礎信息,假設這台虛擬機為Master001。在基礎信息中需要設置主機名、IP地址和名稱解析等配置,這些配置文件只有root用戶才有改寫權限,所以需要使用root用戶登錄來編寫這些配置文件。
1)修改主機名
通過編輯network文件,將HOSTNAME值修改為新的主機名,具體操作如下。
[root@localhost ~]# vi /etc/sysconfig/network
改寫:
HOSTNAME=Master001
2)設置靜態IP
通過編輯ifcfg-eth0文件來設置IP地址,具體操作如下。
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
改寫:
ONBOOT=yes
BOOTPROTO=static
插入:
IPADDR=192.168.153.200
NETMASK=255.255.255.0
GATEWAY=192.168.153.2
DNS1=192.168.153.2
3)設置hosts
hosts文件是Linux系統中負責IP地址與域名快速解析的文件,需要配置其它的幾個節點的主機名和IP來快速訪問集群中的其它節點。
具體操作如下:
[root@localhost ~]# vi /etc/hosts
插入:
192.168.153.200 Master001
192.168.153.201 Slave001
192.168.153.202 Slave002
192.168.153.203 Slave003
4)使設置生效
只是修改IP地址可以重啟網絡服務即可以生效,操作如下:
[root@localhost ~]# service network restart
如果修改了主機名,必須重啟虛擬機才能生效,操作如下:
[root@localhost ~]# reboot
5)驗證設置是否成功
啟動成功后信息欄從“[root@localhost ~]#”變成了“[root@Master001 ~]#”,這時主機名修改成功。
驗證IP地址設置是否成功可以通過ifconfig命令查看IP地址,如果出現“eth0”網絡名稱和IP地址,說明靜態IP設置成功,這時可以使用ping命令進一步驗證是否能聯通內網。,具體操作如下:
[root@Master001 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:45:78:7B
inet addr:192.168.153.101 Bcast:192.168.153.255 Mask:255.255.255.0
......
RX bytes:8610 (8.4 KiB) TX bytes:9849 (9.6 KiB)
lo Link encap:Local Loopback
net addr:127.0.0.1 Mask:255.0.0.0
......
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@Master001 ~]# ping 192.168.153.1 (此處的153 應改為你們 NAT 模式下子網的第三段)
PING 192.168.153.1 (192.168.153.1) 56(84) bytes of data.
64 bytes from 192.168.153.1: icmp_seq=1 ttl=128 time=0.450 ms
......
64 bytes from 192.168.153.1: icmp_seq=4 ttl=128 time=0.522 ms
^C
--- 192.168.153.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 4019ms
rtt min/avg/max/mdev = 0.450/0.501/0.572/0.055 ms
驗證外網是否聯通。VMware平台中的虛擬是通過與虛擬機共享主機的IP地址來訪問外網,虛擬機要連接網絡必須保證宿主機能夠正常訪問網絡,虛擬機是否能訪問外網可以通過“ping www.baidu.com”命令來驗證,如果能ping通百度說明外網訪問成功。
[root@Master001 ~]# ping www.baidu.com
PING www.baidu.com (180.97.33.107) 56(84) bytes of data.
64 bytes from 180.97.33.107: icmp_seq=1 ttl=128 time=36.2 ms
......
64 bytes from 180.97.33.107: icmp_seq=6 ttl=128 time=41.2 ms
^C
--- www.baidu.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5729ms
rtt min/avg/max/mdev = 36.278/38.147/41.229/1.858 ms
6)創建普通用戶
計算機的操作難免會有失誤,如果關於內核的操作不當,就會對系統造成重大破壞,如一些工具不能使用,系統無法啟動等等。為了減少誤操作對系統造成的傷害,出於安全性需要建立普通用戶。
(1)創建用戶名叫hadoop的用戶。
[root@Master001 ~]# adduser hadoop
(2)給hadoop用戶指定密碼(密碼:123456)。
[root@Master001 ~]# passwd hadoop
更改用戶 hadoop 的密碼。
新的 密碼:
無效的密碼: 過於簡單化/系統化
無效的密碼: 過於簡單
重新輸入新的 密碼:
passwd: 所有的身份驗證令牌已經成功更新。
(3)驗證用戶是否創建成功,如果能成功切換表示用戶創建成功。
[root@Master001 ~]# su hadoop
[hadoop@Master001 ~]#
7)安裝Xshell
XShell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口,它接收用戶輸入的命令並把它送入內核去執行。可以把XShell理解為一個客戶端,可以通過這個客戶端來遠程操作Linux系統,就像用Navicat去連接MySQL服務器一樣,可以遠程操作MySQL數據庫。
3. 安裝XShell上傳文件
1.安裝
(1)在安裝文件目錄中找到Xme4.exe文件,並雙擊安裝Xme4.exe。
(2)勾選同意,單擊“下一步”按鈕,如圖2.35所示。
圖2.35
(3)輸入名字、公司和密鑰,單擊“下一步”按鈕,如圖2.36所示。

Product Key:101210-450789-147200
圖2.36
(4)修改安裝地址,單擊“下一步”按鈕,如圖2.37所示。
圖2.37
(5)選擇經典安裝模式,單擊“下一步”按鈕,如圖2.38所示。
圖2.38
(6)以后操作均為默認選項,當出現“安裝成功”后單擊“完成”按鈕即可。
3. 連接XSHell
(1)雙擊XShell圖標,單擊“新建連接”按鈕,打開XShell終端,如圖2.39所示。
圖2.39
(2)配置需要連接的虛擬機IP地址、用戶名和密碼。
這里使用hadoop用戶登錄,連接成功后將進入到hadoop用戶家目錄,如果是root用戶登錄連接成功將進入root用戶家目錄,如圖2.40、2.41所示。
(主機號應為你所配置的虛擬機IP(即IPADDR 后所寫網段) 可在虛擬機中使用 ifconfig命令查看)

圖2.40
圖2.41
(3)選擇連接XShell,如果信息欄出現“[hadoop@Master001 ~]$”表示連接成功。
(4)切換到家里目錄,在家目錄下創建一個名字叫software的文件夾,用於管理安裝文件。
[hadoop@Master001 ~]$ cd ~
[hadoop@Master001 ~]$ mkdir software
(5)進入到softeware目錄。
[hadoop@Master001 ~]$ cd software
[hadoop@Master001 software]$
4. 利用Xftp工具上傳文件
1)XShell工具中自帶Xftp工具快捷鍵,可以利用Xftp快捷鍵進入到Xftp工具中,Xftp工具可以從XShell工作界面,單擊“Xftp快捷鍵”按鈕登錄,登錄的用戶與XShell登錄的用戶為同一用戶。如圖2.42所示。也可以單獨通過雙擊Xftp工具輸入IP地址、用戶名和密碼單獨登錄。
如果使用XShell快捷方式登錄,用戶登錄上傳的哪個文件權限將屬於該用戶也是經常失誤的地方。
圖2.42
2)圖5.11中,左邊界面是宿主機中的界面,右邊界面是虛擬機中的界面,下面界面是傳輸數據的進度條界面。可以在宿主機中找到要上傳的文件,通過雙擊或者拖拽的方式將文件上傳到虛擬機中;也可以在虛擬機中拖拽文件到宿主機中下載文件,通過XShell快捷方式登錄到Xftp工具。虛擬機界面中目錄位置是登錄之前的位置,如果這個位置不是想要的位置,可在Xftp中通過選擇欄進行選擇。
將hadoop-2.6.5.tar.gz和jdk-8u131-linux-x64.tar.gz安裝包文件上傳到虛擬機software文件夾中,如圖2.43所示。
圖2.43
4. 安裝JDK
1)在XShell中輸入ls命令可以查看Xftp上傳的文件內容,通過tar命令解壓jdk-8u131-linux-x64.tar.gz壓縮文件,操作如下:
[hadoop@Master001 software]$ ls
jdk-8u131-linux-x64.tar.gz
hadoop-2.6.5.tar.gz
[hadoop@Master001 software]$ tar -zxf jdk-8u131-linux-x64.tar.gz
[hadoop@Master001 software]$ ls
jdk-8u131-linux-x64.tar.gz
hadoop-2.6.5.tar.gz
jdk1.8.0_131
2)復制JDK安裝目錄
進入到jdk1.8.0_131目錄,使用pwd命令打印jdk安裝路徑,利用鼠標選擇復制路徑。
[hadoop@Master001 software]$ cd jdk1.8.0_131/
[hadoop@Master001 jdk1.8.0_131]$ pwd
/home/hadoop/software/jdk1.8.0_131
3)配置環境變量
Linux系統中環境變量分為兩種:全局變量和局部變量。profile文件是全局變量配置文件,只有管理員用戶對profile文件才有寫入權限,所以要編寫profile文件需要切換到root用戶,因為在全局變量中配置的環境變量對所有用戶都有效。.bashrc文件是局部變量配置文件,在.bashrc文件配置的環境變量只對當前用戶有效。
本文是配置的全局環境變量。操作如下:
[hadoop@Master001 jdk1.8.0_131]$ su root
密碼:
[root@Master001 ~]# vi /etc/profile
插入(在最下面):
#java
export JAVA_HOME=/home/hadoop/software/jdk1.8.0_131
export PATH=$PATH:$JAVA_HOME/bin
4)使用環境變量生效
[root@Master001 ~]# source /etc/profile
5)驗證JDK是否安裝成功
輸入java或者java -version,如果出現java命令的詳細說明或者出現JDK版本號,表示安裝成功,如果出現“-bash: dddd: command not found”表示安裝失敗。
6. 安裝hadoop
1)切換到hadoop用戶,並進入到software目錄,使用ls命令可以查看Xftp上傳的文件內容,通過tar命令解壓hadoop-2.6.5.tar.gz壓縮文件。操作如下:
[root@Master001 ~]# su hadoop
[hadoop@Master001 ~]$ cd software/
[hadoop@Master001 software]$ ls
jdk-8u131-linux-x64.tar.gz jdk1.8.0_131
hadoop-2.6.5.tar.gz
[hadoop@Master001 software]$ tar -zxf hadoop-2.6.5.tar.gz
[hadoop@Master001 software]$ ls
jdk-8u131-linux-x64.tar.gz jdk1.8.0_131
hadoop-2.6.5.tar.gz hadoop-2.6.5
2)進入hadoop安裝目錄
進入到hadoop-2.6.5目錄,使用pwd命令打印hadoop安裝路徑,利用鼠標選擇復制路徑。
[hadoop@Master001 software]$ cd hadoop-2.6.5
[hadoop@Master001 hadoop-2.6.5]$ pwd
/home/hadoop/software/hadoop-2.6.5
3)配置hadoop環境變量
切換到root用戶,編輯profile文件,並插入hadoop配置文件。操作如下:
[hadoop@Master001 hadoop-2.6.5]$ su root
密碼:
[root@Master001 ~]# vi /etc/profile
插入:
#hadoop
export HADOOP_HOME=/home/hadoop/software/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
4)使環境變量生效
[root@Master001 ~]# source /etc/profile
5)驗證hadoop安裝是否成功
輸入hadoop命令,如果出現hadoop命令相關的詳細信息,表示安裝成功;如果出現“-bash: dddd: command not found”,表示安裝失敗。
6)配置core-site.xml文件
關於Hadoop配置文件的講解視頻可掃描二維碼觀看。【配置Hadoop文件】
切換到hadoop用戶,進入到hadoop-2.6.5/etc/hadoop/目錄,編輯core-site.xml文件。
[root@Master001 ~]# su hadoop
[hadoop@Master001 ~]$ cd software/hadoop-2.6.5/etc/hadoop/
[hadoop@Master001 hadoop]$ ls
core-site.xml mapred-site.xml salves
hadoop-env.cmd hdfs-site.xml yarn-site.xml
......
[hadoop@Master001 hadoop]$ vi core-site.xml
插入:
<configuration>
<!--指定HDFS存儲入口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master001:9000</value>
</property>
<!--指定hadoop臨時目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/software/hadoop-2.6.5/tmp</value>
</property>
</configuration>
7)配置hadoop-env.sh文件
編輯hadoop-env.sh文件,修改java_home地址,java_home地址是解壓的jdk地址,配置java_home是為了使用java的現實。
修改:
# The java implementation to use.
export JAVA_HOME=/home/hadoop/software/jdk1.8.0_131
8)配置hdfs-site.xml文件
hdfs-site.xml文件是hadoop2.0以后版本的必備配置文件之一,可以在hdfs-site.xml配置集群名字空間、訪問端口、URL地址、故障轉移等配置。
[hadoop@Master001 hadoop]# vi hdfs-site.xml
插入:
<configuration>
<!--配置數據備份數-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--設置secondaryNamenode運行的節點-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Slave002:50070</value>
</property>
</configuration>
9)配置mapred-site.xml文件
在hadoop包里是沒有mapred-site.xml文件,需要通過mapred-site.xml.template模版文件復制出mapred-site.xml文件。操作如下:
[hadoop@Master001 hadoop]# cp mapred-site.xml.template mapred-site.xml
[hadoop@Master001 hadoop]# vi mapred-site.xml
插入:
<configuration>
<!--設置jar程序啟動Runner類的main方法運行在yarn集群中-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
10)配置slaves文件
hadoop集群中所有的datanode節點都需要寫入到slaves文件中,因為它是用來指定存儲數據的節點文件,Master會讀取salves文件來獲取存儲信息,根據slaves文件來做資源平衡。
注意:
(1)slaves文件名全部是小寫,有很多初學者使用vi Slaves來編輯slaves文件,它將會在hadoop目錄中重新創建一個首字母為大寫的slaves文件,這樣是錯誤的;
(2)slaves文件打開后里面有一個“localhost”,這個localhost需要把刪除,如果沒有刪除集群會把Master也當做DataNode節點,這樣會造成Master節點負載過重。
[hadoop@Master001 hadoop]# vi slaves
刪除:
localhost
插入:
Slave001
Slave002
Slave003
11)配置yarn-site.xml
yarn-site.xml文件是ResourceManager進程相關配置參數。
[hadoop@Master001 hadoop]# vi yarn-site.xml
插入:
<configuration>
<!--設置對外暴露的訪問地址為Master001-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master001</value>
</property>
<!--NodeManager上運行的附屬服務。需配置成mapreduce_shuffle,才可運行MapReduce程序-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
6. 安裝ssh
ssh是一種遠程傳輸通信協,用於兩台或多台節點之間數據傳輸。通過yum方式在線安裝ssh,yum是在線安裝工具,因此使用yum安裝時必須連接網絡。yum是一個Shell前端軟件包管理器,它能夠從yum服務器自動下載rpm包然后安裝,一次安裝完成所有需要的軟件包,不必一次次的下載,非常的簡單方便。
1)yum工具屬於root用戶工具,所以需要切換到root用戶進行在線安裝。
[hadoop@Master001 hadoop]$ su root
密碼:
[root@Master001 ~]#
2)在安裝ssh之前需要先查找yum庫有哪些ssh軟件的rpm包。
[root@Master001 ~]# yum list | grep ssh
openssh.x86_64 5.3p1-84.1.el6 updates
openssh-server.x86_64 5.3p1-123.el6_9 updates
openssh-clients.x86_64 5.3p1-123.el6_9 updates
......
3)使用yum工具在線安裝server和clients軟件。
[root@Master001 ~]# yum install -y openssh-clients.x86_64
[root@Master001 ~]# yum install -y openssh-server.x86_64
安裝過程如圖2.44所示。
圖2.44
4)驗證ssh是否安裝成功
驗證方法一:輸入ssh命令,如果出現ssh命令的詳細信息表示安裝成功,如果出現" -bash: dddd: command not found"則表示安裝失敗。
[root@Master001 ~]# ssh
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-e escape_char] [-F configfile]
[-I pkcs11] [-i identity_file]
[-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[-W host:port] [-w local_tun[:remote_tun]]
[user@]hostname [command]
驗證方法二:使用rpm工具驗證。輸入rpm -qa | grep ssh命令查找已經安裝的ssh相關程序,如果出現server和clients表示安裝成功。
[root@Master001 ~]# rpm -qa | grep ssh
openssh-server-5.3p1-123.el6_9.x86_64
openssh-clients-5.3p1-123.el6_9.x86_64
libssh2-1.4.2-1.el6.x86_64
openssh-5.3p1-123.el6_9.x86_64
7 復制虛擬機
現在已經安裝好一台節點虛擬機的配置,其它四台節點虛擬機可以通過復制的方式來安裝,但在復制虛擬機之前需要先把虛擬機關機。
1. 關閉虛擬機(halt命令需要root權限)
[root@Master001 ~]# halt
2. 復制虛擬機
復制出另它四台虛擬機,並把復制的文件夾重新命名為Master001、Slave001、Slave002、Slave003方便管理,如圖2.45所示。
圖2.45
3. 打開虛擬機
1)通過“文件-->打開”選擇復制的虛擬機來打開虛擬機。為了方便管理需將虛擬名字修改為文件夾名稱,如圖2.46所示。
圖2.46
2)啟動虛擬機
單擊左邊虛擬機名稱,待右邊出現對應的界面后,單擊“開啟此虛擬機”按鈕打開虛擬機,如圖2.47所示。
圖2.47
3)選擇“我已復制該虛擬機”
每一台計算機都有一個唯一的MAC地址,虛擬機也是一樣。雖然它是虛擬狀態的,但它同樣有內存、處理器、硬盤和MAC地址等。虛擬機是通過復制出另一台一模一樣的虛擬機,包括MAC地址,所以需要在啟動副本虛擬機時選擇“我已復制該虛擬機”按鈕來告訴VMware平台“我這台虛擬機需要重新生成一個新的MAC地址”。如果選擇“我已移動該虛擬機”按鈕,VMware平台將不會為新虛擬機生成新的MAC地址,如圖2.48所示。
圖2.48
4. 修改虛擬配置
1)查看MAC地址
修改MAC地址之前需要到70-persistent-net.reles文件去查看最新的MAC地址,最后的一條為最新的MAC地址,並記住ATTR和NAME的值,如圖2.49所示。
[root@Master001 ~]# cat /etc/udev/rules.d/70-persistent-net.rules
圖2.49
2)修改MAC地址和IP地址
需要到profile文件中修改最新的MAC地址和網絡名稱,按之前約定的配置規則來修改IP地址,如圖2.50所示。
[root@Master001 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
改寫:
圖2.50
3)修改主機名
按之前約定的配置規則來修改主機名。
[root@Master001 ~]# vi /etc/sysconfig/network
改寫:
HOSTNAME=Slave003
4)使修改生效
如果只是修改profile文件,可以重啟網絡服務即可使修改生效。如果修改主機名,需要重啟虛擬機才能生效。
[root@Master001 ~]# reboot
5)驗證修改是否成功
如果登錄主機名變成修改的主機名表示主機名修改成功,如圖2.51所示。
圖2.51
輸入用戶名和密碼登錄后,輸入ifconfig命令,如果出現修改后的網絡名稱和IP地址表示靜態IP修改成功,如圖2.52所示。
圖2.52
5. 修改其它虛擬機
依次操作“5.2.3.2小節、復制虛擬機”修改其它幾台虛擬機,當所有虛擬機都修改完成后可以互相ping IP地址或主機名來驗證內網是否聯通。
[hadoop@Slave003 ~]$ ping 192.168.153.101
PING 192.168.153.101 (192.168.153.101) 56(84) bytes of data.
64 bytes from 192.168.153.101: icmp_seq=1 ttl=64 time=0.797 ms
64 bytes from 192.168.153.101: icmp_seq=2 ttl=64 time=0.774 ms
^C
--- 192.168.153.101 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1876ms
rtt min/avg/max/mdev = 0.774/0.785/0.797/0.030 ms
[hadoop@Slave003 ~]$ ping Master001
PING Master001 (192.168.153.101) 56(84) bytes of data.
64 bytes from Master001 (192.168.153.101): icmp_seq=1 ttl=64 time=1.69 ms
64 bytes from Master001 (192.168.153.101): icmp_seq=2 ttl=64 time=0.703 ms
^C
--- Master001 ping statistics ---
2 packets transmitted, 3 received, 0% packet loss, time 2391ms
rtt min/avg/max/mdev = 0.703/1.061/1.697/0.452 ms
2.5 設置SSH免密
安裝Hadoop之前,由於集群中大量主機進行分布式計算需要相互進行數據通信,服務器之間的連接需要通過ssh來進行,所以要安裝ssh服務。默認情況下通過ssh登錄服務器需要輸入用戶名和密碼進行連接,如果不配置免密碼登錄,每次啟動hadoop都要輸入密碼用來訪問每台機器的DataNode,因為Hadoop集群都有上百或者上千台機器,靠人力輸入密碼工程耗大,所以一般都會配置ssh的免密碼登錄。在hadoop集群中Master節點需要對所有節點進行訪問,了解每個節點的健康狀態,所以只需要對Master做免密設置,該集群是高可用集群,有兩個Master。這兩個Master都需要生成自己的私密,然后對所有節點(包括自己)傳輸密鑰,以Master001為例,Master002只需要執行Master001相同操作即可。具體操作如下。
1. 生成密鑰
密鑰就像是進入一扇門的鑰匙,生成密鑰就是生成這把鑰匙。由於要對hadoop用戶進行免密設置,所以需要切換到hadoop用戶,並回到該用戶的家目錄。
執行ssh-keygen -t rsa -P '' 命令后將在/home/hadoop/.ssh/目錄下以rsa方式生成id_rsa的密鑰。
[hadoop@Master001 ~]$ cd ~
[hadoop@Master001 ~]$ ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): (出現此段后按enter繼續)
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
2c:a9:91:36:4b:18:e6:09:60:f9:1a:22:23:3b:d6:af hadoop@Master001
The key's randomart image is:
+-------[ RSA 2048]-----+
|... |
|o. |
|. + |
|== = . o |
|+oB * o S |
|oo + = . |
|.. + |
| . |
| E. |
+-----------------------+
2. 對所有節點進行免密
將密鑰分發給集群中所有節點(包括自己),就免去輸入密碼去訪問其它虛擬機。執行ssh-copy-id命令后,會將id_rsa中的密鑰傳輸到目標虛擬機的/home/hadoop/.ssh/authorized_keys文件中。
[hadoop@Master001 ~]$ ssh-copy-id Master001
hadoop@master001's password:(輸入Master001密碼)
Now try logging into the machine, with "ssh 'Master001'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[hadoop@Master001 ~]$ ssh-copy-id Slave001
hadoop@slave001's password: (輸入Slave001密碼)
Now try logging into the machine, with "ssh 'Slave001'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[hadoop@Master001 ~]$ ssh-copy-id Slave002
hadoop@slave002's password: (輸入Slave002密碼)
Now try logging into the machine, with "ssh 'Slave002'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[hadoop@Master001 ~]$ ssh-copy-id Slave003
hadoop@slave003's password: (輸入Slave003密碼)
Now try logging into the machine, with "ssh 'Slave003'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
3. 驗證免密設置是否成功
驗證免密是免密設置最關鍵的一步,如果不輸入密碼就能訪問到目標虛擬機,表示免密設置成功。
[hadoop@Master001 ~]$ ssh Master001
Last login: Tue Dec 19 14:44:02 2017 from 192.168.153.1
[hadoop@Master001 ~]$ exit
logout
Connection to Master001 closed.
[hadoop@Master001 ~]$ ssh Slave001
Last login: Fri Dec 15 08:38:54 2017 from 192.168.153.1
[hadoop@Slave001 ~]$ exit
logout
Connection to Slave001 closed.
[hadoop@Master001 ~]$ ssh Slave002
Last login: Fri Dec 15 08:38:56 2017 from 192.168.153.1
[hadoop@Slave002 ~]$ exit
logout
Connection to Slave002 closed.
[hadoop@Master001 ~]$ ssh Slave003
Last login: Tue Dec 19 14:44:05 2017 from 192.168.153.1
[hadoop@Slave003 ~]$ exit
logout
Connection to Slave003 closed.
[hadoop@Master001 ~]$
2.6 啟動Hadoop集群
1. 在Master001中格式化namenode
在Master001中格式化namenode會生成~/software/hadoop-2.6.5/tmp目錄,該目錄中存放版本號和元數據等相關信息。
[hadoop@Master001 ~]$ hdfs namenode -format
2. 傳送tmp文件到其它節點
[hadoop@Master001 ~]$ cd ~/software/hadoop-2.6.5/
[hadoop@Master001 hadoop-2.6.5]$ ls
bin etc ... sbin share tmp
[hadoop@Master001 hadoop-2.6.5]$ scp -r tmp/ Slave001:~/software/hadoop-2.6.5/
[hadoop@Master001 hadoop-2.6.5]$ scp -r tmp/ Slave002:~/software/hadoop-2.6.5/
[hadoop@Master001 hadoop-2.6.5]$ scp -r tmp/ Slave003:~/software/hadoop-2.6.5/
3. 啟動hdfs
啟動hdfs只需要在Master001中執行start-dfs.sh 即可。它分別會在Master001啟動namenode進程,在Slave001、Slave002和Slave003中啟動datanode進程。
[hadoop@Master001 ~]$ start-dfs.sh
Starting namenodes on [Master001]
Master001: starting namenode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-namenode-Master001.out
Slave002: starting datanode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-datanode-Slave002.out
Slave003: starting datanode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-datanode-Slave003.out
Slave001: starting datanode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-datanode-Slave001.out
Starting journal nodes [Slave001 Slave002 Slave003]
Slave003: starting journalnode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-journalnode-Slave003.out
Slave001: starting journalnode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-journalnode-Slave001.out
Slave002: starting journalnode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-journalnode-Slave002.out
4. 啟動MapReduce
啟動MapReduce只需要在Master001中執行start-yarn.sh 即可。它分別會在Master001啟動resourcemanager進程,在Slave001、Slave002和Slave003中啟動nodemanager進程。
[hadoop@Master001 ~]$ start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/software/hadoop-2.6.5/logs/yarn-hadoop-resourcemanager-Master001.out
Slave003: starting nodemanager, logging to /home/hadoop/software/hadoop-2.6.5/logs/yarn-hadoop-nodemanager-Slave003.out
Slave001: starting nodemanager, logging to /home/hadoop/software/hadoop-2.6.5/logs/yarn-hadoop-nodemanager-Slave001.out
Slave002: starting nodemanager, logging to /home/hadoop/software/hadoop-2.6.5/logs/yarn-hadoop-nodemanager-Slave002.out
4. 驗證集群是否成功啟動
當集群啟動成功后每個節點中都有一些必須存在的進程。具體進程如下:
[hadoop@Master001 ~]$ jps
3766 Jps
3510 ResourceManager
3118 NameNode
[hadoop@Slave001 ~]$ jps
2610 NodeManager
2500 DateNode
2745 Jps
[hadoop@Slave002 ~]$ jps
2675 Jps
2549 NodeManager
2439 DateNode
2297 SencodaryManager
[hadoop@Slave003 ~]$ jps
2737 Jps
2611 NodeManager
2501 DateNode
