| | 1 | ◢ <[wiki:III140118/Lab4 實作四]> | <[wiki:III140118 回課程大綱]> ▲ | <[wiki:III140118/Lab6 實作六]> ◣ |
| | 2 | |
| | 3 | = 實作五 Lab5 = |
| | 4 | |
| | 5 | {{{ |
| | 6 | #!html |
| | 7 | <p style="text-align: center;"><big style="font-weight: bold;"><big>基本除錯技能(一) Bash 除錯<br/>Debug Skill (1) Bash debugging</big></big></p> |
| | 8 | }}} |
| | 9 | |
| | 10 | [[PageOutline]] |
| | 11 | {{{ |
| | 12 | #!text |
| | 13 | 請先連線至 nodeN.3du.me , N 為您的報名編號 |
| | 14 | }}} |
| | 15 | |
| | 16 | * 首先,我們想要瞭解上述練習中一直使用到的指令 hadoop 是什麼。讓我們先用 which 指令,找出它所在的路徑 |
| | 17 | {{{ |
| | 18 | lab@node1:~/hadoop_labs$ which hadoop |
| | 19 | /home/user/hadoop/bin/hadoop |
| | 20 | }}} |
| | 21 | |
| | 22 | * 接著,讓我們用指令 file 來查出這個 hadoop 指令是什麼格式。 |
| | 23 | {{{ |
| | 24 | lab@node1:~/hadoop_labs$ file `which hadoop` |
| | 25 | /home/user/hadoop/bin/hadoop: a bash script, ASCII text executable |
| | 26 | }}} |
| | 27 | |
| | 28 | * 現在我們知道它是 bash script,那如何針對 bash script 進行除錯呢?我們可以用 bash -x 參數來進行除錯! |
| | 29 | {{{ |
| | 30 | lab@node1:~/hadoop_labs$ bash -x `which hadoop` fs -ls |
| | 31 | .... 略 .... |
| | 32 | adoop/libexec/../lib/slf4j-api-1.4.3.jar:/home/user/hadoop/libexec/../lib/slf4j-log4j12-1.4.3.jar:/home/user/hadoop/libex |
| | 33 | ec/../lib/xmlenc-0.52.jar:/home/user/hadoop/libexec/../lib/jsp-2.1/jsp-2.1.jar:/home/user/hadoop/libexec/../lib/jsp-2.1/j |
| | 34 | sp-api-2.1.jar org.apache.hadoop.fs.FsShell -ls |
| | 35 | Found 3 items |
| | 36 | drwxr-xr-x - user supergroup 0 2013-09-23 00:28 /user/user/input |
| | 37 | drwxr-xr-x - user supergroup 0 2013-09-23 00:27 /user/user/tmp |
| | 38 | drwxr-xr-x - user supergroup 0 2013-09-23 00:34 /user/user/toHDFS |
| | 39 | }}} |
| | 40 | |
| | 41 | * 從上面指令的執行結果,我們可以觀察到 hadoop fs 指令會幫忙補齊 Java CLASSPATH 的設定,最後會執行某個 Java Class |
| | 42 | * 讓我們來看一下其他的 hadoop 指令是使用哪個 Java Class |
| | 43 | {{{ |
| | 44 | lab@node1:~/hadoop_labs$ bash -x `which hadoop` jar |
| | 45 | lab@node1:~/hadoop_labs$ bash -x `which hadoop` fsck |
| | 46 | }}} |
| | 47 | |
| | 48 | * <舉一反三> 未來您想要找任何指令的 Java 原始碼入口,就可以使用這個技巧。例如: hadoop distcp 、 hadoop balancer |
| | 49 | |
| | 50 | == 實作習題 == |
| | 51 | |
| | 52 | * <問題 1> 請問 hadoop fs 指令是使用哪個 Java Class ? |
| | 53 | {{{ |
| | 54 | #!text |
| | 55 | (A) FileSystem |
| | 56 | (B) FsShell |
| | 57 | (C) RunJar |
| | 58 | (D) DFSck |
| | 59 | }}} |
| | 60 | |
| | 61 | * <問題 2> 請問 hadoop jar 指令是使用哪個 Java Class ? |
| | 62 | {{{ |
| | 63 | #!text |
| | 64 | (A) FileSystem |
| | 65 | (B) FsShell |
| | 66 | (C) RunJar |
| | 67 | (D) DFSck |
| | 68 | }}} |
| | 69 | |
| | 70 | * <問題 3> 請問 hadoop fsck 指令是使用哪個 Java Class ? |
| | 71 | {{{ |
| | 72 | #!text |
| | 73 | (A) FileSystem |
| | 74 | (B) FsShell |
| | 75 | (C) RunJar |
| | 76 | (D) DFSck |
| | 77 | }}} |