我通常使用 main 方法制作一个可执行的 jar 包,并通过命令行“hadoop jar Some.jar ClassWithMain 输入输出”运行
在这个 main 方法中,可以配置 Job 和 Configuration,并且 Configuration 类有一个 setter 来指定 mapper 或 reducer 类,如 conf.setMapperClass(Mapper.class)。
但是,在远程提交作业的情况下,我应该设置 jar 和 Mapper 或更多类来使用 hadoop 客户端 api。
job.setJarByClass(HasMainMethod.class);
job.setMapperClass(Mapper_Class.class);
job.setReducerClass(Reducer_Class.class);
我想以编程方式将客户端中的 jar 传输到远程 hadoop 集群并像“hadoop jar”命令一样执行这个 jar,以使 main 方法指定映射器和减速器。
那么我该如何处理这个问题呢?