Java版本:jdk-6u31-linux-i586.binhtml
Linux系統:CentOS6.0java
Hadoop版本:hadoop-1.0.0.tar.gznode
Java版本:jdk-6u31-windows-i586.exelinux
Win系統:Windows 7 旗艦版ios
Eclipse軟件:eclipse-jee-indigo-SR1-win32.zip | eclipse-jee-helios-SR2-win32.zipapache
Hadoop軟件:hadoop-1.0.0.tar.gz編程
Hadoop Eclipse 插件:hadoop-eclipse-plugin-1.0.0.jarwindows
下載地址:http://download.csdn.net/detail/xia520pi/4113746api
備註:下面是網上收集的收集的"hadoop-eclipse-plugin-1.0.0.jar",除"版本2.0"是根據"V1.0"按照"常見問題FAQ_1"改的以外,剩餘的"V3.0"、"V4.0"和"V5.0"和"V2.0"同樣是別人已經弄好的,並且我已經都測試過,沒有任何問題,能夠放心使用。咱們這裏選擇第"V5.0"使用。記得在使用時從新命名爲"hadoop-eclipse-plugin-1.0.0.jar"。服務器
Hadoop是一個強大的並行框架,它容許任務在其分佈式集羣上並行處理。可是編寫、調試Hadoop程序都有很大難度。正由於如此,Hadoop的開發者開發出了Hadoop Eclipse插件,它在Hadoop的開發環境中嵌入了Eclipse,從而實現了開發環境的圖形化,下降了編程難度。在安裝插件,配置Hadoop的相關信息以後,若是用戶建立Hadoop程序,插件會自動導入Hadoop編程接口的JAR文件,這樣用戶就能夠在Eclipse的圖形化界面中編寫、調試、運行Hadoop程序(包括單機程序和分佈式程序),也能夠在其中查看本身程序的實時狀態、錯誤信息和運行結果,還能夠查看、管理HDFS以及文件。總地來講,Hadoop Eclipse插件安裝簡單,使用方便,功能強大,尤爲是在Hadoop編程方面,是Hadoop入門和Hadoop編程必不可少的工具。
爲了之後方便開發,咱們按照下面把開發中用到的軟件安裝在此目錄中,JDK安裝除外,我這裏把JDK安裝在C盤的默認安裝路徑下,下面是個人工做目錄:
系統磁盤(E:)
|---HadoopWorkPlat
|--- eclipse
|--- hadoop-1.0.0
|--- workplace
|---……
按照上面目錄把Eclipse和Hadoop解壓到"E:\HadoopWorkPlat"下面,並建立"workplace"做爲Eclipse的工做空間。
備註:你們能夠按照本身的狀況,不必定按照個人結構來設計。
通過兩天屢次探索,爲了使Eclipse能正常對Hadoop集羣的HDFS上的文件能進行修改和刪除,因此修改你工做時所用的Win7系統管理員名字,默認通常爲"Administrator",把它修改成"hadoop",此用戶名與Hadoop集羣普通用戶一致,你們應該記得咱們Hadoop集羣中全部的機器都有一個普通用戶——hadoop,並且Hadoop運行也是用這個用戶進行的。爲了避免至於爲權限苦惱,咱們能夠修改Win7上系統管理員的姓名,這樣就避免出現該用戶在Hadoop集羣上沒有權限等都疼問題,會致使在Eclipse中對Hadoop集羣的HDFS建立和刪除文件受影響。
你能夠作一下實驗,查看Master.Hadoop機器上"/usr/hadoop/logs"下面的日誌。發現權限不夠,不能進行"Write"操做,網上有幾種解決方案,可是對Hadoop1.0不起做用,詳情見"常見問題FAQ_2"。下面咱們進行修改管理員名字。
首先"右擊"桌面上圖標"個人電腦",選擇"管理",彈出界面以下:
接着選擇"本地用戶和組",展開"用戶",找到系統管理員"Administrator",修改其爲"hadoop",操做結果以下圖:
最後,把電腦進行"註銷"或者"重啓電腦",這樣才能使管理員才能用這個名字。
第一步:把咱們的"hadoop-eclipse-plugin-1.0.0.jar"放到Eclipse的目錄的"plugins"中,而後從新Eclipse便可生效。
系統磁盤(E:)
|---HadoopWorkPlat
|--- eclipse
|--- plugins
|--- hadoop-eclipse-plugin-1.0.0.jar
上面是個人"hadoop-eclipse-plugin"插件放置的地方。重啓Eclipse以下圖:
細心的你從上圖中左側"Project Explorer"下面發現"DFS Locations",說明Eclipse已經識別剛纔放入的Hadoop Eclipse插件了。
第二步:選擇"Window"菜單下的"Preference",而後彈出一個窗體,在窗體的左側,有一列選項,裏面會多出"Hadoop Map/Reduce"選項,點擊此選項,選擇Hadoop的安裝目錄(如個人Hadoop目錄:E:\HadoopWorkPlat\hadoop-1.0.0)。結果以下圖:
第三步:切換"Map/Reduce"工做目錄,有兩種方法:
1)選擇"Window"菜單下選擇"Open Perspective",彈出一個窗體,從中選擇"Map/Reduce"選項便可進行切換。
2)在Eclipse軟件的右上角,點擊圖標""中的"
",點擊"Other"選項,也能夠彈出上圖,從中選擇"Map/Reduce",而後點擊"OK"便可肯定。
切換到"Map/Reduce"工做目錄下的界面以下圖所示。
第四步:創建與Hadoop集羣的鏈接,在Eclipse軟件下面的"Map/Reduce Locations"進行右擊,彈出一個選項,選擇"New Hadoop Location",而後彈出一個窗體。
注意上圖中的紅色標註的地方,是須要咱們關注的地方。
Location Name:能夠任意其,標識一個"Map/Reduce Location"
Map/Reduce Master
Host:192.168.1.2(Master.Hadoop的IP地址)
Port:9001
DFS Master
Use M/R Master host:前面的勾上。(由於咱們的NameNode和JobTracker都在一個機器上。)
Port:9000
User name:hadoop(默認爲Win系統管理員名字,由於咱們以前改了因此這裏就變成了hadoop。)
備註:這裏面的Host、Port分別爲你在mapred-site.xml、core-site.xml中配置的地址及端口。不清楚的能夠參考"Hadoop集羣_第5期_Hadoop安裝配置_V1.0"進行查看。
接着點擊"Advanced parameters"從中找見"hadoop.tmp.dir",修改爲爲咱們Hadoop集羣中設置的地址,咱們的Hadoop集羣是"/usr/hadoop/tmp",這個參數在"core-site.xml"進行了配置。
點擊"finish"以後,會發現Eclipse軟件下面的"Map/Reduce Locations"出現一條信息,就是咱們剛纔創建的"Map/Reduce Location"。
第五步:查看HDFS文件系統,並嘗試創建文件夾和上傳文件。點擊Eclipse軟件左側的"DFS Locations"下面的"Win7ToHadoop",就會展現出HDFS上的文件結構。
右擊"Win7ToHadoopàuseràhadoop"能夠嘗試創建一個"文件夾--xiapi",而後右擊刷新就能查看咱們剛纔創建的文件夾。
建立完以後,並刷新,顯示結果以下:
用SecureCRT遠程登陸"Master.Hadoop"服務器,用下面命令查看是否已經創建一個"xiapi"的文件夾。
hadoop fs -ls
到此爲止,咱們的Hadoop Eclipse開發環境已經配置完畢,不盡興的同窗能夠上傳點本地文件到HDFS分佈式文件上,能夠互相對比意見文件是否已經上傳成功。
若是電腦上不只僅安裝的JDK6.0,那麼要肯定一下Eclipse的平臺的默認JDK是否6.0。從"Window"菜單下選擇"Preference",彈出一個窗體,從窗體的左側找見"Java",選擇"Installed JREs",而後添加JDK6.0。下面是個人默認選擇JRE。
下面是沒有添加以前的設置以下:
下面是添加完JDK6.0以後結果以下:
接着設置Complier。
從"File"菜單,選擇"Other",找到"Map/Reduce Project",而後選擇它。
接着,填寫MapReduce工程的名字爲"WordCountProject",點擊"finish"完成。
目前爲止咱們已經成功建立了MapReduce項目,咱們發如今Eclipse軟件的左側多了咱們的剛纔創建的項目。
選擇"WordCountProject"工程,右擊彈出菜單,而後選擇"New",接着選擇"Class",而後填寫以下信息:
由於咱們直接用Hadoop1.0.0自帶的WordCount程序,因此報名須要和代碼中的一致爲"org.apache.hadoop.examples",類名也必須一致爲"WordCount"。這個代碼放在以下的結構中。
hadoop-1.0.0
|---src
|---examples
|---org
|---apache
|---hadoop
|---examples
從上面目錄中找見"WordCount.java"文件,用記事本打開,而後把代碼複製到剛纔創建的java文件中。固然源碼有些變更,變更的紅色已經標記出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
|
備註:若是不加"conf.set("mapred.job.tracker", "192.168.1.2:9001");",將提示你的權限不夠,其實照成這樣的緣由是剛纔設置的"Map/Reduce Location"其中的配置不是徹底起做用,而是在本地的磁盤上創建了文件,並嘗試運行,顯然是不行的。咱們要讓Eclipse提交做業到Hadoop集羣上,因此咱們這裏手動添加Job運行地址。詳細參考"常見問題FAQ_3"。
選擇"Wordcount.java"程序,右擊一次按照"Run ASàRun on Hadoop"運行。而後會彈出以下圖,按照下圖進行操做。
運行結果以下:
從上圖中咱們得知咱們的程序已經運行成功了。
查看Eclipse軟件左側,右擊"DFS LocationsàWin7ToHadoopàuseràhadoop",點擊刷新按鈕"Refresh",咱們剛纔出現的文件夾"newoutput"會出現。記得"newoutput"文件夾是運行程序時自動建立的,若是已經存在相同的的文件夾,要麼程序換個新的輸出文件夾,要麼刪除HDFS上的那個重名文件夾,否則會出錯。
打開"newoutput"文件夾,打開"part-r-00000"文件,能夠看見執行後的結果。
到此爲止,Eclipse開發環境設置已經完畢,而且成功運行Wordcount程序,下一步咱們真正開始Hadoop之旅。
下面以網上找的"hadoop-0.20.203.0"爲例,我在使用"V1.0"時也出現這樣的狀況,緣由就是那個"hadoop-eclipse-plugin-1.0.0_V1.0.jar",是直接把源碼編譯而成,故而缺乏相應的Jar包。具體狀況以下
詳細地址:http://blog.csdn.net/chengfei112233/article/details/7252404
在我實踐嘗試中,發現hadoop-0.20.203.0版本的該包若是直接複製到eclipse的插件目錄中,在鏈接DFS時會出現錯誤,提示信息爲: "error: failure to login"。
彈出的錯誤提示框內容爲"An internal error occurred during: "Connecting to DFS hadoop".org/apache/commons/configuration/Configuration". 通過察看Eclipse的log,發現是缺乏jar包致使的。進一步查找資料後,發現直接複製hadoop-eclipse-plugin-0.20.203.0.jar,該包中lib目錄下缺乏了jar包。
通過網上資料蒐集,此處給出正確的安裝方法:
首先要對hadoop-eclipse-plugin-0.20.203.0.jar進行修改。用歸檔管理器打開該包,發現只有commons-cli-1.2.jar 和hadoop-core.jar兩個包。將hadoop/lib目錄下的:
commons-configuration-1.6.jar ,
commons-httpclient-3.0.1.jar ,
commons-lang-2.4.jar ,
jackson-core-asl-1.0.1.jar
jackson-mapper-asl-1.0.1.jar
一共5個包複製到hadoop-eclipse-plugin-0.20.203.0.jar的lib目錄下,以下圖:
而後,修改該包META-INF目錄下的MANIFEST.MF,將classpath修改成一下內容:
Bundle-ClassPath:classes/,lib/hadoop-core.jar,lib/commons-cli-1.2.jar,lib/commons-httpclient-3.0.1.jar,lib/jackson-core-asl-1.0.1.jar,lib/jackson-mapper-asl-1.0.1.jar,lib/commons-configuration-1.6.jar,lib/commons-lang-2.4.jar
這樣就完成了對hadoop-eclipse-plugin-0.20.203.0.jar的修改。
最後,將hadoop-eclipse-plugin-0.20.203.0.jar複製到Eclipse的plugins目錄下。
備註:上面的操做對"hadoop-1.0.0"同樣適用。
網上試了不少,有提到"hadoop fs -chmod 777 /user/hadoop ",有提到"dfs.permissions 的配置項,將value值改成 false",有提到"hadoop.job.ugi",可是統統沒有效果。
參考文獻:
地址1:http://www.cnblogs.com/acmy/archive/2011/10/28/2227901.html
地址2:http://sunjun041640.blog.163.com/blog/static/25626832201061751825292/
錯誤類型:org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security .AccessControlException: Permission denied: user=*********, access=WRITE, inode="hadoop":hadoop:supergroup:rwxr-xr-x
解決方案:
個人解決方案直接把系統管理員的名字改爲你的Hadoop集羣運行hadoop的那個用戶。
參考文獻:https://issues.apache.org/jira/browse/HADOOP-8089
錯誤信息以下:
ERROR security.UserGroupInformation: PriviledgedActionException as: hadoop cause:java.io.IOException Failed to set permissions of path:\usr\hadoop\tmp\mapred\staging\hadoop753422487\.staging to 0700 Exception in thread "main" java.io.IOException: Failed to set permissions of path: \usr\hadoop\tmp \mapred\staging\hadoop753422487\.staging to 0700
解決方法:
Configuration conf = new Configuration();
conf.set("mapred.job.tracker", "[server]:9001");
"[server]:9001"中的"[server]"爲Hadoop集羣Master的IP地址。
參考文獻:http://blog.csdn.net/azhao_dn/article/details/6921398
錯誤信息以下:
job Submission failed with exception 'java.io.IOException(The ownership/permissions on the staging directory /tmp/hadoop-hadoop-user1/mapred/staging/hadoop-user1/.staging is not as expected. It is owned by hadoop-user1 and permissions are rwxrwxrwx. The directory must be owned by the submitter hadoop-user1 or by hadoop-user1 and permissions must be rwx------)
修改權限:
這樣就能解決問題。