加载中…
个人资料
凤凰牌老熊
凤凰牌老熊
  • 博客等级:
  • 博客积分:0
  • 博客访问:46,788
  • 关注人气:19
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

hadoop常见错误及解决

(2011-08-12 16:18:35)
标签:

it

分类: 云计算
1. bin/start-all.sh出现Permission Denied错误,无法启动

问题很奇怪,重装sshd,重新配置hadoop,即可以了。

2. 使用hadoop fs -put上传文件时报错:“jobtracker.info could only be replicated to 0 nodes, instead of 1” DateNode报错java.io.IOException: Incompatible namespaceIDs错误

原因:由于DateNode一段时间未启动,再次启动与NameNode数据不同步导致。

停止hadoop, 删除有问题datenode的data文件夹,然后重新format namenode。

3.在cygwin上执行wordcount时报FileNotFoundException

将mapred-site.xml中的mapred.child.tmp修改为D:/hadoop/tmp(当然也可以为其它目录),并在运行hadoop之前创建好它,目录权限设置为wxr,它的默认值为./tmp,使用默认值就会报FileNotFound错误。

4. org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name node is in safe mode
说明Hadoop的NameNode处在安全模式下。
在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
现在就清楚了,那现在要解决这个问题,我想让Hadoop不处在safe mode 模式下,能不能不用等,直接解决呢?
答案是可以的,只要在Hadoop的目录下输入:
bin/hadoop dfsadmin -safemode leave
也就是关闭Hadoop的安全模式,这样问题就解决了。

Retrying connect to server: localhost/127.0.0.1

运行某些命令时会遇到这样的问题,系统提示:

Retrying connect to server: localhost/127.0.0.1:xxxx. Already tried x time(s).

确认start-all.sh命令执行时没有错误,而且namenode也被格式化了。之后检查如下文件:

conf/core-site.xml,确认

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

<final>true</final>

</property>

和conf/master conf/slaves的配置,是一致的,不能有些地方写机器名,有些地方写IP

5.org.apache.hadoop.ipc.Server: IPC Server handler 2 on 8670, call addBlock(/port.log, DFSClient_-2053534215) from 127.0.0.1:55505: error: java.io.IOException: File /port.log could only be replicated to 0 nodes, instead of 1

namenode,datanode,jobtrack等5个节点正常启动,就在往hadoop上放文件的时候,系统出错。比如执行

hadoop fs -put port.log /

在namenode日志中出现如下错误:
java.io.IOException: File /port.log could only be replicated to 0 nodes, instead of 1
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1271)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422)
    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.ipc.RPC$Server.call(RPC.java:508)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)

问题是由于hadoop的权限机制导致的。安装hadoop的用户和执行用户不一致。简单可以如下处理:

hadoop fs -chmod -R 777 /

即将所有权限打开。同时注意,${dfs.name.dir}, ${dfs.data.dir} 也要把权限打开

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有