簡體   English   中英

Mac OS X上的Hadoop'HadoopIllegalArgumentException:必須為XAttr名稱添加前綴'錯誤

[英]Hadoop on Mac OS X 'HadoopIllegalArgumentException: An XAttr name must be prefixed' error

今天,我嘗試按照在本地OSX設置Hadoop 2.4和Pig 0.12中的說明在Mac OS X Lion上安裝Hadoop。

我已經正確設置了

JAVA_HOME = /庫/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home設置〜/ .bash_profile和.bashrc

並使用brew成功安裝了最新版本的Hadoop(2.6.0),並相應地編輯了這4個配置文件: hdfs.site.xml,core-site.xml,mapred-site.xml,yarn-site.xml

但是運行:

./bin/hdfs namenode -format

得到:

15/01/29 17:42:01 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = Venuses-Mac-mini.local/192.168.1.51
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.6.0
STARTUP_MSG:   classpath = /usr/local/Cellar/hadoop/2.6.0/libexec    /etc/hadoop:/usr/local/Cellar/hadoop/2.6.0/libexec/share/hadoop/common    /lib/activation-1.1.jar <TRUNCATED - Big Chunk of Code Containing .jar Filenames> 
STARTUP_MSG:   build = https://git-wip-us.apache.org/repos    /asf/hadoop.git -r e3496499ecb8d220fba99dc5ed4c99c8f9e33bb1; compiled by 'jenkins' on 2014-11-13T21:10Z
STARTUP_MSG:   java = 1.6.0_29
<TRUNCATED - Big Chunk of .jar Filnames TRUNCATED>
************************************************************/
15/01/29 17:42:01 INFO namenode.NameNode: registered UNIX signal    handlers for [TERM, HUP, INT]
15/01/29 17:42:01 INFO namenode.NameNode: createNameNode [-format]
2015-01-29 17:42:02.551 java[1016:1903] Unable to load realm info     from SCDynamicStore
15/01/29 17:42:02 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Formatting using clusterid: CID-aaa7a5a6-3e82-4166-8039-16046f1b4761
<TRUNCATED>
15/01/29 17:42:03 ERROR namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.HadoopIllegalArgumentException: An XAttr name must  be  prefixed with user/trusted/security/system/raw, followed by a '.'
at org.apache.hadoop.hdfs.XAttrHelper.buildXAttr(XAttrHelper.java:72)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.<init>(FSDirectory.java:137)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:894)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:755)
at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:934)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1379)
at   org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1504)
15/01/29 17:42:03 INFO namenode.FSNamesystem: Stopping services started for active state
15/01/29 17:42:03 INFO namenode.FSNamesystem: Stopping services started for standby state
15/01/29 17:42:03 FATAL namenode.NameNode: Failed to start namenode.
<TRUNCATED>
15/01/29 17:42:03 INFO util.ExitUtil: Exiting with status 1
15/01/29 17:42:03 INFO namenode.NameNode: SHUTDOWN_MSG: 

我的Mac上安裝了2個Java版本Hadoop使用較舊的版本1.6.0_29,而不是當前版本1.7.0_72。 我不知道讓Hadoop考慮當前的Java版本很熱門。

注意:我在Google上進行了廣泛的搜索,找不到針對此特定錯誤的解決方案。

謝謝。

在Terminal Shell中運行以下命令會得到什么?

/usr/libexec/java_home

如果返回1.6 JDK,則可能是hadoop正在使用該命令來確定要使用哪個Java。 例如,可能正在發生的一個地方是文件'/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/hadoop-env.sh'。 第25行是:

export JAVA_HOME="$(/usr/libexec/java_home)"

嘗試將其更改為:

export JAVA_HOME="$(/usr/libexec/java_home -v1.7)"

為了將JAVA_HOME設置為1.7 JDK。 也可能是其他的hadoop文件正在做類似的事情來查找Java。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM