| | 1 | ◢ <[wiki:III140118/Lab6 實作六]> | <[wiki:III140118 回課程大綱]> ▲ | <[wiki:III140118/Lab8 實作八]> ◣ |
| | 2 | |
| | 3 | = 實作七 Lab7 = |
| | 4 | |
| | 5 | {{{ |
| | 6 | #!html |
| | 7 | <p style="text-align: center;"><big style="font-weight: bold;"><big>基本除錯技能(三) 切換 Hadoop 設定檔<br/>Debug Skill (3) Change Hadoop Configuration for Hadoop Client</big></big></p> |
| | 8 | }}} |
| | 9 | |
| | 10 | [[PageOutline]] |
| | 11 | |
| | 12 | {{{ |
| | 13 | #!text |
| | 14 | 請先連線至 nodeN.3du.me , N 為您的報名編號 |
| | 15 | }}} |
| | 16 | |
| | 17 | * 通常一般程式設計師只能取得有限的權限,無法修改 hadoop 叢集的設定,[[BR]]因此是否能夠在 Hadoop Client 端對某些使用者有權修改的參數進行調整呢? |
| | 18 | |
| | 19 | * 答案是可行的! [[BR]]Hadoop Client 執行端可以透過 HADOOP_CONF_DIR 環境變數來修改想要調整的 Hadoop 參數。[[BR]]以下拿前述的三種模式來做示範。 |
| | 20 | |
| | 21 | * 各位前面執行完實作三,目前是運行於全分散模式(Full Distributed Mode)。[[BR]]我們可以透過修改 HADOOP_CONF_DIR 環境變數切換 hadoop 指令會採用的模式: |
| | 22 | {{{ |
| | 23 | lab@node1:~/hadoop_labs$ export HADOOP_CONF_DIR=~/hadoop/conf.pseudo/ |
| | 24 | lab@node1:~/hadoop_labs$ hadoop fs -ls |
| | 25 | lab@node1:~/hadoop_labs$ export HADOOP_CONF_DIR=~/hadoop/conf.local/ |
| | 26 | lab@node1:~/hadoop_labs$ hadoop fs -ls |
| | 27 | lab@node1:~/hadoop_labs$ unset HADOOP_CONF_DIR |
| | 28 | lab@node1:~/hadoop_labs$ hadoop fs -ls |
| | 29 | }}} |
| | 30 | * 試觀察以上結果,您是否觀察到錯誤訊息呢? 這個錯誤訊息背後有"網路"上的意義,請回想一下實作二與實作三,NameNode 的 IP 綁定(binding)差異。 |
| | 31 | |
| | 32 | * 甚至透過這種方式,我們可以讓 Hadoop Client 在不同座 Hadoop 叢集之間做切換 |
| | 33 | {{{ |
| | 34 | cd |
| | 35 | cp -r hadoop/conf.full hadoop/conf.node0 |
| | 36 | sed -i "s#$(hostname)#node0#g" hadoop/conf.node0/core-site.xml |
| | 37 | sed -i "s#$(hostname)#node0#g" hadoop/conf.node0/mapred-site.xml |
| | 38 | export HADOOP_CONF_DIR=~/hadoop/conf.node0/ |
| | 39 | export HADOOP_ROOT_LOGGER=DEBUG,console |
| | 40 | hadoop fs -ls |
| | 41 | unset HADOOP_CONF_DIR |
| | 42 | hadoop fs -ls |
| | 43 | unset HADOOP_ROOT_LOGGER |
| | 44 | }}} |
| | 45 | |
| | 46 | == 實作習題 == |
| | 47 | |
| | 48 | <問題 1> 當運行於全分散模式(Full Distributed Mode),卻使用 HADOOP_CONF_DIR 環境變數切換成偽分散模式(Pseudo-Distributed Mode)時,會出現甚麼情形? |
| | 49 | {{{ |
| | 50 | #!text |
| | 51 | (A) INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 9 time(s). |
| | 52 | (B) 正常可以顯示 hadoop fs -ls 的結果 |
| | 53 | }}} |
| | 54 | |
| | 55 | <問題 2> Hadoop 的三種模式中,哪一個無法跟全分散模式(Full Distributed Mode)並存? |
| | 56 | {{{ |
| | 57 | #!text |
| | 58 | (A) 偽分散模式(Pseudo-Distributed Mode) |
| | 59 | (B) 單機模式(Local Mode) |
| | 60 | }}} |