前一段時間,終於抽出了點時間,在自己本地機器上嘗試搭建完全分布式Hadoop集群環境,也是借助網絡上蝦皮的Hadoop開發指南系列書籍一步步搭建起來的,在這里僅代表hadoop初學者向蝦皮表示衷心的感謝,他總結的系列文檔確實幫我們掃除了很多hadoop環境搭建過程中的障礙。
自己不班門弄斧,就自己在搭建和調試過程中遇到的問題給出方案,希望以后的伙伴少走一點彎路,下面就搭建過程中遇到的幾個問題給出總結:
說明:本次搭建hadoop集群環境時,本人使用的是hadoop-2.2.0版本,目前Apache官網最新的版本是hadoop-2.6.2版本,服務器Linux環境是CentOS-6.4版本
1、首先說明下2.2版本的文件組成結構如下:
這個結構和1.0版本是存在差異的,不要為找不到conf目錄而苦惱,都在etc目錄下
2、中間1台Master和3台Slaver結點環境的構建和配置請參考:http://www.cnblogs.com/xia520pi/archive/2012/04/08/2437875.html,這里很詳細。
3、環境搭建以后,通過./start-all.sh命令啟動集群失敗,很大一個原因就是服務器防火牆未關閉的原因,這時可以通過service iptables stop來關閉4台機器
上的防火牆。然后再重試啟動
4、在本地windows環境下通過eclipse連接hadoop,需要注意2點:
第一點:下載或者自己編譯hadoop-eclipse-plugin-1.0.0.jar文件,這一步很關鍵,是決定你本地eclipse能否連接hadoop的關鍵,這里網絡上版本和方法
很多,我這里提供:http://pan.baidu.com/s/1qW279Fm可以下載。
第二點:在eclipse中指定本地hadoop的安裝目錄時,一定要指定到hadoop-core-1.*.jar所在的目錄,而不是像蝦皮文件中說的hadoop/下,主要原因是
不同hadoop版本中jar文件存放路徑不同,如下:
請對照文章中第一張圖的文字注釋看,然后直接下一步就OK了。
5、按照蝦皮文檔運行第一個WordCount實例的時候,很多人在服務器上是成功的,但是在本地卻一直在拋classNotFound的錯誤,我當初也很郁悶,
我本地的jar文件和類文件都在啊,為什么會找不到呢?
關於這個問題,網絡上很多說法,但是都怎么靠譜,我找了很多資料,最后是通過下面的方式解決的,
下面這個是報錯的時候我在main方法中的寫法:
注意這里的寫法,實際指定的是hdfs的主機地址,但是這里就是找不到類,改為下面的寫法就OK了,至少不報classNotFound的錯誤了,
然后,可能有的伙伴又會遇到Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-4954228\.staging to 0700這樣的錯誤,這個錯誤很簡單,也很清楚,就是說沒有操作文件的權限,這個是
windows環境下會出的一個問題,在linux上是不存在的,解決辦法就是:修改/hadoop-1.0.2/src/core/org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue方法,直接將該方法體注釋掉,然后重新編譯jar包,導入項目即可,這個地址可以直接下載到編譯好的jar文件:http://download.csdn.net/detail/java2000_wl/4326323,
完成上面的所有步驟以后,應該就OK了。
正如蝦皮博文所說的,這只是萬里長征的第一步,搭建環境很簡單,但也是最考驗人的地方,希望有用到的伙伴參考。