◢ <[wiki:Hinet131022/Lab4 實作四]> | <[wiki:Hinet131022 回課程大綱]> ▲ | <[wiki:Hinet131022/Lab6 實作六]> ◣ = 實作五 Lab5 = {{{ #!html

基本除錯技能(一) Bash 除錯
Debug Skill (1) Bash debugging

}}} [[PageOutline]] {{{ #!text 請先連線至 nodeN.3du.me , N 為您的報名編號 }}} * 首先,我們想要瞭解上述練習中一直使用到的指令 hadoop 是什麼。讓我們先用 which 指令,找出它所在的路徑 {{{ user@node1:~/hadoop_labs$ which hadoop /home/user/hadoop/bin/hadoop }}} * 接著,讓我們用指令 file 來查出這個 hadoop 指令是什麼格式。 {{{ user@node1:~/hadoop_labs$ file `which hadoop` /home/user/hadoop/bin/hadoop: a bash script, ASCII text executable }}} * 現在我們知道它是 bash script,那如何針對 bash script 進行除錯呢?我們可以用 bash -x 參數來進行除錯! {{{ user@node1:~/hadoop_labs$ bash -x `which hadoop` fs -ls .... 略 .... adoop/libexec/../lib/slf4j-api-1.4.3.jar:/home/user/hadoop/libexec/../lib/slf4j-log4j12-1.4.3.jar:/home/user/hadoop/libex 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 sp-api-2.1.jar org.apache.hadoop.fs.FsShell -ls Found 3 items drwxr-xr-x - user supergroup 0 2013-09-23 00:28 /user/user/input drwxr-xr-x - user supergroup 0 2013-09-23 00:27 /user/user/tmp drwxr-xr-x - user supergroup 0 2013-09-23 00:34 /user/user/toHDFS }}} * 從上面指令的執行結果,我們可以觀察到 hadoop fs 指令會幫忙補齊 Java CLASSPATH 的設定,最後會執行某個 Java Class * 讓我們來看一下其他的 hadoop 指令是使用哪個 Java Class {{{ user@node1:~/hadoop_labs$ bash -x `which hadoop` jar user@node1:~/hadoop_labs$ bash -x `which hadoop` fsck }}} * <舉一反三> 未來您想要找任何指令的 Java 原始碼入口,就可以使用這個技巧。例如: hadoop distcp 、 hadoop balancer == 實作習題 == * <問題 1> 請問 hadoop fs 指令是使用哪個 Java Class ? {{{ #!text (A) FileSystem (B) FsShell (C) RunJar (D) DFSck }}} * <問題 2> 請問 hadoop jar 指令是使用哪個 Java Class ? {{{ #!text (A) FileSystem (B) FsShell (C) RunJar (D) DFSck }}} * <問題 3> 請問 hadoop fsck 指令是使用哪個 Java Class ? {{{ #!text (A) FileSystem (B) FsShell (C) RunJar (D) DFSck }}}