读书人

运行Hadoop遇到的有关问题

发布时间: 2012-07-05 07:59:18 作者: rapoo

运行Hadoop遇到的问题

1, 伪分布式模式不能用root??

?????? 以root执行start-all.sh出现

?????? localhost: Unrecognized option: -jvm

?????? localhost: Could not create the Java virtual machine.

?????? 下面是别人的解决方案:(可以修改的地方有两个)

?????? 第一个(次要的):$HADOOP_HOME/conf/hadoop-env.sh

?????  ? 修改参数: export HADOOP_HEAPSIZE=256 #默认值为1000M,为Java虚拟机占用的内存的大小

?????? 第二个(主要的):查看$HADOOP_HOME/bin/hadoop 源码:

????????????? if [[ $EUID -eq 0 ]]; then

????????????? HADOOP_OPTS="$HADOOP_OPTS -jvm server $HADOOP_DATANODE_OPTS"

????????????? else

????????????? HADOOP_OPTS="$HADOOP_OPTS -server $HADOOP_DATANODE_OPTS"

????????????? fi

?????? 如果以root身份启动,则hadoop启动java虚拟机时,会带上-jvm参数。

?????? 不同的java版本,启动参数可能会不一致,由此导致以上问题。

?

2, 当配置成伪分布式模式时为何不能用单机模式了??

?????? (条件:/lzh/input存在,hdfs中不存在input)

?????? 当执行hadoop jar /usr/hadoop-1.0.1/hadoop-examples-1.0.1.jar wordcount input output?出错,

   提示为:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://localhost:9000/user/input

?????? 原因:当配置成伪分布式模式后,操作都是在hdfs中进行的。

?

3, 启动不了namenode。查看日志中:

?????? ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException:

????????????? Incompatible namespaceIDs in /home/admin/joe.wangh/hadoop/data/dfs.data.dir:

??????????????namenode namespaceID = 898136669; datanode namespceID = 21274440a65

?????? 原因:多次执行hadoop namenode format,每次namenode format会重新创建一个namenodeId,

     而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,

     但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下的所有目录.

?

4, 在格式化namenode时出现以下问题:

?????? ERROR namenode.NameNode: java.io.IOException: Cannot create directory /tmp/hadoop-lzh/dfs/current

?????? 请注意 /home/hadoop 的权限,因为您用的是user身份,理论上无法写入/home/hadoop

?????? #########################

?????? 解法一:帮 /home/hadoop 加入其他使用者也可以写入的权限

????????????? sudo chmod -R a+w /home/hadoop/tmp

?????? 解法二:改用 user 身份可以写入的路径 hadoop.tmp.dir 的路径 - 修改 core-site.xml

????????????? <property>

???????????????????? <name>hadoop.tmp.dir</name>

???????????????????? <value>/tmp/hadoop-${user.name}</value>

????????????? </property>

?????#########################?

???? 上面是别人的做法,我的做法是用root权限:chmod? 757? /tmp。问题解决。

?

5, 安装hadoop-1.0.1后,执行命令出现$HADOOP_HOME is deprecated.

  这不是错误,可以修改bin/hadoop-config.sh,注释掉$HADOOP_HOME is deprecated的内容

?

6, 向hdfs添加文件或删除文件时,出现Name node is in safe mode错误:

??????rmr: org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name node is in safe mode

??????解决的命令:

    #关闭safe mode

    bin/hadoop dfsadmin -safemode leave

更多信息请查看?java进阶网?http://www.javady.com

读书人网 >开源软件

热点推荐