Hadoop在eclipse中的配置


在安裝完linux下的hadoop框架,實現完所現有的wordCount程序,能夠完美輸出結果之后,我們開始來搭建在window下的eclipse的環境,進行相關程序的編寫。

在網上有很多未編譯版本,需要手動進行相關編輯,所以特地找了一個已經編譯完好的插件

eclipse版本:SR2-kepler

java版本:1.8.101

Hadoop 版本:hadoop2.5.2.tar.gz

需要hadoop的插件:eclipse-hadoop-2.5.2-plugin        http://pan.baidu.com/s/1qYMtefq

安裝步驟:

 

一、首先將hadoop-2.5.2.tar.gz解壓,作為Hadoop的安裝目錄。

     設置Hadoop的環境變量。在環境變量中,添加HADOOP_HOME=安裝目錄,然后在PATH的變量中增加%HADOOP_HOME%\bin

 

二、修改電腦中hosts文件。

  進入到c:/window/system32/drive/etc 文件夾中,可以找到hosts文件。在hosts文件中添加相關的IP設置(主要是虛擬機的IP地址,進行相關的配置,可以將文件進行互相傳遞)

 

三、講下載的hadoop插件復制到eclipse安裝目錄中的plugin文件夾中,重啟eclipse,然后打開window->preferences中可以看到增加了Hadoop mapreduced的選項。結果如圖所示:

點擊該選項后,出現右側內容,添加hadoop的安裝路徑。

 

四、進行hadoop在eclipse中的相關端口配置。

點擊window->open perspective->other中,出現如下內容:

點擊Map/Reduce,之后eclipse中的右側邊欄中,會出現DFS locations的選擇,然后左鍵,之后在下方的控制欄中會出現一個Map/Reduced location的控制窗口,點擊,在控制窗口下方右鍵,創建new hadoop location,

 

出現如圖所示的編輯配置,然后填入你在hadoop中的配置的IP地址和端口號。

直到現在,所有的有關的eclipse的配置已經完成。如果在DFS location 中顯示了原有Hadoop集群上的文件個數,那么說明連接是成功,如果沒有出現,說明連接是失敗的,需要進行相關的查詢。糾正錯誤。

下面需要進入測試階段。

①、創建新的項目

 

②、選擇Map/Reduce Project項目,進行相關的項目創建。

測試WordCount程序,源代碼從Hadoop-2.5.2-src文件夾中進行復制。

③、配置運行環境:

 

以上配置是為了體現文件中的輸入和輸出。而且,文件目錄必須不存在,重新建立。

在工程創建過程中,不能導入包。手動導入,后續需要進行改進。

 成功表現:

控制窗口中:

右側邊欄中體現的文件:

出現錯誤:

1、Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable D:\Program Files\Java\hadoop-2.5.2\bin\winutils.exe in the Hadoop binaries.

 解決辦法:下載 hadoop-common-2.2.0-bin-master     http://pan.baidu.com/s/1kVNjmAz    將文件解壓,然后將winutils.exe,Hadoop.dill文件復制到Hadoop的安裝目錄下\bin文件夾中。進行覆蓋。

 

2、Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1019)) - session.id is deprecated. Instead, use dfs.metrics.session-id
 INFO [main] jvm.JvmMetrics (JvmMetrics.java:init(76)) - Initializing JVM Metrics with processName=JobTracker, sessionId=

解決辦法:和在Linux下解決問題的方法相同。

解壓:hadoop-native-64-2.5.2   http://pan.baidu.com/s/1o7IJkMm    文件,覆蓋lib\native文件。

 

3、exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)

解決辦法:下載對應hadoop源代碼,hadoop-2.5.5-src.tar.gz解壓,hadoop-2.5.2-src\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\io\nativeio下NativeIO.java 復制到對應的Eclipse的project,然后修改public static boolean access(String path, AccessRight desiredAccess)方法返回值為return true

 

4、hadoop讀取的文件格式如果是GBK,且內容含有中文,那么map/reduce程序運行出錯, 

解決辦法:將文件格式改成utf-8,問題解決。

 

5,創建log4j.properties文件 
在src目錄下創建log4j.properties文件,內容如下: 
log4j.rootLogger=debug,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 

 

6. in thread "main" java.net.ConnectException: Call From PC/192.168.92.1 to master:8020 failed on connection exception: java.net.ConnectException: Connection refused: no further information; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:783)
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:730)
at org.apache.hadoop.ipc.Client.call(Client.java:1415)
at org.apache.hadoop.ipc.Client.call(Client.java:1364)

問題出現原因:端口配置無法進行訪問和連接。之后開始配置hadoop的環境配置文件。但本人配置時還修改了如下內容(由於你的環境和我的可能不一致,可以在后面出現相關問題后再進行修改): 
a.在master節點上(ubuntu-V01)修改hdfs-site.xml加上以下內容 
<property> 
<name>dfs.permissions</name> 
<value>false</value> 
</property> 

旨在取消權限檢查,原因是為了解決我在windows機器上配置eclipse連接hadoop服務器時,配置map/reduce連接后報以下錯誤,org.apache.hadoop.security.AccessControlException: Permission denied: 


b.同樣在master節點上(ubuntu-V01)修改hdfs-site.xml加上以下內容 
<property> 
<name>dfs.web.ugi</name> 
<value>jack,supergroup</value> 
</property> 

原因是運行時,報如下錯誤 WARN org.apache.hadoop.security.ShellBasedUnixGroupsMapping: got exception trying to get groups for user jack 
應該是我的windows的用戶名為jack,無訪問權限 
更多權限配置可參看官方說明文檔: 
HDFS權限管理用戶指南http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_permissions_guide.html 

解決辦法:配置完成之后,發現仍然有這樣的問題。后來發現,是自己eclipse中運行配置有問題。主要測試步驟中的③中的網址配置錯誤。應該是master:9000訪問端口。將其正確配置后,已經可以進行相關編程,錯誤解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM