3.4.1 系統規劃
由於條件的限制,不能夠獲得更多的機器來進行模擬,所以在模擬完全分佈式計算中,只能使用三臺機器搭建環境。一臺機器作爲Namenode和JobTracker,另外兩臺機器作爲運行任務的Datanode節點。如下表3-1所示:
表3-1 分佈式機器節點說明
Node |
User |
IP adress |
備註 |
Namenode |
administrator1 |
192.168.0.1 |
Namenode和Jobtracker使用同一臺機器 |
Datanode |
administrator2 |
192.168.0.2 |
|
Datanode |
administrator3 |
192.168.0.3 |
3.4.2 修改hosts
$ sudo gedit /etc/hosts //將所使用到的三臺主機及其名稱添加到該文件中.
圖3-1 修改hosts
3.4.3 配置ssh
//在Namenode節點上運行命令,使得Namenode能夠無密碼訪問Datanode
$ scp [email protected]:/home/administrator/.ssh/id_dsa.pub 2_dsa.pub
$ cat 2_dsa.pub >> /home/administrator/authorized_keys
$ scp [email protected]:/home/administrator/.ssh/id_dsa.pub 3_dsa.pub
$ cat 3_dsa.pub >> /home/administrator/authorized_keys
//在Datanode節點上運行命令,使得Datanode能夠無密碼訪問Namenode
$ scp [email protected]:/home/administrator/.ssh/id_dsa.pub 1_dsa.pub
$ cat 1_dsa.pub >> /home/administrator/authorized_keys
//在Datanode節點上運行命令,使得Datanode之間能夠無密碼訪問
//在Datanode1(192.168.0.2)上
$ scp [email protected]:/home/administrator/.ssh/id_dsa.pub 3_dsa.pub
$ cat 3_dsa.pub >> /home/administrator/authorized_keys
//在Datanode2(192.168.0.3)上
$ scp [email protected]:/home/administrator/.ssh/id_dsa.pub 2_dsa.pub
$ cat 2_dsa.pub >> /home/administrator/authorized_keys
3.4.4 配置conf/masters、conf/slaves
在所有節點上都要配置:
1) 在$HADOOP_HOME/conf/masters 中加入 NameNode IP、Jobtracker IP,本論文中即添加一個IP即可,如下圖3-2所示:
圖3-2 配置masters
2) 在$HADOOP_HOME/conf/slaves 中加入 slaveIPs,本論文中即添加兩個節點的IP地址即可,如下圖3-3所示:
圖3-3 配置slaves
3.4.5 配置三個文件
1) 配置$HADOOP_HOME/conf/core-site.xml
圖3-4 配置core-site.xml
原來文件是空的,只要在該文件中添加圖3-4中標示部分的內容即可。如沒有配置 hadoop.tmp.dir 參數,此時系統默認的臨時目錄爲:/tmp/hadoop/hadoop。而這個目錄在每次重啓後都會被幹掉,必須重新執行format才行,否則會出錯 。
2) 配置$HADOOP_HOME/conf/hdfs-site.xml,只要在該文件中添加圖3-5中標示部分的內容即可。
圖3-5 配置hdfs-site.xml
3) 配置$HADOOP_HOME/conf/mapred-site.xml,在原文件中添加圖3-6中標示的內容即可。
圖3-6 配置mapred-site.xml
3.4.6 啓動Hadoop系統
1) 在Namenode上格式化分佈式系統
$ bin/hadoop namenode –format //在Namenode上格式化系統
圖3-7 格式化Namenode
2) 在Namenode上啓動HDFS
$ bin/start-dfs.sh //該命令將訪問NameNode 上的 conf/slaves 文件,在本機上啓動 NameNode,本機JobTracker 上啓動 SecondaryNameNode,在conf/slaves文件裏的所有主機上啓動DataNode
圖3-8 啓動HDFS
3) 在JobTracker上啓動Map-Reduce
$ bin/start-mapred.sh //該命令將訪問 JobTracker 上的 conf/slaves 文件,在本機上啓動Jobtracker, 在 conf/slaves 文件裏的所有主機上啓動TaskTracker,本論文中的JobTracker和NameNode是同一個節點,所以在NameNode上啓動 MapReduce。
圖3-9 啓動MapReduce
3.4.7 運行簡單例子
1) 在/home/administrator文件夾下面創建臨時文件test_file.txt,輸入一些單詞或語句。將本地文件test_file.txt文件複製到hdfs文件系統test-in文件夾中
$ bin/hadoop dfs -copyFromLocal /home/administrator/test_file.txt /test-in
圖3-10 複製文件
$ bin/hadoop dfs –ls test-in//查看文件系統test-in文件夾中文件是否上傳成功
圖3-11 查看文件
2) 執行簡單例子
$ bin/hadoop jar hadoop-mapred-examples-0.21.0.jar wordcount test-in test-out
圖3-12 執行任務
3) 查看結果
$ bin/hadoop dfs –cat test-out/part-r-00000
圖3-13 查看結果
3.4.8 關閉hadoop進程
1) 關閉Map-Reduce,在JobTracker上
圖3-14 關閉Map-Reduce
2) 關閉HDFS,在NameNode上
圖3-15 關閉HDFS