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

时间:2015-02-02 16:45:23

标签: hadoop

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

运行代码
yarn jar [jar]

我已经开始工作了,但我想做的是以编程方式动态地将代码传递给hadoop。换句话说,我有一些java代码正在进行一些处理,我想将一些处理工作转移到正在运行的hadoop集群,得到答案并将其合并到我正在运行的java代码中。我确定有办法做到这一点 - 抱歉没有在文档中找到它。我有什么选择?

非常感谢。

编辑澄清:我说的是说你有一个网络应用程序,例如,有人可以去一个网页,输入一些文本,该文本成为一些hadoop工作的参数,就像它可能成为一个在群集上执行的文本搜索,结果返回给用户。然后你需要一些方法通过某种客户端界面与hadoop进行通信,而不是创建一个jar并将jar提交给hadoop?

1 个答案:

答案 0 :(得分:0)

http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Example:_WordCount_v1.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);
}