實驗工具:
? ? ? ? Ubuntu16.041臺主機(master:我的名字叫zhangjunj)+2臺虛擬機(slaves:slaveone 和 twoslave)
? ? ? ? hadoop:hadoop-2.7.3
? ? ? ? jdk:jdk1.8.0.121
安裝VisualBox(virtualbox-5.1_5.1.14)
? ? ? ? 安裝過程請自行百度,google
? ? ? ?這里我說一下自己碰到的問題:
? ? ? ? ? ?因為需要主機和虛擬機相互文件傳輸文件,所以需要共享設置,設置的方法我已在下面給出鏈接。其中博主說通過在/etc/fstab中加入 :
? ? ? gongxiang /mnt/shared vboxsf rw,gid=username,uid=username,auto 0 0
可以實現自動掛載。但是我實驗的時候,每次加入這段話,就進入Linux緊急模式,然后通過root權限刪除這句話,OK.所以大家懂的,如果需要創建文件,每次開機都得手動掛載。其中設置共享文件夾在這里。
網絡配置?
? ? ? 1. 3個IP必須在同一網段上,然后在VirsualBox中 設置-->網絡設置成 -->橋接模式,如下圖所示:
2. 對相應的slaves配置IP:
3.因為橋接模式,我是通過ccproxy代理上網的,將代理放在我另一臺電腦的windows上,至于如何代理,自行Google,百度,然后說一下我遇到的問題:代理的時候,別忘了關閉windows下的防火墻。
4. 在主機和2個slave上的 /etc/hosts 中配置ip 每個節點對應的映射:
5. 配置好之后相互ping一下,然后確認是否成功:
SSH無密碼登錄各節點:
?這個操作就是讓master(zhangjunj)登錄到各個slave上
?1. 先在終端進行 sudo apt-get install openssh-server (先在本機上免密碼):
? ? ?第二步: ssh localhost?
? ? 第三步: ssh-keygen -t rsa
? ? 第四步: cat ./id_rsa.pub >> ./authorized_keys
? ? 四步完成之后驗證一下,進行 ssh localhost,就可以免密碼登錄了
2. 然后在主機master(我的叫zhangjunj)終端上進行:
? ? ? ?scp ~/.ssh/id_rsa.pub slaveone@slaveone:/home/remoteFile
結果:
接著在slaveone上:
mkdir ~/.ssh # 如果不存在請先創建,已存在請忽略
cat ~/remoteFile/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub #用完可以刪掉
(以上 網絡配置和 無密碼登錄 大多出自于: http://www.powerxing.com/install-hadoop-cluster/)
然后: ssh slaveone@slaveone
然后我從中在過程中遇到的問題遺忘了,解決的方法是 :我把一個master(zhangjunj)和兩個slave都相互配了一遍。
配置PATH變量
在 /etc/profile 中 除了 SCALA_HOME 和 相對應的PATH外,其他的都應該存在:
然后:source /etc/profile
配置集群
在主機(master,我的叫zhangjunj)上這個需要修改 ..../.../hadoop/etc/hadoop中的5個配置文件:slaves、core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml.
1.在文件slaves中:
2. 文件core-site.xml改為下面配置:
3. 文件hdfs-site.xml,其中我的dfs.replication設置,因為我有2個slave,所以為2.
4. 文件mapred-site.xml:
5. 文件yarn-site.xml:
6. 在傳輸之前,如果之前跑過偽分布,建議先刪除之前的臨時文件,在hadoop根目錄下執行:
? ? ? ? ? ? ? ? ? ? ? sudo rm -rf tmp
? ? ? ? ? ? ? ? ? ? ? sudo rm -rf logs/*
7. 配置好之后,將配好的hadoop文件可以復制到2個slave上。然后將配好的hadoop分配到2個slave中. 我是通過共享文件夾傳輸的,因為scp傳輸總是拒絕,不知道什么原因,也沒有解決,如果哪個大神知道,敬請賜教。(但共享文件夾傳輸會有訪問權限的問題,需要修改hadoop根目錄下./hdfs/data的文件權限,我是通過 chmod 777 修改權限了)
8. 首先啟動需要現在Master(Zhangjunj)執行NameNode格式化,通過根目錄下進入bin目錄下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ./hdfs namenode -format?
9. 然后退出到根目錄,進入 sbin目錄下,進行:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ./start-dfs.shfenxiang
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ./start-yarn.sh
結果如圖:
10. 在 slave機子上 在進行 jps,如下圖所示:
?第9條和第10 條中任何一個進程沒有,都是出現錯誤,就得改吧。
我出現的問題是:Datanode一直啟動不起來,改了兩天,才發現是關于namesnode數據格式的問題,而我的又不一樣,我的是Datanode中沒有關于namenodeID,然后通過(轉自:http://www.lishiyu.cn/post/61.html),通過它的方法,將master主機中的hadoop根目錄下 /tmp臨時文件刪除,還有hadoop根目錄下的/hdfs/data和/hdfs/name目錄下文件都刪除,然后成功。
致此,hadoop環境搭建完成,其中,我還是有許多搞不懂的地方。慢慢來吧,腳踏實地,代碼的提升就是靠改錯提升的。期間痛苦,過后就興奮的像孔乙己了。
希望每個coding的程序猿們,大家都寫寫博客,雖不能完整描述,但可以把自己問題說出來,然后說出解決辦法。好的風氣起來,對你,對大家,都是很節省時間的。其中我很想說為什么這么做,但是,我真的能力有限。下面是我參考的博文,希望對大家有用:
我用的最多的是這個地址:這個
在此,謝謝博友們的分享。