Hadoop Streaming作业vs普通作业?
问题描述:
Hadoop Streaming作业和常规java作业有什么区别。对后者使用Hadoop流是否有优势。Hadoop Streaming作业vs普通作业?
还有一两件事,我使用的MapReduce API(即,新API)和我听说的流只适用于过时mapred API。是吗 ?
答
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来执行它们。
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 –
请在发布快速回复之前尝试google.com。 –