MaxTemperature程序Mapper ClassNotFoundException
2024-10-10 21:52:18
错误: 执行hadoop权威指南上MaxTemperature程序出现Mapper类ClassNotFoundException异常:
解决: 将书上的
JobConf job = new JobConf(MaxTemperature.class) ;
改为:
JobConf job = new JobConf() ; job.setJar("/root/hadoop-resources/code/maxtemperature.jar");
下面是我解决过程:
郁闷一天了,明明照着书(hadoop权威指南)上写的,但是在执行hadoop MaxTemperature 时总是出现Mapper类找不到。
发现可能是环境变量的问题。于是在/etc/profile中配置hadoop环境变量:
export hadoop_HOME="/usr/hadoop"
for f in $hadoop_HOME/hadoop-*.jar; do
HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:$f
done
for f in $hadoop_HOME/lib/*.jar;do
HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:$f
done
export HADOOP_CLASSPATH=".$HADOOP_CLASSPATH"
执行,错误仍然存在。
然后发现网上说是需要打包,我认为应该不需要打包的,书上都没有到打包,我用的hadoop版本和他用的是一样的。但是首先解决问题吧,于是退而求其次。
将生成的class文件打包为jar:
jar -cvf classes/*.class
然后使用:
hadoop jar maxtemperature.jar Maxtemperature input/sample.txt output
执行命令,发现错误依旧。
然后发现网上别人的程序执行就正常了,发现他的jar是放在hadoop安装目录的bin下的。于是我充满疑问的将我的jar复制到bin下,然后执行,好了~~~!!!!
所以这是一种解决方案,将jar复制到hadoop下就可以正常运行了。
但这种方案实在太死板了,最后又在stackoverflow上找到一种方法,书上的示例代码写的是
JobConf job = new JobConf(MaxTemperature.class) ;
改为:
JobConf job = new JobConf() ; job.setJar("/root/hadoop-resources/code/maxtemperature.jar");
然后打包,运行,不算完美的解决~~~~
最新文章
- jquery option
- Win7 安装SQL SERVER 2012需要SP1补丁
- 实现一个 能在O(1)时间复杂度 完成 Push、Pop、Min操作的 栈
- 云存储的那些事(2)——数据分布算法CRUSH
- jQuery.queue源码分析
- Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。
- JS插件excanvas的使用方法
- php中GD库的一些简单使用
- youphp学习整理
- Pure Css 菜单的使用
- uva 12100 Printer Queue
- magento后台登陆后,没任何提示,又跳转到登陆页面
- canvas——随机生成迷宫
- ABP官方文档翻译 6.1.3 异常处理
- Android中典型的ROOT原理(5)
- DELPHI中build和compile有什么区别?
- Win一键查看用户密码
- VC++6.0相对路径无效的解决办法
- How to create Excel file in C#
- Eloquent Observer 的小坑