Changes between Version 26 and Version 27 of waue/2009/0617
- Timestamp:
- Jun 18, 2009, 5:54:21 PM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
waue/2009/0617
v26 v27 37 37 * 1 將javadoc (jdk-6u10-docs.zip) 下載下來 38 38 [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/ 下 40 42 * 3 執行 43 41 44 {{{ 42 45 $ sudo apt-get install sun-java6-doc … … 170 173 $ eclipse & 171 174 }}} 172 175 * 圖 2-1 一開始會出現問你要將工作目錄放在哪裡:在這我們用預設值 176 [[Image(2-1.png)]] 173 177 ------- 174 178 之後的說明則是在eclipse 上的介面操作 175 179 176 180 * 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 177 189 * 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 178 198 {{{ 179 199 #!sh … … 185 205 由於剛剛建立了icas這個專案,因此eclipse已經建立了新的專案,出現在左邊視窗,右鍵點選該資料夾,並選properties 186 206 207 * 圖 2-5 右鍵點選project的properties做細部設定 208 [[Image(2-5.png)]] 209 210 187 211 進入專案的細部設定頁 212 213 * 圖 2-5-1 hadoop的javadoc的設定(1) 214 [[Image(2-5-1.png)]] 188 215 189 216 * java Build Path -> Libraries -> hadoop-0.20.0-ant.jar … … 197 224 }}} 198 225 226 * 圖 2-5-2 hadoop的javadoc的設定完後(2) 227 [[Image(2-5-2.png)]] 199 228 200 229 * 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)]] 201 233 202 234 ----- 203 235 回到eclipse 主視窗 204 236 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 206 243 {{{ 207 244 #!sh … … 212 249 Finish 213 250 }}} 251 252 圖 2-6-2 設定完後,可以看到下方多了一隻藍色大象,左方展開資料夾也可以秀出在hdfs內的檔案結構 253 [[Image(2-6-2.png)]] 214 254 215 255 = 三、 撰寫範例程式 = … … 223 263 224 264 == 3.1 我的第一隻程式 == 265 225 266 * File -> new -> mapper 267 [[Image(file-new-mapper.png)]] 268 269 圖 3-1 mapper.java 270 [[Image(3-1.png)]] 226 271 {{{ 227 272 #!sh … … 230 275 Name -> : mapper 231 276 }}} 232 * 編輯mapper.java 277 278 * mapper.java的程式碼: 233 279 {{{ 234 280 #!java … … 257 303 } 258 304 }}} 305 306 * 圖 3-2 建立mapper.java後,貼入程式碼 307 [[Image(3-2.png)]] 308 309 建立reducer.java檔 310 259 311 * File -> new -> reducer 312 [[Image(file-new-reducer.png)]] 313 314 圖 3-3 reducer.java 315 [[Image(3-3.png)]] 260 316 261 317 {{{ … … 266 322 }}} 267 323 324 * reducer.java的程式碼 325 268 326 {{{ 269 327 #!java … … 292 350 293 351 * 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)]] 294 357 295 358 {{{ … … 340 403 }}} 341 404 342 * 三個檔都存檔後,可以看到icas專案下的src,bin都有檔案產生 343 405 406 407 圖3-5. 三個檔完成後並存檔後,整個程式建立完成 408 [[Image(3-5.png)]] 409 410 411 * 三個檔都存檔後,可以看到icas專案下的src,bin都有檔案產生,我們用指令來check 412 344 413 {{{ 345 414 $ cd workspace/icas … … 351 420 352 421 = 四、編譯 = 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來編譯 355 428 356 429 == 4.1 產生Makefile == … … 361 434 }}} 362 435 436 * 輸入以下Makefile的內容 363 437 {{{ 364 438 #!sh … … 370 444 all:help 371 445 jar: 372 446 jar -cvf ${JarFile} -C bin/ . 373 447 374 448 run: 375 449 hadoop jar ${JarFile} ${MainFunc} input output 376 450 377 451 clean: 378 452 hadoop fs -rmr output 379 453 380 454 output: 381 382 383 455 rm -rf ${LocalOutDir} 456 hadoop fs -get output ${LocalOutDir} 457 gedit ${LocalOutDir}/part-r-00000 & 384 458 385 459 help: 386 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 393 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" 395 469 396 470 }}} … … 400 474 {{{ 401 475 $ 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 407 495 [[Image(1.png)]] 408 496 ------ 409 * 圖二:因為有設定完整的javadoc, 因此可以得到詳細的解說與輔助497 * 因為有設定完整的javadoc, 因此可以得到詳細的解說與輔助 410 498 [[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