分享:32个Hadoop问题及解决方案
1、问题:
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的可以下载下面这个:
http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.6.0.tar
(2)下载完以后,解压到hadoop的native目录下,覆盖原有文件即可。操作如下:
- tar -x hadoop-native-64-2.4.0.tar -C hadoop/lib/native/
2、hadoop HA namenode 无法启动错误
问题:
- 2014-12-15 14:27:55,224 INFO org.apache.hadoop.hdfs.server.namenode.FSImage: No edit log streams selected.
- 2014-12-15 14:27:55,300 ERROR org.apache.hadoop.hdfs.server.namenode.FSImage: Failed to load image from FSImageFile(file=/usr/hadoop/tmp/dfs/name/current/fsimage_0000000000000030732, cpktTxId=0000000000000030732)
- java.io.IOException: Premature EOF from inputStream
- at org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:194)
- at org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:221)
- at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:913)
- at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:899)
- at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:722)
- at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:660)
- at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:279)
- at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:955)
- at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:700)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:529)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:585)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:751)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:735)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1407)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1473)
- 2014-12-15 14:27:55,438 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
- java.io.IOException: Failed to load an FSImage file!
- at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:671)
- at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:279)
- at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:955)
- at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:700)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:529)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:585)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:751)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:735)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1407)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1473)
- 2014-12-15 14:27:55,440 INFO org.mortbay.log: Stopped HttpServer2$SelectChannelConnectorWithSafeStartup@HM0:50070
- 2014-12-15 14:27:55,540 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Stopping NameNode metrics system...
- 2014-12-15 14:27:55,541 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system stopped.
- 2014-12-15 14:27:55,541 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system shutdown complete.
- 2014-12-15 14:27:55,541 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join
- java.io.IOException: Failed to load an FSImage file!
- at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:671)
- at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:279)
- at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:955)
- at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:700)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:529)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:585)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:751)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:735)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1407)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1473)
原因:
查看文件大小 fsimage_0000000000000030732 大小为0,而在另一台服务器长度不为0,是这个fsimage文件的问题
解决:
可以从另一台服务器上拷贝该文件,或者删除这个文件及对应的md5文件即可。
建议从其他机器拷贝fsimage文件
3、设置conbinner注意事项
问题:
在使用combiner的时候,出现IntWritable is not Text,或者其他的类型不匹配问题
原因:
这是设置combiner的时候,map输出的keyvalue类型和combiner输出的keyvalue类型不一致导致的。
解决:
如果设置combiner,必须保证一点,map输出的keyvalue类型和combiner输出的keyvalue类型必须一致!!!
4、error:server IPC version 9 cannot communicate with client version 4
问题:
error:server IPC version 9 cannot communicate with client version 4
原因:
(1)如果是在使用插件操作hdfs时报错,是因为,eclipse插件和eclipse的版本不匹配
(2)如果是在执行mapreduce时报错:是因为jar包不匹配
解决:
重新编译hadoop插件,使用自己的hadoop和eclipse版本
5、Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
问题:
Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
原因:
在使用hadoop插件的时候,会在本地找winutils.exe这个文件,而这个文件是hadoop安装包下的文件,必须配置eclipse插件的hadoop的windows本地路径才行。
解决:
配置windows的hadoop环境变量,并且重启机器,让环境变量生效
6、问题: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
7、问题:Too many fetch-failures
原因:
出现这个问题主要是结点间的连通不够全面。
解决:
1) 检查/etc/hosts
要求本机ip对应服务器名
要求要包含所有的服务器ip+服务器名
2) 检查 .ssh/authorized_keys
要求包含所有服务器(包括其自身)的public key
8、问题:处理速度特别的慢 出现map很快 但是reduce很慢 而且反复出现 reduce=0%
解决:
修改 conf/hadoop-env.sh 中的export HADOOP_HEAPSIZE=4000
9、问题:能够启动datanode,但无法访问,也无法结束的错误
原因:
可能原因很多,需要查看日志定位,可能的原因是namespaceId不一致
解决:
(1)删除namenode的本地文件夹:${hadoop}/namedir/*
(2)删除datanode的本地文件夹:${hadoop}/datadir/*
(3)重新格式化
(4)注意:删除是个很危险的动作,不能确认的情况下不能删除!!做好删除的文件等通通备份!!
10、问题:java.io.IOException: Could not obtain block: blk_194219614024901469_1100 file=/user/hive/warehouse/src_20090724_log/src_20090724_log
原因:
出现这种情况大多是结点断了,没有连接上。
解决:
检查datanode是否有宕机情况,恢复

时间:2018-10-10 22:29 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
相关文章:
相关推荐:
网友评论: