Version 4 (modified by jazz, 11 years ago) (diff) |
---|
實作七 Lab7
基本除錯技能(三) 切換 Hadoop 設定檔
Debug Skill (3) Change Hadoop Configuration for Hadoop Client
請先連線至 nodeN.3du.me , N 為您的報名編號
- 通常一般程式設計師只能取得有限的權限,無法修改 hadoop 叢集的設定,
因此是否能夠在 Hadoop Client 端對某些使用者有權修改的參數進行調整呢?
- 答案是可行的!
Hadoop Client 執行端可以透過 HADOOP_CONF_DIR 環境變數來修改想要調整的 Hadoop 參數。
以下拿前述的三種模式來做示範。
- 各位前面執行完實作三,目前是運行於全分散模式(Full Distributed Mode)。
我們可以透過修改 HADOOP_CONF_DIR 環境變數切換 hadoop 指令會採用的模式:user@node1:~/hadoop_labs$ export HADOOP_CONF_DIR=~/hadoop/conf.pseudo/ user@node1:~/hadoop_labs$ hadoop fs -ls user@node1:~/hadoop_labs$ export HADOOP_CONF_DIR=~/hadoop/conf.local/ user@node1:~/hadoop_labs$ hadoop fs -ls user@node1:~/hadoop_labs$ unset HADOOP_CONF_DIR user@node1:~/hadoop_labs$ hadoop fs -ls
- 試觀察以上結果,您是否觀察到錯誤訊息呢? 這個錯誤訊息背後有"網路"上的意義,請回想一下實作二與實作三,NameNode 的 IP 綁定(binding)差異。
- 甚至透過這種方式,我們可以讓 Hadoop Client 在不同座 Hadoop 叢集之間做切換
user@node50:~/hadoop_labs$ cd user@node50:~$ cp -r hadoop/conf.full hadoop/conf.node14 user@node50:~$ sed -i "s#$(hostname)#node14#g" hadoop/conf.node14/core-site.xml user@node50:~$ sed -i "s#$(hostname)#node14#g" hadoop/conf.node14/mapred-site.xml user@node50:~$ export HADOOP_CONF_DIR=~/hadoop/conf.node14/ user@node50:~$ export HADOOP_ROOT_LOGGER=DEBUG,console user@node50:~$ hadoop fs -ls user@node50:~$ unset HADOOP_CONF_DIR user@node50:~$ hadoop fs -ls user@node50:~$ unset HADOOP_ROOT_LOGGER
實作習題
<問題 1> 當運行於全分散模式(Full Distributed Mode),卻使用 HADOOP_CONF_DIR 環境變數切換成偽分散模式(Pseudo-Distributed Mode)時,會出現甚麼情形?
(A) INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 9 time(s). (B) 正常可以顯示 hadoop fs -ls 的結果
<問題 2> Hadoop 的三種模式中,哪一個無法跟全分散模式(Full Distributed Mode)並存?
(A) 偽分散模式(Pseudo-Distributed Mode) (B) 單機模式(Local Mode)