【发布时间】:2015-06-25 18:57:10
【问题描述】:
我可以在 Hadoop 上找到的所有介绍性教程和文档都有简单/人为(字数统计风格)的示例,其中每个示例都由以下人员提交给 MR:
- SSH 进入 JobTracker 节点
- 确保包含 MR 作业的 JAR 文件位于 HDFS 上
- 运行
bin/hadoop jar share/hadoop/mapreduce/my-map-reduce.jar <someArgs>形式的 HDFS 命令,它实际上运行 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 集成。当然,类似于我上面的伪代码 sn-p 的 something 用于启动 MR 作业并获取其结果。 这是什么?
【问题讨论】: