Hadoop:在Ubuntu 12.04上通过NameNode格式化HDFS文件系统

3

我正在跟随这个教程http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/

注意:我知道我已经安装了hadoop到/usr/local/hadoop/hadoop/,但是教程中没有提到。

当我运行:

hduser@ubuntu:~$ /usr/local/hadoop/hadoop/bin/hadoop namenode -format

I get

Warning: $HADOOP_HOME is deprecated.

/usr/local/hadoop/hadoop/bin/hadoop: line 320: /usr/lib/jvm/java-6-sun/bin/java: No such  file or directory
/usr/local/hadoop/hadoop/bin/hadoop: line 390: /usr/lib/jvm/java-6-sun/bin/java: No such file or directory

代替
hduser@ubuntu:/usr/local/hadoop$ hadoop/bin/hadoop namenode -format
10/05/08 16:59:56 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = ubuntu/127.0.1.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.20.2
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches    /branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
10/05/08 16:59:56 INFO namenode.FSNamesystem: fsOwner=hduser,hadoop
10/05/08 16:59:56 INFO namenode.FSNamesystem: supergroup=supergroup
10/05/08 16:59:56 INFO namenode.FSNamesystem: isPermissionEnabled=true
10/05/08 16:59:56 INFO common.Storage: Image file of size 96 saved in 0 seconds.
10/05/08 16:59:57 INFO common.Storage: Storage directory .../hadoop-hduser/dfs/name has    been successfully formatted.
10/05/08 16:59:57 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1
************************************************************/

在 /usr/local/hadoop/hadoop/bin/hadoop 的代码中,第 320 行是:
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS}           
org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`

第390行是:

    exec "$JAVA" -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"

有什么办法可以解决这个问题吗?
2个回答

2
我可以看到以下文件:/usr/lib/hadoop-0.20/bin/hadoop-config.sh(Cloudera安装)。
在这里,我可以看到它在以下位置搜索Java:
# attempt to find java
if [ -z "$JAVA_HOME" ]; then
  for candidate in \
    /usr/lib/jvm/java-6-sun \
    /usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/ \
    /usr/lib/jvm/java-1.6.0-sun-1.6.0.* \
    /usr/lib/j2sdk1.6-sun \
    /usr/java/jdk1.6* \
    /usr/java/jre1.6* \
    /Library/Java/Home \
    /usr/java/default \
    /usr/lib/jvm/default-java ; do
    if [ -e $candidate/bin/java ]; then
      export JAVA_HOME=$candidate
      break
    fi
  done

你的JAVA_HOME设置正确吗?你可以手动设置一下,然后再尝试运行它。
[编辑:基于评论]
1. 检查JAVA_HOME是否设置:`echo $JAVA_HOME` 2. 找出jvm所在位置,通常在:`/usr/lib/jvm/java-6-sun/` 3. 然后进行设置。编辑bashrc和bash_profile:`vi ~/.bashrc`或`vi ~/.bash_profile` 4. 添加以下内容:`export JAVA_HOME=/usr/lib/jvm/java-6-sun/` 5. 注意路径应该基于你找到jvm的位置。

我刚刚手动编辑了 /usr/local/hadoop/hadoop/bin/hadoop 的代码,以使其查找正确的JDK。 - user1047260
@user1047260:要检查环境变量,请输入echo $JAVA_HOME。如果没有设置,您将需要设置它。 - pyfunc
@user1047260:已添加到我的回复中。 - pyfunc
@user1047260:不要直接编辑Hadoop脚本。这样做不是一个好主意。 - pyfunc

1

将您的JAVA_HOME重置到拥有Java目录的路径上,通过在文件hadoop(在上面给定的路径中)的hadoop/bin中添加这行代码:

export JAVA_HOME=/home/hduser/jdk1.7.0_07

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接