hadoop集群常见问题集锦

hadoop集群常见问题集锦

hadoop集群搭建、使用过程中遇到了很多,特记录下


1、       ERRORorg.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException:Incompatible namespaceIDs 导致datanode启动不了。 no datanode to stop

 

原因:每次namenode format会重新创建一个namenodeId,而data目录包含了上次format时的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败。

 

解决办法:停掉集群,删除问题节点的data目录下的所有内容。即hdfs-site.xml文件中配置的dfs.data.dir目录。重新格式化namenode。

 

另一个办法:先停掉集群,然后将datanode节点目录/dfs/data/current/VERSION中的修改为与namenode一致即可。

 

注意:hadoop搭建完成只能namenode format格式化一次

 

2、如果datanode连接不上namenode,导致datanode无法启动。

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:java.io.IOException: Call to ... failed on local exception:java.net.NoRouteToHostException: No route to host

 

解决方法:关闭防火墙。

注意:最好设置防火墙永久关闭

 

3、从本地往hdfs文件系统上传文件

INFO hdfs.DFSClient: Exception in createBlockOutputStreamjava.io.IOException: Bad connect ack with firstBadLink

INFO hdfs.DFSClient: Abandoning block blk_-1300529705803292651_37023

WARN hdfs.DFSClient: DataStreamer Exception: java.io.IOException: Unableto create new block.

 

解决方法:关闭防火墙: 禁用selinux: 编辑/etc/selinux/config文件,设置“SELINUX=disabled”

 

4、org.apache.hadoop.yarn.exceptions.YarnException: Unauthorizedrequest to start container

问题原因:namenode,datanode时间同步问题

解决办法:多个datanode与namenode进行时间同步,在每台服务器执行:

ntpdate time.nist.gov,确认时间同步成功。

最好在每台服务器的 /etc/crontab 中加入一行:

0 2 * * * root ntpdate time.nist.gov&& hwclock –w

 

注意:集群各台服务器时间一定要同步

 

5每次执行hadoop命令出现

hadoop2.5 WARNutil.NativeCodeLoader: Unable to load native-hadoop library for yourplatform... using builtin-java classes where applicable

输入命令:

export HADOOP_ROOT_LOGGER=DEBUG,console

调试查看信息

查看本机的libc版本

原因:版本是libc-2.12而需要libc-2.14,

 

解决方法:升级下libc。

[hadoop@namenode native]$ tar -jxvf/home/hadoop/download/glibc-2.14.tar.bz2

[hadoop@namenode native]$ cd glibc-2.14/

[hadoop@namenode glibc-2.14]$ tar -jxvf/home/hadoop/download/glibc-linuxthreads-2.5.tar.bz2

[hadoop@namenode glibc-2.14]$ cd .. #必须返回上级目录

[root@namenode native]$ exportCFLAGS="-g -O2"    #加上优化开关,否则会出现错误,必须用root用户

[root@namenode native]$./glibc-2.14/configure --prefix=/usr --disable-profile --enable-add-ons--with-headers=/usr/include --with-binutils=/usr/bin

出现问题:没有c编译器,解决方法:yum install gcc 下载gcc

[root@namenode native]$ make        #编译,执行很久,可能出错,出错再重新执行

[root@namenode native]$ sudo makeinstall   #安装,必须root用户执行

 

升级成功。问题解决

建议:直接安装centos7,不要安装centos6.5,就不用升级libc版本了

Make && make install –j8 //8核加速编译,

 

6org.apache.hadoop.dfs.SafeModeException:Cannot delete ..., Name node is in safe mode

原因:在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。

 

解决方案是:关闭安全模式

hadoop dfsadmin -safemode leave

 

建议:若要修改删除文件,最好启动后等待一会操作

 

7、解决"Too manyfetch-failures"

原因:出现这个问题主要是结点间的连通不够全面。

解决方案是:

1)检查"/etc/hosts"

要求本机ip 对应 服务器名

要求要包含所有的服务器ip +服务器

2)检查".ssh/authorized_keys"

要求包含所有服务器(包括其自身)的publickey

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章