前一段時間,終於抽出了點時間,在本身本地機器上嘗試搭建徹底分佈式Hadoop集羣環境,也是藉助網絡上蝦皮的Hadoop開發指南系列書籍一步步搭建起來的,在這裏僅表明hadoop初學者向蝦皮表示衷心的感謝,他總結的系列文檔確實幫咱們掃除了不少hadoop環境搭建過程當中的障礙。html
本身不班門弄斧,就本身在搭建和調試過程當中遇到的問題給出方案,但願之後的夥伴少走一點彎路,下面就搭建過程當中遇到的幾個問題給出總結:java
說明:本次搭建hadoop集羣環境時,本人使用的是hadoop-2.2.0版本,目前Apache官網最新的版本是hadoop-2.6.2版本,服務器Linux環境是CentOS-6.4版本linux
一、首先說明下2.2版本的文件組成結構以下: apache
這個結構和1.0版本是存在差別的,不要爲找不到conf目錄而苦惱,都在etc目錄下windows
二、中間1臺Master和3臺Slaver結點環境的構建和配置請參考:http://www.cnblogs.com/xia520pi/archive/2012/04/08/2437875.html,這裏很詳細。服務器
三、環境搭建之後,經過./start-all.sh命令啓動集羣失敗,很大一個緣由就是服務器防火牆未關閉的緣由,這時能夠經過service iptables stop來關閉4臺機器網絡
上的防火牆。而後再重試啓動eclipse
四、在本地windows環境下經過eclipse鏈接hadoop,須要注意2點:分佈式
第一點:下載或者本身編譯hadoop-eclipse-plugin-1.0.0.jar文件,這一步很關鍵,是決定你本地eclipse可否鏈接hadoop的關鍵,這裏網絡上版本和方法oop
不少,我這裏提供:http://pan.baidu.com/s/1qW279Fm能夠下載。
第二點:在eclipse中指定本地hadoop的安裝目錄時,必定要指定到hadoop-core-1.*.jar所在的目錄,而不是像蝦皮文件中說的hadoop/下,主要緣由是
不一樣hadoop版本中jar文件存放路徑不一樣,以下:
請對照文章中第一張圖的文字註釋看,而後直接下一步就OK了。
五、按照蝦皮文檔運行第一個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了。
正如蝦皮博文所說的,這只是萬里長征的第一步,搭建環境很簡單,但也是最考驗人的地方,但願有用到的夥伴參考。