【问题标题】:How does Hadoop actually accept MR jobs and input data?Hadoop 是如何实际接受 MR 作业和输入数据的?
【发布时间】:2015-06-25 18:57:10
【问题描述】:

我可以在 Hadoop 上找到的所有介绍性教程和文档都有简单/人为(字数统计风格)的示例,其中每个示例都由以下人员提交给 MR:

  1. SSH 进入 JobTracker 节点
  2. 确保包含 MR 作业的 JAR 文件位于 HDFS 上
  3. 运行 bin/hadoop jar share/hadoop/mapreduce/my-map-reduce.jar <someArgs> 形式的 HDFS 命令,它实际上运行 Hadoop/MR
  4. 从命令行读取 MR 结果或打开包含结果的文本文件

尽管这些示例非常适合向新手展示如何使用 Hadoop,但它并没有向我展示 Java 代码如何在 API 级别实际与 Hadoop/MR 集成。我我有点期待:

  1. Hadoop 公开了某种客户端访问/API,用于向集群提交 MR 作业
  2. 作业完成后,一些异步机制(回调、侦听器等)会将结果报告回客户端

所以,类似的东西(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 集成。当然,类似于我上面的伪代码 sn-p 的 something 用于启动 MR 作业并获取其结果。 这是什么?

【问题讨论】:

    标签: java hadoop


    【解决方案1】:

    总之,可以使用 Oozie 调度程序启动 MR 作业。但在此之前,您编写了一个 map reduce 作业。它具有作为工作起点的驱动程序类。您在 Driver 类中提供作业运行所需的所有信息:如 map 输入、mapper 类、如果有分区器、配置详细信息和 reducer 详细信息。

    一旦这些存在于 jar 文件中,并且您使用 CLI 启动上述工作(hadoop jar)(实际上 oozie 是这样做的),其余的由 Hadoop 生态系统处理。希望我回答了你的问题

    【讨论】:

    • 感谢@Ramzy (+1) 但这真的是真的吗?!?您告诉我运行 Hadoop 的唯一方法是:(1) 从命令行手动启动它,或者 (2) 调度 MR 作业运行?!?你是说没有办法实际运行它,按需运行?!?说不是这样!
    • "on-the-fly" - 这个词很重要。 Hadoop专为大规模批处理而设计。所以这本身就是这么说的。而且我不认为,“运行 Hadoop”这句话是正确的。因为它是执行这项工作的生态系统。如果您具有 Web 应用程序背景,我理解“即时”的事情。这里是另一个世界。有数据和分析。有些人必须开始对数据进行分析的工作。实时流媒体世界中“on the fly”短语的另一个含义。最终,会有不同的技术集来处理该要求,例如 Storm、Spark 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多