MaxTemperature程序Mapper ClassNotFoundException

错误: 执行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");

然后打包,运行,不算完美的解决~~~~

 

转载于:https://www.cnblogs.com/caiyao/p/5137444.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值