一、提交jar包到hadoop之后,怎么运行:
hadoop jar /zgm2/wc.jar z1wc.MyRunner /data/wcount /out/zwcount
hadoop jar可以换成yarn jar 如果你设置yarn为mapreduce的默认资源调度平台,那么两个命令是一样的
区别:
hadoop jar 按mr1或yarn运行job,决定是否配置yarn。yarn jar 按yarn方式运行job,必须启动dfs
如果配置了yarn,则两种方式运行效果是一样的,即yarn执行,必须先启动dfs,无需启动yarn,因为会自启动后退出 dfs:start-dfs.sh yarn:start-yarn.sh
二、MR的本地运行
1、将org包放入java目录下
2、job.setJar("d:/word.jar");
(1) 打包将对应的包名改为word.jar
(2) 将word.jar放入对应的目录中
指定jar包所在路径,本地模式需要这样指定,如果不是本地,则使用setJarByClass指定所在class文件即可
3、将log4j文件放在resources
设置运行参数
报错:
Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class hbase_mr.Hdfs2Hbase$MyMapper not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2195)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:745)
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:1657)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.ClassNotFoundException: Class hbase_mr.Hdfs2Hbase$MyMapper not found
解决:
在java代码中添加:job.setJarByClass(XXXXX.class)
三、本地提交,集群运行
一、本地提交,集群运行
1.conf.set("mapreduce.job.jar", "D:\\javaProject\\mr_demo\\target\\mr_demo-1.0.jar");
2.conf.set("fs.defaultFS","hdfs://mini1:9000");//设置文件系统
3.conf.set("mapreduce.app-submission.cross-platform", "true");//设置跨平台提交
4.conf.set("mapreduce.framework.name", "yarn");//设置进行计算的框架是yarn
5.conf.set("yarn.resourcemanager.hostname", "mini1");//设置resourcemanager
6.System.setProperty("HADOOP_USER_NAME","root"); //解决权限问题
这个好像可以不用写了//jar.setjar("wc.jar")