win32下開發hadoop

轉載自:http://my.oschina.net/muou/blog/408543【木偶:Windows下使用Hadoop2.6.0-ecli­p­s­e­-­p­­lugin插件】java

對於一些細節地方,我進行了補充。node

一.簡介git

Hadoop2.x以後沒有Eclipse插件工具,咱們就不能在Eclipse上調試代碼,咱們要把寫好的java代碼的MapReduce打包成jar而後在Linux上運行,因此這種不方便咱們調試代碼,因此咱們本身編譯一個Eclipse插件,方便咱們在咱們本地上調試,通過hadoop1.x的發展,編譯hadoop2.x版本的eclipse插件比以前簡單多了。接下來咱們開始編譯Hadoop-eclipse-plugin插件,並在Eclipse開發Hadoop。github

二.軟件安裝並配置apache

1.JDK配置vim

1) 安裝jdk服務器

2) 配置環境變量。JAVA_HOME、CLASSPATH、PATH等設置,這裏就很少介紹,網上不少資料網絡

2.Eclipseapp

1) 下載eclipse-jee-mars-1-win32.zipeclipse

2) 解壓到本地磁盤,如圖所示:

image

注:

一、eclipse必定要下載jee版,不然後面在eclipse中安裝插件後,左邊不會顯示DFS Locations。或者你暫不不用管這個,等出現這個問題,再從新下個eclipse也行。

二、eclipse的解壓路徑中不要包含空格,不然後面用ant編譯eclipse插件時,會報相似下面的錯誤:can not found D:\Program\eclipse\plugins。這是由於我把eclipse解壓到了D:\Program Files\裏,但ant編譯插件時,應該是把空格當作了分隔符,因而要求找到D:\Program\eclipse\plugins,但實際上plugins目錄應該是D:\Program Files\eclipse\plugins。

3.Ant

1)下載apache-ant-1.9.6-bin.zip

2)解壓到一個盤,如圖所示:

image

3)環境變量的配置

新建ANT_HOME=D:\hadoop\apache-ant-1.9.6

在PATH後面加;%ANT_HOME%\bin

4)cmd 測試一下是否配置正確

image

4.Hadoop

1) 下載hadoop包

hadoop-2.6.0.tar.gz

解壓到本地磁盤,如圖所示:

image

下載hadoop2x-eclipse-plugin源代碼

1)目前hadoop2的eclipse-plugins源代碼由github脫管,下載地址是https://github.com/­w­i­nghc/hadoop2x-eclipse-plugin,而後在右側的Download ZIP鏈接點擊下載,如圖所示:

image

2)下載完後,將其解壓到本地磁盤,如圖所示:

image

三.編譯hadoop-eclipse-plugin插件

1) cmd切換到hadoop2x-eclipse-plugin-master\src\contrib\eclipse-plugin目錄,如圖所示:

image

2) 執行ant jar編譯生成插件,以下:

ant jar -Dversion=2.6.0 -Declipse.home= D:\hadoop\eclipse -Dhadoop.home= D:\hadoop\hadoop-2.6.0

注:

一、使用ant jar編譯生成插件時,可能會卡在ivy-resolve-common,網上的說法不少,好比網絡不行等等,個人解決方法是(已驗證成功):修改eclipse-plugin\build.xml文件,大概68行的位置(直接ctrl+F,查找compile便可),以下:

image

做如上修改是由於ivy-resolve-common下載下來的jar包貌似沒有什麼用,直接去掉這個依賴關係。

二、編譯過程當中會出現警告,這個沒有影響,不用在乎。

3) 編譯生成的hadoop-eclipse-plugin-2.6.0.jar在新建的build目錄下,以下:

image

四.Eclipse配置hadoop-eclipse-plugin插件

1) 我已經把能夠用的插件包上傳了,地址以下:

http://download.csdn.net/detail/tingxuelouwq/9389652

注意,個人環境win7 32位,若是你的是64位,請自行編譯,或者上網搜。

把hadoop-eclipse-plugin-2.6.0.jar拷貝到D:\hadoop\eclipse\plugins\目錄下,重啓Eclipse,而後能夠看到DFS Locations,這表示插件安裝成功。如圖所示:

image

2) 打開Window-->Preferens,能夠看到Hadoop Map/Reduc選項,而後指定hadoop-2.6.0的安裝路徑,如圖所示:

image

3) 配置Map/ReduceLocations

一、點擊Window-->Show View -->MapReduce Tools,點擊Map/ReduceLocation,如圖:

image

二、點擊Map/ReduceLocation選項卡,點擊右邊小象圖標,打開Hadoop Location配置窗口進行配置,如圖:

image

上圖中幾個參數的說明:

Host:即master(主節點)的ip地址

Map/Reduce中的Port:即mapred-site.xml文件中配置的mapreduce.jobtracker.address的端口號,以下:

