Taiwan Hadoop Forum

台灣 Hadoop 技術討論區
現在的時間是 2022-07-01, 18:40

所有顯示的時間為 UTC + 8 小時




發表新文章 回覆主題  [ 6 篇文章 ] 
發表人 內容
 文章主題 : Hadoop run程式的時候出現問題
文章發表於 : 2010-06-19, 00:36 
離線

註冊時間: 2010-06-19, 00:18
文章: 3
各位好,我目前有架設3台node,1台namenode,3台datanode

140.125.84.78 idsl-hdp1 → namenode , datanode
140.125.84.87 idsl-hdp2 → datanode
140.125.84.94 idsl-hdp3 → datanode

我試著跑WordCount程式的時候,在結果上都沒問題,但是在map與reduces的時候

會有錯誤的log出現,錯誤為:

ERROR="java\.lang\.IllegalArgumentException: Wrong FS: hdfs://idsl-hdp1\.local:9000/user/idsl/bearoutput/_temporary/...

想請問各位這個會是什麼問題嗎,感覺是hdfs上面的運作問題的樣子

我在etc/hosts(140.125.84.78)當中的設定如下:(idsl-hdp3及idsl-hdp2為datanode hostname)

127.0.0.1 localhost
127.0.1.1 idsl-hdp1

#The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
...
...(ipv6的相關設定)
140.125.84.94 idsl-hdp3
140.125.84.87 idsl-hdp2

另外想請問的是 127.0.1.1 這個ip設定是對的嗎? 以及之前我有嘗試將140.125.84.78的ip也加進去

但好像會出問題的樣子,我如果把78的ip移除,就可以run程式的說

先感謝大家的回覆,附上log檔及xml檔


附加檔案:
idsl-hdp1.local_1276873939416_job_201006182312_0001_idsl_word+count.txt [15.66 KiB]
被下載 1108 次
idsl-hdp1.local_1276873939416_job_201006182312_0001_conf.xml [16.4 KiB]
被下載 1065 次
回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop run程式的時候出現問題
文章發表於 : 2010-06-21, 00:53 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
BearWu 寫:
會有錯誤的log出現,錯誤為:
ERROR="java\.lang\.IllegalArgumentException: Wrong FS: hdfs://idsl-hdp1\.local:9000/user/idsl/bearoutput/_temporary/...
我在etc/hosts(140.125.84.78)當中的設定如下:(idsl-hdp3及idsl-hdp2為datanode hostname)

127.0.0.1 localhost
127.0.1.1 idsl-hdp1

#The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
...
...(ipv6的相關設定)
140.125.84.94 idsl-hdp3
140.125.84.87 idsl-hdp2

另外想請問的是 127.0.1.1 這個ip設定是對的嗎? 以及之前我有嘗試將140.125.84.78的ip也加進去
但好像會出問題的樣子,我如果把78的ip移除,就可以run程式的說
先感謝大家的回覆,附上log檔及xml檔


感覺上是 HDFS 無法產生 /user/idsl/bearoutput/_temporary/_attempt_201006182312_0001_m_000003_0
幾個小建議:

1. 從 idsl-hdp1.local_1276873939416_job_201006182312_0001_conf.xml 看到的 namenode 設定是 hdfs://140.125.84.78:9000
代碼:
<property><name>fs.default.name</name><value>hdfs://140.125.84.78:9000</value></property>

建議把三台的 /etc/hosts 改成底下的設定,會比較好一點。
代碼:
140.125.84.78 idsl-hdp1
140.125.84.94 idsl-hdp3
140.125.84.87 idsl-hdp2

記得改完之後,請 resstart namenode 跟 datanode

2. 若改完 /etc/hosts 還是怪怪的,可以留意一下目錄權限是否正確。

代碼:
$ hadoop fs -ls /user/idsl


- Jazz


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop run程式的時候出現問題
文章發表於 : 2010-06-21, 14:20 
離線

註冊時間: 2010-06-19, 00:18
文章: 3
終於沒有錯誤訊息出現了

我試著將三台當中的/etc/hosts檔裡面當中

127.0.1.1 idsl-hdpX 都把他註解掉

然後下列的ip也修改成您所說的那樣

之後再跑一次程式 就不會出現之前的錯誤了

不曉得是不是hosts當中的hostname 只能對應到一個ip,不曉得是不是這個因素才導致這樣子的情況

另外我後來嘗試用java寫入hdfs的檔案 但會有錯誤的樣子

錯誤訊息為:Exception in thread "main" org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=DrWho, access=WRITE, inode="idsl":idsl:Supergroup:rwxr-xr-x

想請問 我若要改hdfs當中的使用權限,是要在設定hdfs的時候改 還是利用他本身提供的lib的code來改該檔案的使用權限嗎?

感謝jazz的回答


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop run程式的時候出現問題
文章發表於 : 2010-06-21, 17:12 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
BearWu 寫:
終於沒有錯誤訊息出現了
我試著將三台當中的/etc/hosts檔裡面當中
127.0.1.1 idsl-hdpX 都把他註解掉
然後下列的ip也修改成您所說的那樣
之後再跑一次程式 就不會出現之前的錯誤了
不曉得是不是hosts當中的hostname 只能對應到一個ip,不曉得是不是這個因素才導致這樣子的情況


這涉及 gethostbyname 函數,由於 Linux 是先去查 /etc/hosts 然後才去查 DNS
所以原本寫的 140.125.84.78 會反解成 idsl-hdp1.local ..... 這在 log 裡面有一些徵兆:

