我通常用main方法制作一个可执行的jar包,并通过命令行“hadoop jar some.jar classwithmain input output”运行
在这个main方法中,可以配置作业和配置,并且配置类有一个setter来指定Map器或reducer类,比如conf.setmapperclass(mapper.class)。
但是,在远程提交作业的情况下,我应该设置jar和mapper或更多类来使用hadoop客户机api。
job.setJarByClass(HasMainMethod.class);
job.setMapperClass(Mapper_Class.class);
job.setReducerClass(Reducer_Class.class);
我想以编程方式将jar-in-client传输到远程hadoop集群,并像“hadoopjar”一样执行这个jar命令,使main方法指定mapper和reducer。
那么我该如何处理这个问题呢?
1条答案
按热度按时间voj3qocg1#
hadoop
只是一个shell脚本。最终,hadoop jar
将调用org.apache.hadoop.util.RunJar
. 什么hadoop jar
你要做的就是帮你设置CLASSPATH
. 所以你可以直接使用它。例如,
但是,您需要设置
CLASSPATH
正确使用前。获得正确答案的便捷方法CLASSPATH
是hadoop classpath
. 键入此命令,您将获得完整的CLASSPATH
.然后设置
CLASSPATH
在运行java应用程序之前。例如,