运行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