剛開始團隊搞hadoop遇到問題不斷啃奴,現(xiàn)在把當(dāng)初的一些總結(jié)分享一下。
首先自然要從搭建平臺開始雄妥,說實話當(dāng)初自己搞得時候光弄這個平臺就搞了半天最蕾,也確實是個麻煩的事情,從剛開始的只會按照教程搭建到現(xiàn)在的已經(jīng)可以熟練的搭建一個平臺茎芭,說實話揖膜,沒有把這玩意搭個十幾二十遍誓沸,沒有把其中的每一個步驟都搞清楚梅桩,沒有深入研究過hadoop的運行機制,還真玩不轉(zhuǎn)拜隧。中間團隊搭建的時候真的是各種搭建各種問題宿百,下面就先總結(jié)以下部分趁仙。
一.首先搭建hadoop我分為這么幾個步驟:(所有問題都以hadoop0.20.2版本為例)
?1.安裝linux環(huán)境
2.創(chuàng)建hadoop用戶組和hadoop用戶(這步也可以省略,當(dāng)然是為了以后跑集群方便)?
3.安裝jdk?
4.安裝ssh服務(wù)?
5.安裝hadoop
其中垦页,我認(rèn)為容易卡住的幾個部分是第一雀费,第三,就是安裝linux和安裝jdk的時候痊焊,首先我們?yōu)榱艘院笈芗罕容^方便盏袄,就用的是雙系統(tǒng)裝Ubuntu,當(dāng)初裝這個雙系統(tǒng)搞得問題百出薄啥。 1.Ubuntu有個最簡單的wubi安裝辕羽,就是像安裝軟件一樣一鍵安裝,一鍵卸載垄惧,但是這種方法經(jīng)團隊驗證存在眾多缺陷刁愿,經(jīng)常死機,只適合體驗不適合開發(fā)更不適合跑集群到逊,所以還是建議大家安裝真正的雙系統(tǒng)铣口。
2.安裝雙系統(tǒng)的方法有很多,我就不一一介紹了觉壶,而且也介紹不完畢竟不是專門研究這個的脑题,我們集體用的是window7下的硬盤安裝,http://www.linuxidc.com/Linux/2013-10/91565.htm 這里是我們用的安裝教程铜靶。如果只是用來開發(fā)的話我建議還是只要虛擬機的好旭蠕,畢竟不會出那么多問題而且操作簡單,內(nèi)存2G以下的還是直接用虛擬機吧雙系統(tǒng)跑不動的旷坦。
3. 安裝好之后大家?guī)讉€常識要注意下掏熬,第一就是用戶組名,用戶名秒梅,主機名的區(qū)別旗芬,用戶組的是自己添加的,這里添加hadoop用戶組是為了以后跑集群更好的區(qū)分捆蜀,用戶名就像root用戶一樣是可以設(shè)置權(quán)限等的用戶疮丛,一個用戶組可以有許多個用戶。主機名是跑集群的時候用的辆它,主機名和IP地址是對應(yīng)的誊薄,不清楚自己ip地址的可以用ifconfig指令來查看自己的ip地址。
4.很多人對Ubuntu的依賴關(guān)系不明白什么意思锰茉,這么說吧典型的windows軟件A呢蔫,其需要輔助軟件B才能運行,所以安裝包就自帶B飒筑。如果N個軟件需要B片吊,那么你的電腦可能就有N個B軟件绽昏。典型的linux軟件A,其需要輔助軟件B俏脊,它不自帶全谤,而是公用系統(tǒng)已有的(如果沒有就要安裝)。如果N個軟件需要B爷贫,那么只需要一個就夠了认然,所以才要包管理來為你自動解決這些關(guān)系
二.然后說說安裝jdk的問題?
?1.首先我們用的是Ubuntu版本的Linux系統(tǒng),Ubuntu自帶會配置好jdk漫萄,沒有的話可以輸入指令 apt-get install sun-java6-jdk 來安裝季眷,默認(rèn)路徑是/etc/lib/jvm目錄下。不過這種方法獲得的jdk可能不是你想要的卷胯,你也可以自己去www.oracle.com官網(wǎng)下載jdk(java原先是sun公司的產(chǎn)品子刮,但是sun被oracle收購了),最新的是jdk8的窑睁,jdk6的好像已經(jīng)被歸檔了挺峡。但是你直接在搜索欄輸入你要的jdk版本比如jdk-6u5-linux-i586.bin就能找到。?
?2.這里大家可能會遇到后綴名的問題担钮,就是.rmp.bin和.bin的問題橱赠,這么說吧,例如jdk-1_5_0_16-linux-i586-rpm.bin 運行后會解壓出來一個rpm包箫津,可用rpm -iUh命令安裝狭姨。 jdk-1_5_0_16-linux-i586.bin 運行后會直接把所有文件解壓到當(dāng)前目錄的jdk子目錄下。 所以建議大家還是直接下載.bin的文件苏遥,記得jdk一定要是Linux下的才行饼拍。
3.在linux下安裝jdk的方法其實很簡單,首先解壓田炭,然后修改/etc/profile下的jdk路徑师抄,最后用指令 java -version檢驗安裝是否成功就行,其中注意的幾點教硫,首先解壓時會遇到權(quán)限問題叨吮,比如你解壓jdk-6u5-linux-i586.bin,先輸入chmod +x jdk-6u5-linux-i586.bin給所有用戶可執(zhí)行權(quán)限瞬矩,之后輸入指令./jdk-6u5-linux-i586.bin就可以解壓成功了茶鉴。?
?4.解壓的時候還有可能出現(xiàn)這樣的問題.:./jdk-6u30-linux-i586.bin: 113: ./install.sfx.3631: not found。Failed to extract the files. Please refer to the Troubleshooting section ofthe Installation Instructions on the download page for more information這是機器字長和jdk版本不匹配導(dǎo)致的景用,我的機子如果是64位的系統(tǒng)涵叮,然而選擇了i586的jdk。就會出現(xiàn)問題,可以在Ubuntu輸入指令 sudo uname -a來查看自Ubuntu的位數(shù)围肥。 三.關(guān)于安裝hadoop時候的一些問題 這個就有的說了剿干,很多人安裝過程中只是按照教程來安裝蜂怎,不知道其中的一些步驟是什么意思穆刻,甚至很多都是照搬,連主機名都沒有改杠步。安裝hadoop大概分為這么幾步:1.解壓hadoop安裝包2.配置conf文件夾的配置文件(這個僅在hadoop0.20.2版本下討論氢伟,之后版本文件的安裝目錄有修改)3.格式化HDFS4.啟動腳本。
5.用jps指令和瀏覽器查看進(jìn)程是否運行幽歼。 這里出問題的一般是在第二步和第五步朵锣,第二步很多人沒弄懂每個配置文件配置的東西,只是復(fù)制甸私,很容易出錯诚些,第五步經(jīng)常會少了幾個進(jìn)程。 (1)配置文件的問題:這個問題比較多很多人沒弄懂這些配置文件具體是干嘛的皇型,內(nèi)容比較多就不在這里詳細(xì)敘述诬烹,我們會另外弄一篇博客來介紹。 (2)安裝hadoop的時候先是解壓安裝包弃鸦,這里我們以hadoop0.20.2.tar.gz版本為例绞吁,解壓之后會出現(xiàn)一個hadoop0.20.2的文件夾,我們?yōu)榱朔奖阋院蠼K端打開唬格,把這個文件夾改名下家破,就改成hadoop,指令是 sudo mv hadoop0.20.2 hadoop (3)很多人在后面的安裝和運行中都會出現(xiàn)權(quán)限問題购岗,就像運行腳本start-all.sh的時候總會出現(xiàn)權(quán)限不夠的問題汰聋,必須要切換到root用戶才能運行,這里我們可以用這個指令 sudo chown -R 用戶名:用戶組名 文件夾名 這個指令的意思是把一個文件夾的所有者換成指定的用戶喊积,這樣我們就可以用當(dāng)前用戶來對hadoop文件夾進(jìn)行操作了马僻。 (4)之后就是進(jìn)入conf文件夾來配置hadoop的配置文件了,這里問題比較多注服,我們另出一篇博客來敘述韭邓。 (5)配置完配置文件之后就可以啟動進(jìn)程看看hadoop環(huán)境搭建好了沒有了。首先就是要先格式化溶弟,這個格式化的問題也讓我們團隊出了許多問題: 1.格式化的指令是 bin/hadoop namenode -format 這個指令是bin目錄下hadoop腳本中設(shè)置的女淑。 2.格式化是格式hdfs,所以最重要的是格式conf/hdfs-site.xml 配置文件中的dfs.name.dir和dfs.data.dir這兩個配置文件中設(shè)置的文件夾辜御,每格式化一次鸭你,都會生成一個namenodeID,存在dfs.data.dir中設(shè)置的文件夾中的current文件夾中的VERSION文件中。 3.有時候剛開機的時候格式化不成功,是因為那時候HDFS有個安全時間袱巨,這個是hdfs的安全機制決定的阁谆,這段時間是hdfs來驗證備份blocks是否達(dá)到閥值的時間,只有過了這個時間才能進(jìn)行格式化愉老。 (6)格式化之后就是啟動進(jìn)程了场绿,直接進(jìn)入bin目錄,輸入指令./start-all.sh啟動腳本就行嫉入,之后用jps指令焰盗,一般會出現(xiàn)5或6個進(jìn)程。
這時候一般會出現(xiàn)這么幾個問題:
1.輸入jps指令的時候顯示指令無效咒林,這是因為jps指令不是linux下的指令熬拒,是jdk目錄中的bin目錄下的指令,用來查看java進(jìn)程垫竞,無效的話可以去看看此目錄下有沒有jps指令腳本澎粟,沒有的話就代表你當(dāng)前安裝的jdk沒有這個指令,有時候有jdk指令但是依舊無效欢瞪,這時候你可以編輯 /etc/profile文件活烙,將jdk的bin目錄加到PATH這個環(huán)境變量里,再source /etc/profile以后就能直接執(zhí)行jps了引有。
2.Namenode進(jìn)程沒啟動瓣颅,一般是因為你沒有格式化,這時候一般再格式化一遍就可以了譬正。
3.Datenode沒有啟動宫补,這第一可能是因為多次格式化的問題,這是因為每次格式化的時候會重新創(chuàng)建一個NamenodeID曾我,而/tmp/dfs/data下包含了上次格式化的NamenodeID粉怕,hadoop namenode –format會清空namenode下的數(shù)據(jù),但是不能同時清空datanode的數(shù)據(jù)抒巢,所以格式化前贫贝,先將所有的tmp清空。第二可能是沒有網(wǎng)絡(luò)的原因?qū)е耫atanode沒有連接上蛉谜。