分享

大数据新手遇到的Hadoop常见问题—光环大数据

 xxcc140 2017-07-27

最近老是遇到小伙伴问一些hadoop的问题,在这里把一些hadoop常见的问题及解决方案分享给大数据初学者,如果再遇到同样的问题就对号入座。

一、hadoop安装完以后,在执行命令时,经常会提示一下警告:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...

using builtin-java classes where applicable

原因:

这个跟系统位数有关系,我们平常使用的是Centos 6.5 64位操作系统

解决办法:

(1)如果你是hadoop2.6的可以下载下面这个:

(2)下载完以后,解压到hadoop的native目录下,覆盖原有文件即可。操作如下:

tar -x hadoop-native-64-2.4.0.tar -C hadoop/lib/native/

二、在使用combiner的时候,出现IntWritable is not Text,或者其他的类型不匹配问题

原因:这是设置combiner的时候,map输出的keyvalue类型和combiner输出的keyvalue类型不一致导致的。

解决:如果设置combiner,必须保证一点,map输出的keyvalue类型和combiner输出的keyvalue类型必须一致!!!

三、error:server IPC version 9 cannot communicate with client version 4

原因:

(1)如果是在使用插件操作hdfs时报错,是因为,eclipse插件和eclipse的版本不匹配

(2)如果是在执行mapreduce时报错:是因为jar包不匹配

解决:重新编译hadoop插件,使用自己的hadoop和eclipse版本

四、Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

原因:在使用hadoop插件的时候,会在本地找winutils.exe这个文件,而这个文件是hadoop安装包下的文件,必须配置eclipse插件的hadoop的windows本地路径才行。

解决:配置windows的hadoop环境变量,并且重启机器,让环境变量生效

五、Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out

原因:程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。

解决:

修改2个文件。

/etc/security/limits.conf

vi /etc/security/limits.conf

加上:

* soft nofile 102400

* hard nofile 409600

$cd /etc/pam.d/

$sudo vi login

添加session required /lib/security/pam_limits.so

六、Too many fetch-failures

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

解决:

1) 检查/etc/hosts,要求本机ip对应服务器名,要求要包含所有的服务器ip+服务器名

2) 检查 .ssh/authorized_keys,要求包含所有服务器(包括其自身)的public key

七、处理速度特别的慢 出现map很快 但是reduce很慢 而且反复出现 reduce=0%

解决:修改 conf/hadoop-env.sh 中的export HADOOP_HEAPSIZE=4000

八、能够启动datanode,但无法访问,也无法结束的错误

原因:可能原因很多,需要查看日志定位,可能的原因是namespaceId不一致

解决:

(1)删除namenode的本地文件夹:${hadoop}/namedir/*

(2)删除datanode的本地文件夹:${hadoop}/datadir/*

(3)重新格式化

(4)注意:删除是个很危险的动作,不能确认的情况下不能删除!!做好删除的文件等通通备份!!

九java.io.IOException:Could not obtain block:blk_194219614024901469_1100 file=/user/hive/warehouse/src_20090724_log/src_20090724_log

原因:出现这种情况大多是结点断了,没有连接上。

解决:检查datanode是否有宕机情况,恢复

十、java.lang.OutOfMemoryError: Java heap space

原因:出现这种异常,明显是jvm内存不够得原因,要修改所有的datanode的jvm内存大小。

解决:执行命令

Java -Xms1024m -Xmx4096m

一般jvm的最大内存使用应该为总内存大小的一半,我们使用的8G内存,所以设置为4096m,这一值可能依旧不是最优的值。

十一、单个node新加硬盘

原因:datanode的硬盘不够用了

解决:(1)修改需要新加硬盘的node的dfs.data.dir,用逗号分隔新、旧文件目录(2)重启dfs

十二、hdfs的namenode内存飙升,不够用

原因:可能是上传了过多的小文件

解决:用命令合并HDFS小文件 hadoop fs -getmerge

十三、hadoop OutOfMemoryError

解决:

mapred.child.java.optsname>

-Xmx800M -servervalue>

property>

With the right JVM size in your hadoop-site.xml , you will have to copy this

to all mapred nodes and restart the cluster.

或者:hadoop jar jarfile [main class] -D mapred.child.java.opts=-Xmx800M

十四、Hadoop name -format后Incompatible namespaceIDS 错误解决办法

原因:是格式化namenode后会重新创建一个新的namespaceID,以至于和datanode上原有的不一致。

解决:

(1)删除datanode dfs.data.dir目录(默认为tmp/dfs/data)下的数据文件,

(2)hadoop namenode -format

(3)修改/home/hadoop/data/current/VERSION 文件,把namespaceID修成与namenode上相同即可(log错误里会有提示)

十五、namenode无法启动,不报错

原因:可能原因是:之前用root用户启动过,导致current文件夹的权限和所属用户更改了,需要更改回来

解决:current文件夹位于hadoop安装目录同级目录的tmp/dfs/namesecondary

via:小风IT互动

学大数据,就选光环大数据。16年老品牌,上市公司有保障! 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多