如何以编程方式启动hadoop作业?

3okqufwl  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(289)

我是hadoop新手。在我读过的教程中,您将代码打包到一个jar中,然后通过

yarn jar [jar]

我有这个工作,但我想做的是通过编程,动态传递代码到hadoop。换句话说,我有一些正在进行处理的java代码,我想将这些处理的一部分转移到一个正在运行的hadoop集群中,得到答案并将其合并到我正在运行的java代码中。我肯定有办法做到这一点-抱歉没有找到它的文件。我有什么选择?
非常感谢。
编辑澄清:我说的是假设你有一个web应用程序,例如,某人可以去一个网页,输入一些文本,该文本成为一些hadoop工作的参数,比如它可能成为在集群上完成的文本搜索的一部分,结果返回给用户。那么您需要某种方式通过某种客户机接口与hadoop通信,而不是创建jar并将jar提交给hadoop?

wnavrhmk

wnavrhmk1#

http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapreducetutorial.html#example:uWordCountv1.0演示了如何通过java实现这一点,关键部分是 main 方法:

public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    Job job = Job.getInstance(conf, "word count");
    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    FileInputFormat.addInputPath(job, new Path(args[0]));
    FileOutputFormat.setOutputPath(job, new Path(args[1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
}

相关问题