您的位置:首页 > 运维架构

我遇到的hadoop错误和解决方法汇总

2014-02-09 20:50 357 查看
http://heipark.iteye.com/blog/786302

==================================

windows cygwin环境下,遇到这个错误:org.apache.hadoop.security.AccessControlException: Permission denied: user=cyg_server, access=EXECUTE, inode="job_201010161322_0003":heipark:supergroup:rwx------



解决:刚开始还使用“./bin/hadoop dfs -chmod 777 ”,后来发现老是这样设置麻烦。可以取消hadoop hdfs的用户权限检查。打开conf/hdfs-site.xml,找到dfs.permissions属性修改为false(默认为true)OK了。注意生产环境处于安全考虑不要这么搞。



==================================

window下使用eclipse开发hadoop程序遇到的问题。

现象一:“DFS Locations”无法浏览DFS中文件,报错

Cannot connect to the Map/Reduce location: heipark

Call to localhost/127.0.0.1:9000 failed on local exception: java.io.EOFException

现象二:启动自己编写的mapred程序报相同错误。



原因:Hadoop服务端版本和eclipse插件版本不一致



解决:倒腾了好几个版本eclipse和hadoop插件,有的点击没反应,不能浏览文件系统。最后整理了一下有两个办法:

一:自己编译eclipse plugin(自己尝试编译0.21.0版本没有成功。首选遇到包的依赖问题,接着编译成功后,eclipse右键创建还是没有响应)

二:我使用0.21.0自带的eclipse plugin在多个eclipse都不好用,在网上下了一个可以3.3,,3.4,3.5都可以跑的hadoop-0.20.3-dev-eclipse-plugin.jar(http://code.google.com/p/hadoop-eclipse-plugin/downloads/list),但是报上面的错误,有网友说是插件和hadoop版本不一致导致的。最后我下载了一个0.20.2版本hadoop,使用自带的插件在eclipse3.3.2下完美运行。



==================================

Namenode报错:“jobtracker.info could only be replicated to 0 nodes, instead of 1”

DateNode报错java.io.IOException: Incompatible namespaceIDs错误



原因:由于DateNode一段时间未启动,再次启动与NameNode数据不同步导致。



解决一:修改/dfs/data/current/VERSION文件中namespaceID值,保证NameNode和DateNode一致。修改原则:如果你有多个DateNode需要都需要修改,那就修改NameNode;否则就修改NameNode。总之就是最小化修改原则。这样修改不会删除数据,推荐。



解决二:删除有问题datenode的data文件夹,然后format namenode。

参考:http://forum.hadoop.tw/viewtopic.php?f=4&t=43



==================================

在windows eclipse开发环境提交job到远处linux hadoop集群,运行mapred报错“IOException: Cannot run program "chmod": CreateProcess error=2



原因:安装cygwin,而且需要设置"cygwin\bin"到环境变量PATH中



==================================

运行hive0.6.0报如下错误:

Invalid maximum heap size: -Xmx4096m

The specified size exceeds the maximum representable size.

Could not create the Java virtual machine.

修改“hive-0.6.0/bin/ext/util/execHiveCmd.sh”



HADOOP_HEAPSIZE=4096 为

HADOOP_HEAPSIZE=256



==================================

使用java client运行hive官方《 Getting Started Guide》中apachelog例子报错:



ClassNotFoundException: org.apache.hadoop.hive.contrib.serde2.RegexSerDe



hive没有找到hive-contrib-0.7.0.jar吗?这个jar明明在lib下,解决办法如下:



vi hive-default.xml



<property>

<name>hive.aux.jars.path</name>

<value>file:///home/hadoop/hive-0.7.0/lib/hive-contrib-0.7.0.jar</value>

</property>

再次启动Hive Thrift Server,OK了。



参考资料:http://web.archiveorange.com/archive/v/S2z2uyzt6K4HGoJJbSUy
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