ctl1690 寫:
1. 哪裡可以獲得hadoop client相關的資訊?
舉個例子來說,國網中心有一組 hadoop.nchc.org.tw 二十台的叢集,假定這二十台都有 public IP,
且申請了對應的 DNS(目前只有一台有 Public IP,一個 DNS 對應)
您在家中使用 hadoop4win 或 Linux 上裝了一個 Hadoop 開發環境,
這台電腦就稱之為 Hadoop Client。
只是一個稱呼,Hadoop 有很多「角色」,這是其中一種「角色」。
就像 NameNode、DataNode、JobTracker、TaskTracker 都是 Hadoop 這齣戲中的一種「角色」。
ctl1690 寫:
2. hadoop client 是說可以遠端對hadoop下達各種命令或job嗎?還是只限HDFS相關操作?
(因為我所搜尋到的好像都跟HDFS有關)
目前我們測試過從外部用 Eclipse Plugin for Hadoop 丟工作給 hadoop.nchc.org.tw 是可行的。
此時這台外部的 Eclipse Plugin for Hadoop 就是扮演 Hadoop Client 的角色。
它可以取得 HDFS 的資料,也可以 submit job。
ctl1690 寫:
3 我們可以自己寫一個client 來連結namenode, 所以我可以在windows下執行這個client,但前提是同網段
,所以在一般家裡的hient中執行client連線學網中的namenode是不可行的,不知得有解釋有無錯誤?
底下是一段簡單的示範,這台 drbl 機器跟 hadoop 在不同網段,是可以下 hadoop fs -ls 的。
這裡要注意的是 Hadoop Client 的帳號必須跟 NameNode 一模一樣才行。代碼:
jazz@drbl:~$ wget wget http://ftp.twaren.net/Unix/Web/apache/hadoop/core/hadoop-0.18.3/hadoop-0.18.3.tar.gz
jazz@drbl:~$ tar zxvf hadoop-0.18.3.tar.gz
jazz@drbl:~$ cd hadoop-0.18.3
jazz@drbl:~/hadoop-0.18.3$ scp jazz@hadoop.nchc.org.tw:/etc/hadoop/conf/* conf/.
jazz@hadoop.nchc.org.tw's password:
commons-logging.properties 100% 196 0.2KB/s 00:00
configuration.xsl 100% 535 0.5KB/s 00:00
fairscheduler.xml 100% 138 0.1KB/s 00:00
hadoop-default.xml 100% 40KB 39.7KB/s 00:00
hadoop-env.sh 100% 2235 2.2KB/s 00:00
hadoop-metrics.properties 100% 1430 1.4KB/s 00:00
hadoop-site.xml 100% 1822 1.8KB/s 00:00
log4j.properties 100% 3425 3.3KB/s 00:00
masters 100% 10 0.0KB/s 00:00
slaves 100% 10 0.0KB/s 00:00
sslinfo.xml.example 100% 401 0.4KB/s 00:00
jazz@drbl:~/hadoop-0.18.3$ export JAVA_HOME=/usr/lib/jvm/java-6-sun
jazz@drbl:~/hadoop-0.18.3$ bin/hadoop fs -ls
Found 2 items
drwxr-xr-x - jazz supergroup 0 2009-12-31 15:44 /user/jazz/input
drwxr-xr-x - jazz supergroup 0 2010-03-02 00:21 /user/jazz/output
目前限制應該說 Hadoop Client 必須可以直接連到 DataNode 跟 TaskTracker。
這是我們觀察到的限制,像是要下 bin/hadoop fs -put 或 -get 時就會卡住了。
爲什麼呢?我觀察到的現象是從 netstat 可看到有嘗試要直接去連 DataNode。
代碼:
jazz@drbl:~/hadoop-0.18.3$ bin/hadoop fs -get input .
jazz@drbl:~/hadoop-0.18.3$ netstat -ap | grep java
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 1 drbl:54913 192.168.1.15%2421:50010 SYN_SENT 12500/java
這裡可以看到他常是要去連 192.168.1.15 也就是 hadoop115 的 Private IP。
代碼:
jazz@hadoop:~$ ping hadoop115
PING hadoop115 (192.168.1.15) 56(84) bytes of data.
64 bytes from hadoop115 (192.168.1.15): icmp_seq=1 ttl=64 time=0.118 ms
同樣的,執行 wordcount 範例也會有類似的困擾
代碼:
jazz@drbl:~/hadoop-0.18.3$ bin/hadoop jar hadoop-0.18.3-examples.jar wordcount input out1 &
jazz@drbl:~/hadoop-0.18.3$ netstat -ap | grep java
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 1 drbl:3923 192.168.1.13%1819:50010 SYN_SENT 14202/jav
unix 2 [ ] STREAM CONNECTED 86620 14202/java
jazz@drbl:~/hadoop-0.18.3$
10/03/03 01:32:54 INFO dfs.DFSClient: Exception in createBlockOutputStream java.net.SocketTimeoutException
10/03/03 01:32:54 INFO dfs.DFSClient: Abandoning block blk_353991746968996348_578691
10/03/03 01:32:54 INFO dfs.DFSClient: Waiting to find target node: 192.168.1.13:50010
所以這組 hadoop 叢集的每一台都必須有對外 IP 跟 DNS 對應,才能讓所有人反查正確,
並直接可以連到 DataNode 跟 TaskTracker 。
這也是目前
http://hadoop.nchc.org.tw:50070 為何無法使用 Browse File System 的主因。
- Jazz