mapreduce程序运行的两种方式

1)在window系统中的IDE上运行,我用的是idea
conf.set("mapreduce.job.jar", "target/mapreduce_test-1.0-SNAPSHOT.jar");// 程序中必须指定jar包的本地路径 
conf.set("mapreduce.app-submission.cross-platform", "true");// 跨平台提交
还需要添加JVM参数:-DHADOOP_USER_NAME=hadoop

否则会出现用户不一致的权限问题

2)把程序打成jar包,我用的是idea中maven命令package打的包,然后把jar包放到集群中的一个节点上的任意路径下(要有用户访问权限的路径),通过hadoop jar命令执行。
如果是打成jar包的形式放到集群节点上用hadoop jar xxx.jar xxx.xxx.MainClass的形式执行的话,
程序中需要设置 job.setJarByClass(WordMapper.class); 参数中的class可以是这个jar包中的任何一个类,因为这个方法的作用是通过class找到所在的jar包。
如果没有设置setJarByClass()会报Mapper类找不到的错误:
2018-04-09 17:08:32,815 INFO [IPC Server handler 19 on 54605] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Progress of TaskAttempt attempt_1523253342889_0010_m_000000_0 is : 0.0
2018-04-09 17:08:32,841 FATAL [IPC Server handler 20 on 54605] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1523253342889_0010_m_000000_0 - exited : java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.guowei.mapreduce.WordMapper not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2202)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:196)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:751)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1917)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.ClassNotFoundException: Class com.guowei.mapreduce.WordMapper not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2108)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2200)
... 8 more


另外补充一下hadoop jar执行方式,如果是用maven打包并不是可执行的jar文件,需要指定main方法所在类的全路径类名,如果不加全路径类名执行,会报如下错误:

RunJar jarFile [mainClass] args...


参考博客:https://blog.csdn.net/a2011480169/article/details/51834256

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值