Hadoop全分布式環境搭建
視頻演示:https://v.youku.com/v_show/id_XNTY4NDM3NDQ4.html
Hadoop的單擊版和偽分布式版環境都好搭建(具體方法參見:hadoop單擊版與偽分布式安裝方法),這個全分布式還真是費了我不少時間。下麵說說我的步驟:
(一)準備工作
1.準備3台裝有linux的機器,具有相同的用戶名(這個是必須的,我這裏都是liujiacai)
三台機器的ip與主機名
192.168.6.38 master 192.168.6.21 node1 192.168.6.24 node2
2.確保所有機器在一個局域網內,並且能夠相互ping同(如果不通把防火牆關閉試試)
3.配置ssh免密碼登錄
在master主機上輸入
ssh-keygen -t rsa
之後一直按回車鍵即可。
然後,在集群內分配密鑰
ssh-copy-id -i ~/.ssh/id_rsa.pub liujiacai@192.168.6.21 ssh-copy-id -i ~/.ssh/id_rsa.pub liujiacai@192.168.6.24
使用ssh-copy-id不僅可以將公鑰添加到authorized_keys中去,而且也設置了正確的權限(文件夾.ssh為700,authorized_keys為600)
ssh免密碼登錄原理可參考:https://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
這樣在master主機上ssh 192.168.6.21與ssh 192.168.6.24主機時應該就不用輸入密碼了
如果出現Agent admitted failure to sign using the key這個問題
解決方式 使用 ssh-add 指令將私鑰 加進來
ssh-add ~/.ssh/id_rsa
4.配置hosts文件
在master上配置好通過scp命令分發即可。
hosts文件配置內容如下:
127.0.0.1 localhost 192.168.6.38 master 192.168.6.21 node1 192.168.6.24 node2
(二)修改hadoop的配置文件
1.這裏我們需要修改5個文件:
conf/core-site.xml
<configuration> <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property>
<property> <name>fs.trash.interval</name> <value>1440</value> <description>Number of minutes between trash checkpoints. If zero, the trash feature is disabled. </description> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/liujiacai/hadoop/logs</value> </property> </configuration>
conf/hdfs-site.xml(與偽分布式相同即可)
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
conf/mapred-site.xml
<configuration> <property> <name>mapred.job.tracker</name> <value>master:9001</value> </property> </configuration>
masters
master
salves(如果有多台電腦ip地址累加即可)
node1 node2
這樣,hadoop到全分布式就配置完成了,下麵運行wordcount程序,運行方法與偽分布式相同,這裏不再贅述。
為了解hadoop係統的運行狀態,hadoop為我們提供了基於網頁的查看方式,非常方便。
1.查看Map/Reduce的運行狀態:https://localhost:50030
2.查看HDFS的運行狀態:https://localhost:50070
PS:
在全分布式中,各個機器的hadoop配置必須一致,我們可以在master機器上填寫好相關信息,然後通過ssh相關命令把hadoop文件夾分配到各個子結點上即可。
ssh傳送文件到相關命令:
1、從服務器上下載文件
scp username@serverip:/path/filename
例如scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下載到當前目錄
2、上傳本地文件到服務器
scp /path/filename username@serverip:/path
例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本機/var/www/目錄下的test.php文件上傳到192.168.0.101這台服務器上的/var/www/目錄中
3、從服務器下載整個目錄
scp -r username@serverip:/var/www/local_dir/
例如:scp -r root@192.168.0.101:/var/www/test /var/www/
4、上傳目錄到服務器
scp -r local_dir username@serverip:remote_dir
例如:scp -r test root@192.168.0.101:/var/www/ 把當前目錄下的test目錄上傳到服務器的/var/www/ 目錄con
最後更新:2017-04-03 22:31:03