运行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方法 屏蔽掉有关于这个方法和这个方法的所有调用)保存即可。
排除以上所有错误,运行终于成功!
相关文章推荐
- openssl生成私钥公钥的步骤
- Linux crontab 详细介绍及执行php
- Servlet之doGet()和doPost()方法区别和联系【入门版,初学者必看】
- Linux不能获取ip地址
- linux -- 个人笔记
- 如何搭建一个linux服务器
- HDU5336 XYZ and Drops 暴力模拟
- Win7升级成Win10后VMware安装CentOS不能联网的解决办法
- linux下安装交叉编译器
- Linux(Ubuntu发行版本)下的几种软件安装方式
- linux环境变量设置错误后,如何恢复解决方案:
- 模板维护-模板解析
- 模板维护-模板解析
- nginx的优化
- [翻译]用 Puppet 搭建易管理的服务器基础架构(3)
- Nginx fastcgi_param解释
- Rings'n'Ropes (Uva 10985 floyd+枚举)
- Linux下搭建/使用vsftpd服务器
- OpenCV——颜色均匀渐变
- linux初学(十九)之系统启动详解