image

DFS中的Port:即core-site.xml文件中配置的fs.default.name的端口號,以下:

image

4) 查看是否鏈接成功。

配置好以後,點擊DFS Locations的子菜單,能夠看到目前咱們hdfs上已有的文件,以下:

image

注:可能一開始點擊子菜單時,會出現listening,這是由於eclipse正在鏈接遠程的hadoop集羣,要等待一下才能看到。

五.新建MapReduce項目並運行

1) 右擊New->Map/Reduce Project,項目名稱爲WordCount

 

2) 新建TestWordCount.java,而後在Hadoop的share目錄下找到wordcount的案例,拷貝到TestWordCount.java中,以下:

注:wordcount案例的路徑爲:

D:\hadoop\hadoop-2.6.0\share\hadoop\mapreduce\sources\hadoop-mapreduce-examples-2.6.0-sources.jar

將hadoop-mapreduce-examples-2.6.0-sources.jar解壓後,在\org\apache\hadoop\examples能夠找到WordCount.java文件。

 

3) 在hdfs建立一個input目錄(輸出目錄能夠不用建立,運行MR時會自動建立),並上傳一個file01.txt文件(隨便寫幾個單詞),整個過程以下:

//新建input文件夾

[wangqi@node001 ~]$ hdfs dfs -mkdir input

[wangqi@node001 ~]$ hdfs dfs -ls -R /

drwxr-xr-x - wangqi supergroup 0 2016-01-05 10:07 /user

drwxr-xr-x - wangqi supergroup 0 2016-01-05 10:08 /user/wangqi

drwxr-xr-x - wangqi supergroup 0 2016-01-05 10:08 /user/wangqi/input

//新建file01.txt文件,並寫幾個單詞

[wangqi@node001 ~]$ touch file01.txt

[wangqi@node001 ~]$ vim file01.txt

hello world. this is my first hadoop program in eclipse.

I love the world, and I love hadoop.

//將file01.txt文件上傳到input文件夾下

[wangqi@node001 ~]$ hdfs dfs -put file01.txt input/

[wangqi@node001 ~]$ hdfs dfs -ls -R /

drwxr-xr-x - wangqi supergroup 0 2016-01-05 10:07 /user

drwxr-xr-x - wangqi supergroup 0 2016-01-05 10:08 /user/wangqi

drwxr-xr-x - wangqi supergroup 0 2016-01-05 10:10 /user/wangqi/input

-rw-r--r-- 2 wangqi supergroup 94 2016-01-05 10:10 /user/wangqi/input/file01.txt

注:由於如今eclipse已經連上了hadoop集羣,所以你也能夠在elicpse中直接建立這些文件及文件夾。

 

4) 在TestWordCount.java上右鍵-Run As-Run Configurations,設置輸入和輸出目錄路徑,如圖所示:

image

注:不要忘了寫端口號,這裏的端口號就是core-site.xml中fs.default.name的端口號。

 

5) 運行maprecude項目前的一些配置。

在運行TestWordCount.java以前,咱們須要作一些配置,不然運行時出各類錯誤。

(1)配置log4j。

配置log4j的好處是能夠從日誌中看到出了哪些問題。只須要在src目錄下寫一個log4j.properties便可,以下:

image

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

(2)把winutil.exe放到hadoop安裝文件的bin目錄下,即:

image

而後配置環境變量HADOOP_HOME和Path,即:

image   image

注:winutil.exe能夠到網上搜索,注意是win32位的(個人機子是32位的),而且是hadoop 2.6.0的。網上的大多都是hadoop 2.2.0,而且是64位的,注意一下。或者你能夠到以下地址下載:

http://download.csdn.net/detail/tingxuelouwq/9390307

缺乏winutil.exe文件,在運行時會報以下錯誤:

Exception in thread "main" java.lang.NullPointerException

at java.lang.ProcessBuilder.start

(3)把hadoop.dll放到C:\Windows\System32目錄下,而後重啓電腦。(最好將hadoop.dll也拷貝一份到hadoop安裝文件的bin目錄下)。

注:缺乏hadoop.dll文件,在運行時會報以下錯誤:

Exception in thread "main"java.lang.UnsatisfiedLinkError:

org.apache.hadoop.io.nativeio.NativeIO$Windows.access0

(4)修改hdfs-site.xml文件,添加以下代碼:

image

注:這一步是設置對hadoop中目錄的訪問權限(在正式的服務器上不要這樣設置),若是不設置,會報以下錯誤:

org.apache.hadoop.security.AccessControlException: Permissiondenied: user=wangqi, access=WRITE,inode="/user/wangqi/output":root:supergroup:drwxr-xr-x

 

6) 在TestWordCount.java上右鍵-Run As-Run on Hadoop,執行完成後,在output/count目錄下有一個統計文件,如圖:

image

相關文章
相關標籤/搜索