| | 1 | ◢ <[wiki:III140705/Lab14 實作十四]> | <[wiki:III140705 回課程大綱]> ▲ | <[wiki:III140705/Lab16 實作十六]> ◣ |
| | 2 | |
| | 3 | = 實作十五 Lab15 = |
| | 4 | |
| | 5 | {{{ |
| | 6 | #!html |
| | 7 | <p style="text-align: center;"><big style="font-weight: bold;"><big>從 WordCount 範例學習新版 Hadoop MapReduce 的程式組成結構<br/>Learning Hadoop MapReduce Code Structure from WordCount Example</big></big></p> |
| | 8 | }}} |
| | 9 | |
| | 10 | [[PageOutline]] |
| | 11 | |
| | 12 | {{{ |
| | 13 | #!text |
| | 14 | 請先連線至 nodeN.3du.me , N 為您的報名編號 |
| | 15 | }}} |
| | 16 | |
| | 17 | == STEP 0 : 前置作業 == |
| | 18 | |
| | 19 | * 首先,請確認您運行於全分散式模式下 |
| | 20 | {{{ |
| | 21 | ~/hadoop_labs/lab002/hadoop-full-mode |
| | 22 | }}} |
| | 23 | * 安裝 screen 並設定 screen |
| | 24 | {{{ |
| | 25 | sudo apt-get -y install screen |
| | 26 | cat > ~/.screenrc <<EOF |
| | 27 | caption always "%{= wk} %{= KY} [%n]%t @ %H %{-} %= %{= KR} %l %{-} | %{= KG} %Y-%m-%d %{-} " |
| | 28 | hardstatus alwayslastline " %-Lw%{= Bw}%n%f %t%{-}%+Lw %=|" |
| | 29 | vbell off |
| | 30 | EOF |
| | 31 | }}} |
| | 32 | * 快速鍵 |
| | 33 | * CTRL + a + | – 垂直分割視窗 |
| | 34 | * CTRL + a + 0 ~ 9 – 從第一個視窗切換到第九個視窗 |
| | 35 | * CTRL + a + n – 切換到下一個(還存在)的視窗 |
| | 36 | * CTRL + a + Backspace – Switches to the previous available |
| | 37 | * CTRL + a + a – 切換到跟最後一次切換的視窗 |
| | 38 | * CTRL + a + A – 切換視窗"抬頭" |
| | 39 | * CTRL + a + K – 關閉目前視窗 |
| | 40 | * CTRL + a + c – 開啟一個新的視窗 |
| | 41 | * CTRL + a + [ - 進入 copy mode,方便上下捲動歷史紀錄(因為常用的 SHIFT + PgUp / PgDn 會失效) |
| | 42 | * CTRL + a + ESC - 進入 copy mode,方便上下捲動歷史紀錄(因為常用的 SHIFT + PgUp / PgDn 會失效) |
| | 43 | * Ctrl + a + S - 分割視窗 |
| | 44 | * Ctrl + a + Tab - 在視窗中移動 |
| | 45 | * Ctrl + a + Q - 取消分割 |
| | 46 | |
| | 47 | == STEP 1 : 開啟另一個連線視窗 == |
| | 48 | |
| | 49 | * http://nodeN.3du.me:50030 - 其中 N 為您的報名編號 |
| | 50 | * 並且在新個連線視窗中執行以下的指令 |
| | 51 | {{{ |
| | 52 | watch -d -n 1 "jps | sort -n; printf '\n\n'; hadoop job -list" |
| | 53 | }}} |
| | 54 | |
| | 55 | == STEP 2 : 執行 MapReduce 任務 == |
| | 56 | |
| | 57 | * 讓我們來觀察一下,當執行 MapReduce 任務時,發生了什麼事情? |
| | 58 | {{{ |
| | 59 | cd ~/hadoop_labs/lab007 |
| | 60 | ant |
| | 61 | hadoop fs -rmr input output |
| | 62 | hadoop fs -put ~/hadoop/conf input |
| | 63 | hadoop jar WordCount.jar input output |
| | 64 | }}} |
| | 65 | |
| | 66 | * 提交任務後,請觀察另一個視窗 jps 結果的變化,並且觀察 50030 頁面的變化(需自行按 F5 更新畫面)。 |
| | 67 | |
| | 68 | * 切換到單機模式,讓我們重新執行一次 WordCount.jar |
| | 69 | {{{ |
| | 70 | export HADOOP_CONF_DIR=~/hadoop/conf.local/ |
| | 71 | hadoop fs -put ~/hadoop/conf local-input |
| | 72 | hadoop jar WordCount.jar local-input local-output |
| | 73 | unset HADOOP_CONF_DIR |
| | 74 | }}} |
| | 75 | |
| | 76 | == 實作習題 == |
| | 77 | |
| | 78 | <問題 1> 請問在另一個視窗中,執行 jps 的結果,哪個 java process 代表 WordCount.java 的 main() 函數呢? |
| | 79 | {{{ |
| | 80 | #!text |
| | 81 | (A) TaskTracker |
| | 82 | (B) RunJar |
| | 83 | (C) Child |
| | 84 | (D) Main |
| | 85 | }}} |
| | 86 | |
| | 87 | <問題 2> 請問在另一個視窗中,執行 jps 的結果,您觀察到最多同時存在幾個名為「Child」的 java process? |
| | 88 | {{{ |
| | 89 | #!text |
| | 90 | (A) 0 |
| | 91 | (B) 1 |
| | 92 | (C) 2 |
| | 93 | (D) 3 |
| | 94 | }}} |
| | 95 | |
| | 96 | <問題 3> 請問切換到本機模式(Local Mode)後,當執行 hadoop jar WordCount.jar 指令時,在另一個視窗中,執行 jps 的結果,您觀察到最多同時存在幾個名為「Child」的 java process? |
| | 97 | {{{ |
| | 98 | #!text |
| | 99 | (A) 0 |
| | 100 | (B) 1 |
| | 101 | (C) 2 |
| | 102 | (D) 3 |
| | 103 | }}} |