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

运行hadoop报错

2015-08-01 11:43 183 查看
一:找不到内部类的问题

java.lang.ClassNotFoundException:com.test.WordCount$TokenizerMapperat                       org.apache.hadoop.conf.Configuration.getClass(Configuration.java:809)

at org.apache.hadoop.mapreduce.JobContext.getMapperClass(JobContext.java:157)




如果你在 conf.set("mapred.job.tracker","000.000.000.000:9001"); 的话就会产生内部类的问题,如果你有解决的方案请告诉我。我也没有解决。 谢谢

这里改成 conf.set("fs.default.name","hdfs://000.000.000.000"9000"); 就不会产生错误内部类的问题了。。。


二:错误现象: WARN mapred.LocalJobRunner: job_local_0001

java.lang.OutOfMemoryError: Java
heap space

at
org.apache.hadoop.mapred.MapTask$MapOutputBuffer.(MapTask.java:781)

at
org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:350)

………..

原因:客户端程序运行时java虚拟机内存分配不够

解决办法:修改run
configuration,选择Arguments选项卡,在VM
arguments栏中加入-Xmx1024m,保存即可解决问题。



三: 错误现象:org.apache.hadoop.security.AccessControlException:
Permission denied: user=administrator, access=EXECUTE, inode="job_201111031322_0003":heipark:supergroup:rwx-.

原因:本地用户administrator(本机windows用户)想要远程操作hadoop系统,没有权限引起的。

解决办法:

i、如果是测试环境,可以取消hadoop
hdfs的用户权限检查。打开conf/hdfs-site.xml,找到 dfs.permissions属性修改为false(默认为true)OK了。

ii、修改hadoop
location参数,在advanced parameter选项卡中,找到hadoop.job.ugi项,将此项改为启动hadoop的用户名即可。

四:运行期间出现这个错误



错误信息很明显了,at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:682) 这一行的方法报错了

网上查到这是由于0.20.203.0以后的版本的权限认证引起的,只有去掉才行

修改hadoop源代码,去除权限认证,修改FileUtil.java的checkReturnValue方法

(具体做法:在hadoop中找到源码 hadoop/src/core/fs 文件夹导入eclipse 工程下。找到 FileUtil.java类,找到 checkReturnValue方法 屏蔽掉有关于这个方法和这个方法的所有调用)保存即可。



排除以上所有错误,运行终于成功!










内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: