本人在hadoop集群部署及学习中遇到的错误总结。
1 hadoop启动时,在NameNode节点上用jps命令查看,没有namenode和resourcemanager进程:
清空主节点dfs下的namenode和datanode文件。
查看hadoop日志文件,一般在安装目录下的logs文件夹,如果日志中信息较少,可以使用sz命令下载到本地,可能会发现更多日志信息(本人遇到的情况是这样的。。)
2关于hadoop三种运行模式
单机模式:hadoop下载下来默认就是单机配置,不用做任何修改即可运行。单机配置即单Java进程,这种模式下方便进行调试。此时读取的是本地数据。
伪分布式:在单节点上以伪分布式的方式运行。即hadoop进程以分离的Java进程来运行。单节点即作为namenode又作为datanode,此时读取的是hdfs上的文件。伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。
完全分布式(集群环境):集群/分布式模式需要修改hadoop 中的5个配置文件, slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。
注意:hdfs-site.xml中的dfs.replication属性默认值为3,这个值是和你的集群中datanode的数量一致的。如果只有一个节点作为datanode,那就修改为1.
3 hdfs传文件失败或者hdfs dfsadmin -report命令查看没有 live datanodes
这个错曾经困扰我一周之久,在网上百度了各种办法。我当时是一个主节点一个从节点,hadoop启动后,在主从节点上用jps命令查看,进程都是正常的。但是用hdfs dfsadmin -report 命令查看,各种指标都显示为0,且live datanodes为0,。此时可以正常使用hadoop fs -ls查看命令,但是向hdfs上传文件就会报错。附上错误图示两张。
图1
图2
我的错误原因是有两个,一是防火墙没有关闭,最好把几个节点的防火墙都关闭掉。关闭防火墙命令:sudo ufw disable(ubuntu下)。而是因为datanode节点ping不通namenode节点。切记一定要保证主从节点之间可以相互ping通,这是最起码的。还有就是如果启动了yarn的话,最好让从节点也可以无密码登录到主节点。
还有在网上百度到的一些错误,后面会附上参考链接,可供大家参考。
正常集群启动成功的话,jps命令查看进程显示正确,然后用hdfs dfsadmin -report命令查看显示如下:
此时再向hdfs上传文件就没有问题了。而且在web上可以也可以正常查看集群信息。
4 hadoop启动时,最好不要用start-all.sh来启动,建议使用start-dfs.sh,start-yarn.sh来分别启动
5 用eclipse远程连接hadoop时,上传文件提示权限不够或者处于safenode安全模式
上传文件没有权限,假设你要上传文件到/user/hadoop下,可以使用命令hadoop fs -chmod 777 /user/hadoop 来修改权限。
关掉安全模式:hdfs dfsadmin -safemode leave。
附上本人百度到的hadoop一些常见的错误及解决办法
- http://myhadoop.iteye.com/blog/2044564
- http://blog.youkuaiyun.com/wang_zhenwei/article/details/48027063