Hadoop Streaming作业vs普通作业?

问题描述:

Hadoop Streaming作业和常规java作业有什么区别。对后者使用Hadoop流是否有优势。Hadoop Streaming作业vs普通作业?

还有一两件事,我使用的MapReduce API(即,新API)和我听说的流只适用于过时mapred API。是吗 ?

+0

http://stackoverflow.com/questions/1217850/streaming-data-and-hadoop-not-hadoop-streaming?rq=1 和http://stackoverflow.com/questions/7598422/is-it-更好的使用mapred-the-mapreduce-package-to-create-a-hadoop-job?rq = 1 –

+1

请在发布快速回复之前尝试google.com。 –

Hadoop流式传输对于那些开发人员没有太多Java技术知识并且可以更快地编写Mapper/Reducer的脚本语言来说是非常有利的。

与定制jar作业相比,流作业也会有启动脚本(Python/Ruby/Perl)VM的额外开销。这导致了大量的进程间通信,导致大多数情况下作业的效率降低。

使用Hadoop流式传输会带来对输入/输出格式的限制。有些时候你想创建自定义的输入/输出格式,使用自定义的罐子是自然的选择。同样使用Java,可以将hadoop的许多功能覆盖/扩展到自己的需要/选择。

从一个答案here报价:

的Hadoop做有能力与其他 语言创建MR就业工作 - 它被称为流。这个模型只允许我们定义 映射器和减速器,并且在java中没有一些限制。在 同一时间 - 输入/输出格式和其他插件都必须 写成的Java类,所以我会定义决策作为 如下:

  • 使用Java,除非你有严重的代码库,你需要resue在你的MR工作中。
  • 考虑在需要创建一些简单的临时作业时使用python。

至于流只适用于mapred API,它没有任何意义。虽然使用流映射器/缩减器是用其他语言编写的,所以没有必要担心内部使用哪个API hadoop来执行它们。

+0

我在哪里可以找到更多细节。一些链接将有所帮助 –

+1

考虑使用谷歌,这是一个伟大的网站,在这里你有第一击如果你输入hadoop流:http://hadoop.apache.org/docs/r1.1.2/streaming.html – DDW

+0

即使这回答将有助于:http://stackoverflow.com/questions/6873077/streaming-or-custom-jar-in-hadoop/6889756#6889756 – Amar