一、报错信息:Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out
错误描述:把Hadoop集群架设好以后,运行TestDFSIO基准测试,发现总是可以map成功,但是reduce总是卡在某个位置13%、11%、16%等,等待七分钟左右,输出信息Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out。
原因分析:由于是在局域网中通信,使用的是主机名,主机名如果无法解析,则DataNode彼此无法找到对方,使得数据快无法复制,从而产生上述问题。
解决办法:在/etc/hosts文件中加入主机名和IP地址的映射
例如:我的hosts文件为:
127.0.0.1 localhost
192.168.1.2 chw-desktop2
192.168.1.3 chw-desktop
192.168.1.4 chw-ProLiant-DL380-G4
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
修改所有节点的hosts信息,搞定!!!困扰了好久,好久啊~~~
错误描述:datanode无法正常启动,日志文件报上面的错。
原因分析:Namenode上namespaceID与datanode上namespaceID不一致。每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,所以造成namenode节点上的namespaceID与datanode节点上的namespaceID不一致。启动失败。
解决办法:
(1)停掉集群服务
(2)在出问题的datanode节点上删除data目录,data目录即是在hdfs-site.xml文件中配置的dfs.data.dir目录,如果没有配置则存放在/tmp底下,可以把/tmp底下的所有带Hadoop字样的文件和文件夹全部删除。
(3)格式化namenode.
(4)重新启动集群。
问题解决。
三、报错信息:org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=DrWho, access=WRITE, inode="hadoop":hadoop:supergroup:rwxr-xr-x
错误描述:从windows底下访问hadoop集群,报上述错误。
原因分析:Hadoop有权限限制,固定的用户组只能访问固定的文件,windows底下的用户访问hadoop,没有相关权限。
解决办法:在hdfs-site.xml中加入如下属性:
<property> <name>dfs.permissions</name> <value>false</value> <description> If "true", enable permission checking in HDFS. If "false", permission checking is turned off, but all other behavior is unchanged. Switching from one parameter value to the other does not change the mode, owner or group of files or directories. </description> </property>
PS:上述方法会降低Hadoop的安全性