这里将本身在初识hadoop过程当中遇到的一些错误作一个简单总结: java
(一)启动hadoop集群时易出现的错误:node
缘由:master服务器上的防火墙没有关闭。shell
解决方法: 在master上关闭防火墙: chkconfig iptables off.apache
缘由:/etc/hosts中的文件被自动篡改。windows
解决方法: 将/etc/hosts 文件按配置文件要求改回来。安全
缘由:结点间的连通不够全面。服务器
解决方法:app
1) 检查 /etc/hosts要求本机ip对应服务器名,而且包含全部的服务器ip和服务器名。eclipse
2) 检查 .ssh/authorized_keys要求包含全部服务器(包括其自身)的public key。ssh
(二) 在hadoop集群的master中用命令运行例子易出现的故障:
缘由:JVM内存不够。
解决方法:修改mapred-site.xml中mapred.child.java.opts属性的值,其默认值是-Xmx200m 可根据须要适当增大 该值。
解决方法:在NameNode上执行命令:hadoop namenode –format从新格式化HDFS,在格式化以前,须要将你 NameNode上所配置的dfs.name.dir这一namenode用来存放NameNode 持久存储名字空间及事务日志的本地文件系统路径删除,同时将各DataNode上的dfs.data.dir的路径DataNode存放块数据的本地文件系统路径的目录也删除。
缘由:hadoop进入安全模式。
解决方法:在shell中执行命令hadoop dfsadmin -safemode leave 使hadoop离开安全模式。
(三)在windows下Eclipse中运行例子易出现的错误:
1. 错误现象:org.apache.hadoop.security.AccessControlException: Permission denied: user=administrator, access=EXECUTE, inode="job_201111031322_0003":heipark:supergroup:rwx-.
缘由:本地用户administrator(本机windows用户)想要远程操做hadoop系统,没有权限引发的。
解决办法:
i、若是是测试环境,能够取消hadoop hdfs的用户权限检查。打开conf/hdfs-site.xml,找到dfs.permissions属性修改成false(默认为true)OK了。
ii、修改hadoop location参数,在advanced parameter选项卡中,找到hadoop.job.ugi项,将此项改成启动hadoop的用户名便可。
2.错误现象:IOException: Cannot run program "chmod": CreateProcess error=2.
缘由:没有安装cygwin或 没有配置环境变量。 解决办法:安装并配置环境变量 bin到 path下 重启 eclipse 问题便可。
3. 错误现象: WARN mapred.LocalJobRunner: job_local_0001 java.lang.OutOfMemoryError: Java heap space at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:781) at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:350)