引言回覆:
Wrong FS: hdfs://idsl-hdp1.local:9000/user/idsl/bearoutput/_temporary/...


BearWu 寫:
另外我後來嘗試用java寫入hdfs的檔案 但會有錯誤的樣子
錯誤訊息為:Exception in thread "main" org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=DrWho, access=WRITE, inode="idsl":idsl:Supergroup:rwxr-xr-x
想請問 我若要改hdfs當中的使用權限,是要在設定hdfs的時候改 還是利用他本身提供的lib的code來改該檔案的使用權限嗎?
感謝jazz的回答


請問丟 job 的時候,也是 idsl 這個身分嗎??
從錯誤訊息看起來,您應該是用 Eclipse Plugin 丟 Job 才會遇到這種狀況。
因為 Eclipse Plugin 嘗試用 DrWho 這個身分要去寫入只有 idsl 才有權限寫入的目錄。

引言回覆:
org.apache.hadoop.security.AccessControlException: Permission denied: user=DrWho, access=WRITE, inode="idsl":idsl:Supergroup:rwxr-xr-x


解法一:使用 chmod 指令把權限加大

代碼:
$ hadoop fs -chmod 777 /user/idsl


解法二:重新編譯 Eclipse Plugin 讓它用 idsl 身分丟 Job

參考 Waue 寫的 編譯 hadoop 0.20.1 的 eclipse plugin

- Jazz


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop run程式的時候出現問題
文章發表於 : 2013-08-05, 23:55 
離線

註冊時間: 2011-11-11, 23:41
文章: 79
請教, 我亦碰到類似的 error message :


Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://HB:9000/t1.txt, expected: hdfs://HA:9000
at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:384)
at org.apache.hadoop.hdfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:129)
at org.apache.hadoop.hdfs.DistributedFileSystem.append(DistributedFileSystem.java:175)
at org.apache.hadoop.fs.FileSystem.append(FileSystem.java:682)
at Append.main(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)


我的Hadoop 架構
共二個hadoop 集群:
HA(NN)+A1(DN)
HB(NN)+B1(DN)

每個 node /etc/hosts 皆設定如下:

127.0.0.1 localhost
192.168.2.110 HA
192.168.2.111 A1
192.168.2.112 HB
192.168.2.113 B1

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

core-site.xml

<name>fs.default.name</name>
<value>hdfs://HA:9000</value>


=== 產生 error message 所執行動作: 在 HA 對 HB 做 Append, command 如下:

hadoop@HA:/usr/local/hadoop-1.0.4/my_code$ /usr/local/hadoop-1.0.4/bin/hadoop jar output.jar Append hdfs://HB:9000/t1.txt

Append 沒有成功, 得到一開始的 error message.
Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://HB:9000/t1.txt, expected: hdfs://HA:9000

問題可能會是在...., 不可對其他的 hadoop 做 append ?? 只接受自己對自己?!
error message 最後一句看起來是這樣?! --> expected: hdfs://HA:9000


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop run程式的時候出現問題
文章發表於 : 2013-08-07, 22:55 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
top 寫:
=== 產生 error message 所執行動作: 在 HA 對 HB 做 Append, command 如下:

hadoop@HA:/usr/local/hadoop-1.0.4/my_code$ /usr/local/hadoop-1.0.4/bin/hadoop jar output.jar Append hdfs://HB:9000/t1.txt

Append 沒有成功, 得到一開始的 error message.
Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://HB:9000/t1.txt, expected: hdfs://HA:9000

問題可能會是在...., 不可對其他的 hadoop 做 append ?? 只接受自己對自己?!
error message 最後一句看起來是這樣?! --> expected: hdfs://HA:9000


我想您的問題應該是跟設定有關,因為 hadoop 這隻 bash script 會去讀 ${HADOOP_HOME}/conf 底下的設定檔
並且根據設定檔來決定 namenode 是您指定的 hdfs://HA:9000
因此您在操作 Jar 檔時卻又指定要存取 hdfs://HB:9000
它才會說「預期(expected)」應該是 hdfs://HA:9000

若 output.jar 的 Main Class (Append.class) 有用 genericOptions (新版語法)
代碼:
Generic options supported are
-conf <configuration file>     specify an application configuration file
-D <property=value>            use value for given property
-fs <local|namenode:port>      specify a namenode
-jt <local|jobtracker:port>    specify a job tracker
-files <comma separated list of files>    specify comma separated files to be copied to the map reduce cluster
-libjars <comma separated list of jars>    specify comma separated jar files to include in the classpath.
-archives <comma separated list of archives>    specify comma separated archives to be unarchived on the compute machines.

The general command line syntax is
bin/hadoop command [genericOptions] [commandOptions]

可以用以下指令試試看。
代碼:
hadoop jar output.jar Append -fs hdfs://HB:9000 1.txt


或者複製 ${HADOOP_HOME}/conf 到另一個目錄,如 ${HADOOP_HOME}/conf_HB
修改 ${HADOOP_HOME}/conf_HB/core-site.xml 為 hdfs://HB:9000
然後 export HADOOP_CONF = ${HADOOP_HOME}/conf_HB
再下對應的指令,應該就不會有這個問題了。

- Jazz


回頂端
 個人資料 E-mail  
 
顯示文章 :  排序  
發表新文章 回覆主題  [ 6 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 2 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
正體中文語系由 竹貓星球 維護製作