eclipse 配置執行hadoop 2.7 程式範例參考步驟

來源:互聯網
上載者:User

標籤:ati   https   網站   inf   apache   ups   center   exception   檢查   

前提:你搭建好了hadoop 2.x的linux環境,並可以成功執行。還有就是window可以訪問到叢集。over

1、

hfds-site.xml 添加屬性:關閉叢集的許可權校正。windows的使用者一般與linux的不一樣,直接將它關閉掉好了。記住不是core-site.xml 重新啟動叢集
  <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>
2、hadoop-eclipse-plugin-2.7.0.jar將外掛程式放到plugins檔案夾下

3、複製linux master已安裝好的hadoop檔案夾到windows,然後eclipse 配置定位hadoop的檔案夾,重新啟動eclipse

4、開啟配置,hadoop選項,定位hadoop主資料夾。然後開啟mapreduce的view 設定配置屬性:其它額外屬性不要配置,username也不用改,此時能夠連結上了。


5、建立MRproject

6、建立wordcount類(自己複製即可)
     在src以下直接建立log4j.properties:
內容例如以下:主要是資訊列印:(你能夠將info改成debug,內容過多,改成info了)
log4j.rootLogger=info,stdout,R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=mapreduce_test.log
log4j.appender.R.MaxFileSize=1MB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.logger.com.codefutures=DEBUG

7、錯誤多多啊:
執行報:1)、 java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set.2) java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

解決方案1)人家提示HADOOP_HOME沒有設定,那就配置windows的環境變數。定位到hadoop檔案夾
執行報:
第一項不報了,第二項繼續:
2) java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
說不能定位,看來是HADOOP_HOME沒起作用,那就在main裡加入代碼,否則不報null:
System. setProperty("hadoop.home.dir" , "E:\\bigdata\\hadoop2" );執行報:
Could not locate executable E:\bigdata\hadoop2\bin\winutils.exe in the Hadoop binaries.
這次變了,檢查檔案夾,的確沒有winutils.exe,由於我們是從linux複製下來的
那就添加唄:從https://github.com/srccodes/hadoop-common-2.2.0-bin 下載bin檔案夾,替換到windows中hadoop裡的bin檔案夾
執行報:
第二項不報了。又來新的了:
Exception in thread "main"  org.apache.hadoop.mapreduce.lib.input.InvalidInputException : Input path does not exist: file:/input這個嘛,嘿嘿,參數設定成絕對的。hadoop1的時候不用,如今是第二代:
乖乖的設定參數為 hdfs://master:9000/input hdfs://master:9000/output
執行 繼續報錯:
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z說是本地庫的問題,那就改改原始碼,將本地庫的調用屏蔽掉:

拷貝原始碼檔案org.apache.hadoop.io.nativeio.NativeIO到項目中 。定位: 然後定位到570行(別hadoop2.2是。版本號碼不一樣如今2.7是607行還是直接搜尋 public  static  boolean access(String path, AccessRight desiredAccess)吧,),直接改動為return true;  不讓access了。


複製麻煩,那就建立類,定位包,然後複製類內容即可了。





繼續執行繼續報錯:

  org.apache.hadoop.security.AccessControlException: Permission denied: user=Administrator, access=WRITE, inode="/output/_temporary/0":root:supergroup:drwxr-xr-x許可權不夠,linux使用者是root,window預設使用者是Administrator  我都將window改成root了,看來這個改法沒起作用。另外我在core-site.xml也添加了不讓校正許可權啊。無論用。又一次設定參數:換一種方式,之前是在core-site.xml設定的許可權為false。改到hdfs-site.xml裡試試,假設不行改原始碼。

(所以我在第一步提示是在hdfs裡而不是core裡面改)

執行 繼續報,別報了,出結果了:

Input split bytes=100           Combine input records=179           Combine output records=131           Reduce input groups=131           Reduce shuffle bytes=1836           Reduce input records=131           Reduce output records=131
對於: WARN - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable這個警告沒事,執行在linux就不報了。

8、最後。嘗試將wordcount拆成子類的形式。將mapper移出來試試,由於有的時候多個類會提示報錯:刪除output檔案夾,又一次執行:OK。沒問題。正確出結果了。
9、歡迎訪問下hegou.me這個網站。怎麼樣,僅僅是在本機搭建個測試環境。工作中就不要在正式叢集裡跑了。還是乖乖測試好代碼先。over。





eclipse 配置執行hadoop 2.7 程式範例參考步驟

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.