Hadoop流媒体工作与常规工作?

时间:2013-10-30 11:50:20

标签: java hadoop mapreduce

Hadoop Streaming作业和常规Java作业之间有什么区别。在后者上使用Hadoop流是否有任何优势。

还有一件事,我正在使用 mapreduce API(即新的API),我听说只有弃用的 mapred API才能使用流式传输。是吗 ?

1 个答案:

答案 0 :(得分:6)

Hadoop流媒体有利于那些开发人员不具备Java知识并且可以更快地用任何脚本语言编写Mapper / Reducer的情况。

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

使用Hadoop流带来了对输入/输出格式的限制。有时您想要创建自定义输入/输出格式,使用自定义jar将是自然的选择。使用Java也可以将hadoop的许多功能覆盖/扩展到一个人的需要/选择。

引用答案here

  

Hadoop有能力处理在其他人中创建的MR作业   语言 - 它被称为流媒体。这个模型只允许我们定义   mapper和reducer有一些在java中没有的限制。在里面   同时 - 输入/输出格式和其他插件必须   写成java类所以我将决策定义为   以下:

     
      
  • 使用Java,除非您有严格的代码库,否则您需要在MR工作中重新开始。
  •   
  • 当您需要创建一些简单的临时作业时,请考虑使用python。
  •   

至于仅适用于mapred API的流式传输,它没有意义。虽然使用流式映射器/缩减器是用其他语言编写的,但是没有必要担心内部使用哪个API来执行它们。