java—hadoop实际上如何接受mr jobs和输入数据?

des4xlb0  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(260)

我在hadoop上找到的所有入门教程和文档都有简单的/精心设计的(字数风格)示例,其中每个示例都是通过以下方式提交给mr的:
sshing到jobtracker节点
确保包含mr作业的jar文件在hdfs上
运行窗体的hdfs命令 bin/hadoop jar share/hadoop/mapreduce/my-map-reduce.jar <someArgs> 它实际上运行hadoop/mr
从命令行读取mr结果或打开包含结果的文本文件
尽管这些示例非常适合向新手展示如何使用hadoop,但它并没有向我展示java代码如何在api级别与hadoop/mr集成。我想我有点期待:
hadoop公开了某种客户端访问/api,用于向集群提交mr作业
一旦作业完成,一些异步机制(回调、侦听器等)就会将结果报告给客户机
所以,类似这样的东西(groovy伪代码):

class Driver {
    static void main(String[] args) {
        new Driver().run(args)
    }

    void run(String[] args) {
        MapReduceJob myBigDataComputation = new SolveTheMeaningOfLifeJob(convertToHadoopInputs(args), new MapReduceCallback() {
            @Override
            void onResult() {
                // Now that you know the meaning of life, do nothing.
            }
        })

        HadoopClusterClient hadoopClient = new HadoopClusterClient("http://my-hadoop.example.com/jobtracker")
        hadoopClient.submit(myBigDataComputation)
    }
}

所以我要问:所有入门教程中的简单示例,在这里您可以ssh到节点并从cli运行hadoop,打开文本文件以查看结果……大数据公司确实不能这样与hadoop集成。当然,与我上面的伪代码片段类似的东西被用来启动mr作业并获取其结果。它是什么?

gwbalxhn

gwbalxhn1#

一句话,可以使用oozie调度器启动mr作业。但在此之前,你要写一个Map缩小作业。它有driver类,这是作业的起点。您可以提供在驱动程序类中运行作业所需的所有信息:如map input、mapper class、如果有分区器、config details和reducer details。
一旦这些都在jar文件中,并且您使用cli启动了如上所述的作业(hadoopjar)(实际上是oozie做的),其余的由hadoop生态系统负责。希望我能回答你的问题

相关问题