Changes between Version 26 and Version 27 of waue/2009/0617


Ignore:
Timestamp:
Jun 18, 2009, 5:54:21 PM (15 years ago)
Author:
waue
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • waue/2009/0617

    v26 v27  
    3737 * 1 將javadoc (jdk-6u10-docs.zip) 下載下來
    3838 [https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u10-docs-oth-JPR@CDS-CDS_Developer 下載點]
    39  * 2 放在 /tmp/ 下
     39[[Image(1-1.png)]]
     40 
     41 * 2 下載完後將檔案放在 /tmp/ 下
    4042 * 3 執行
     43 
    4144{{{
    4245$ sudo apt-get install sun-java6-doc
     
    170173$ eclipse &
    171174}}}
    172 
     175 * 圖 2-1 一開始會出現問你要將工作目錄放在哪裡:在這我們用預設值
     176[[Image(2-1.png)]]
    173177-------
    174178之後的說明則是在eclipse 上的介面操作
    175179
    176180 * window -> open pers.. -> other.. -> map/reduce
     181[[Image(win-open-other.png)]]
     182 
     183 * 圖 2-2 設定要用 Map/Reduce 的視野
     184[[Image(2-2.png)]]
     185
     186 * 圖 2-3 使用 Map/Reduce 的視野後的介面呈現
     187[[Image(2-3.png)]]
     188
    177189 * file -> new -> project -> Map/Reduce -> Map/Reduce Project -> next
     190[[Image(file-new-project.png)]]
     191
     192 * 圖 2-4 建立mapreduce專案(1)
     193[[Image(2-4.png)]]
     194
     195 * 圖 2-4 建立mapreduce專案的(2)
     196[[Image(2-4-2.png)]]
     197
    178198{{{
    179199#!sh
     
    185205由於剛剛建立了icas這個專案,因此eclipse已經建立了新的專案,出現在左邊視窗,右鍵點選該資料夾,並選properties
    186206
     207 * 圖 2-5 右鍵點選project的properties做細部設定
     208[[Image(2-5.png)]]
     209
     210
    187211進入專案的細部設定頁
     212
     213 * 圖 2-5-1 hadoop的javadoc的設定(1)
     214[[Image(2-5-1.png)]]
    188215
    189216 * java Build Path -> Libraries -> hadoop-0.20.0-ant.jar
     
    197224}}}
    198225
     226 * 圖 2-5-2 hadoop的javadoc的設定完後(2)
     227[[Image(2-5-2.png)]]
    199228
    200229 * javadoc location -> 輸入:file:/usr/lib/jvm/java-6-sun/docs/api/
     230 
     231 * 圖 2-5-3 java本身的javadoc的設定(3)
     232[[Image(2-5-3.png)]]
    201233
    202234-----
    203235回到eclipse 主視窗
    204236
    205  * 視窗右下角黃色大象圖示"Map/Reduce Locations tag" -> 點選齒輪右邊的藍色大象圖示:
     237 * 圖 2-6 視窗右下角黃色大象圖示"Map/Reduce Locations tag" -> 點選齒輪右邊的藍色大象圖示:
     238[[Image(2-6.png)]]
     239
     240圖 2-6-1 進行eclipse 與 hadoop 間的設定(2)
     241[[Image(2-6-1.png)]]
     242
    206243{{{
    207244#!sh
     
    212249Finish
    213250}}}
     251
     252圖 2-6-2 設定完後,可以看到下方多了一隻藍色大象,左方展開資料夾也可以秀出在hdfs內的檔案結構
     253[[Image(2-6-2.png)]]
    214254
    215255 = 三、 撰寫範例程式 =
     
    223263 
    224264 == 3.1  我的第一隻程式 ==
     265 
    225266 * File -> new -> mapper
     267[[Image(file-new-mapper.png)]]
     268
     269圖 3-1 mapper.java
     270[[Image(3-1.png)]]
    226271{{{
    227272#!sh
     
    230275Name -> : mapper
    231276}}}
    232  * 編輯mapper.java
     277
     278 * mapper.java的程式碼:
    233279{{{
    234280#!java
     
    257303}
    258304}}}
     305
     306 * 圖 3-2 建立mapper.java後,貼入程式碼
     307[[Image(3-2.png)]]
     308
     309建立reducer.java檔
     310
    259311 * File -> new -> reducer
     312[[Image(file-new-reducer.png)]]
     313
     314圖 3-3 reducer.java
     315[[Image(3-3.png)]]
    260316
    261317{{{
     
    266322}}}
    267323
     324 * reducer.java的程式碼
     325 
    268326{{{
    269327#!java
     
    292350
    293351 * File -> new -> Map/Reduce Driver
     352[[Image(file-new-mr-driver.png)]]
     353
     354
     355圖 3-4 建立WordCount.java,此檔用來驅動mapper 與 reducer,因此選擇 Map/Reduce Driver
     356[[Image(3-4.png)]]
    294357
    295358{{{
     
    340403}}}
    341404
    342  * 三個檔都存檔後,可以看到icas專案下的src,bin都有檔案產生
    343 
     405
     406
     407圖3-5. 三個檔完成後並存檔後,整個程式建立完成
     408[[Image(3-5.png)]]
     409
     410
     411 * 三個檔都存檔後,可以看到icas專案下的src,bin都有檔案產生,我們用指令來check
     412 
    344413{{{
    345414$ cd workspace/icas
     
    351420
    352421 = 四、編譯 =
    353  * 由於hadoop 0.20 此版本的eclipse-plugin依舊不完整,如:1. 齒輪圖示沒有作用 2. 右鍵點選WordCount.java -> run as -> run on Hadoop :沒有效果
    354  * 因此編譯hadoop程式就要靠指令來編輯,然而用一行一行指令來產生太沒效率,在此介紹用Makefile來編譯
     422 * 由於hadoop 0.20 此版本的eclipse-plugin依舊不完整 ,如:
     423   * 右鍵點選WordCount.java -> run as -> run on Hadoop :沒有效果
     424   
     425[[Image(run-on-hadoop.png)]]
     426 
     427 * 因此eclipse到目前為止功臣身退,而編譯hadoop程式就要靠指令來編輯,然而用一行一行指令來產生太沒效率,在此介紹用Makefile來編譯
    355428
    356429 == 4.1 產生Makefile ==
     
    361434}}}
    362435
     436 * 輸入以下Makefile的內容
    363437{{{
    364438#!sh
     
    370444all:help
    371445jar:
    372         jar -cvf ${JarFile} -C bin/ .
     446  jar -cvf ${JarFile} -C bin/ .
    373447
    374448run:
    375         hadoop jar ${JarFile} ${MainFunc} input output
     449  hadoop jar ${JarFile} ${MainFunc} input output
    376450
    377451clean:
    378         hadoop fs -rmr output
     452  hadoop fs -rmr output
    379453
    380454output:
    381         rm -rf ${LocalOutDir}
    382         hadoop fs -get output ${LocalOutDir}
    383         gedit ${LocalOutDir}/part-r-00000 &
     455  rm -rf ${LocalOutDir}
     456  hadoop fs -get output ${LocalOutDir}
     457  gedit ${LocalOutDir}/part-r-00000 &
    384458
    385459help:
    386         @echo "Usage:"
    387         @echo " make jar     - Build Jar File."
    388         @echo " make clean   - Clean up Output directory on HDFS."
    389         @echo " make run     - Run your MapReduce code on Hadoop."
    390         @echo " make output  - Download and show output file"
    391         @echo " make help    - Show Makefile options."
    392         @echo " "
    393         @echo "Example:"
    394         @echo " make jar; make run; make output; make clean"
     460  @echo "Usage:"
     461  @echo " make jar     - Build Jar File."
     462  @echo " make clean   - Clean up Output directory on HDFS."
     463  @echo " make run     - Run your MapReduce code on Hadoop."
     464  @echo " make output  - Download and show output file"
     465  @echo " make help    - Show Makefile options."
     466  @echo " "
     467  @echo "Example:"
     468  @echo " make jar; make run; make output; make clean"
    395469
    396470}}}
     
    400474{{{
    401475$ cd /home/waue/workspace/icas/
    402 $ make jar; make run; make output; make clean
    403 }}}
    404 
    405  == 4.3 screenshot ==
    406  * 圖一: 完成後的eclipse視窗快照
     476$ make
     477}}}
     478
     479 * 1. 編譯產生jar檔
     480
     481{{{
     482$ make jar
     483}}}
     484
     485 * 2. 跑我們的wordcount 於hadoop上
     486
     487{{{
     488$ make run
     489}}}
     490
     491 * make run基本上能正確無誤的運作到結束,因此代表我們在eclipse編譯的程式可以順利在hadoop0.20的平台上運行。
     492
     493 * 而回到eclipse視窗,我們可以看到下方視窗run完的job會呈現出來;左方視窗也多出output資料夾,part-r-00000就是我們的結果檔
     494 
    407495[[Image(1.png)]]
    408496------
    409  * 圖二: 因為有設定完整的javadoc, 因此可以得到詳細的解說與輔助
     497 * 因為有設定完整的javadoc, 因此可以得到詳細的解說與輔助
    410498[[Image(2.png)]]
     499
     500 * 3. 這個指令是幫助使用者將結果檔從hdfs下載到local端,並且用gedit來開啟你的結果檔
     501
     502{{{
     503$ make output
     504}}}
     505
     506 * 4. 這個指令用來把hdfs上的output資料夾清除。如果你還想要在跑一次make run,請先執行make clean,否則hadoop會告訴你,output資料夾已經存在,而拒絕工作喔!
     507{{{
     508$ make clean
     509}}}
     510