Hadoop Streaming 作业与常规作业有何区别?

5

Hadoop Streaming 任务和常规 Java 任务有什么区别?使用 Hadoop Streaming 与使用后者相比是否有优势?

另外,我正在使用 MapReduce API(即新 API),我听说流处理只能通过已弃用的 MapRed API 使用。是这样吗?


请返回翻译后的文本:https://dev59.com/cnM_5IYBdhLWcg3wzmrL?rq=1 和 https://dev59.com/9msz5IYBdhLWcg3w476m?rq=1 - Eel Lee
1
请在发布问题之前尝试使用google.com快速获取答案。 - Praveen Sripati
1个回答

7
Hadoop流处理在开发人员不熟悉Java且能够更快地使用任何脚本语言编写Mapper/Reducer时非常有优势。与自定义jar作业相比,流处理作业还需要启动一个脚本(Python/Ruby/Perl)虚拟机的额外开销。这导致了大量的进程间通信,在大多数情况下会降低作业的效率。使用Hadoop流处理会对输入/输出格式产生限制。有时您想要创建自定义输入/输出格式,使用自定义jar将是自然的选择。此外,使用Java可以重写/扩展许多hadoop的功能以满足自己的需求/选择。引用来自这里的回答:Hadoop确实具有使用其他语言创建的MR作业的能力-称为流处理。该模型仅允许我们定义具有一些Java中不存在的某些限制的mapper和reducer。同时,输入/输出格式和其他插件必须编写为Java类。因此,我将决策制定如下:除非您需要重复使用MR作业中的严重代码库,否则请使用Java。当您需要创建一些简单的即席作业时,请考虑使用python。至于流处理仅适用于mapred API,这是没有意义的。在使用流处理时,mapper/reducer是用另一种语言编写的,因此不必担心hadoop内部将使用哪个API来执行它们。

请问在哪里可以找到更多详细信息?提供一些链接会很有帮助。 - Tom Sebastian
1
考虑使用谷歌,它是一个很棒的网站。如果您输入Hadoop Streaming,这里是第一个搜索结果:http://hadoop.apache.org/docs/r1.1.2/streaming.html - DDW
请参考以下链接的答案:https://dev59.com/qmw15IYBdhLWcg3wCXOJ#6889756。 - Amar
我在使用mapred API进行流处理时遇到了问题。这是当我尝试创建自定义输入格式时发生的。当我从新API的TextInputFormat扩展时,出现了一个异常,说MyCustomeInputFormat不是mapred.TextInputFormat。我改用旧API解决了这个问题。不确定是否会产生任何兼容性问题。 - sunitha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接