Hadoop API VS. Hadoop流媒体

时间:2011-12-20 05:27:45

标签: hadoop mapreduce cloudera

当我们使用Streamer jar运行hadoop程序以及使用程序的jar文件运行它时有什么区别?

5 个答案:

答案 0 :(得分:5)

通常我们在java..a map中编写Map / Reduce对,将数据集拆分为独立的块,并将reduce结合起来执行一些有用的分析... Hadoop streaming是一个允许我们编写的实用程序在any language(like Ruby/Python/Bash etc.)中映射/减少能够使用STDIN(for input)STDOUT(for output)的应用程序!

答案 1 :(得分:0)

你说得对,如果你不使用Java,你将无法获得核心的hadoop功能。诸如ChainMapper和ChainReducer,ChainedJobs之类的东西都不能通过流媒体获得。此外,由于Hadoop是用Java编写的,因此使用Java会使速度更快。

另外,理论上,在映射器完成后没有减速器启动。你可能会在HTML中看到减速器在输入被移动的同时运行。

答案 2 :(得分:0)

Hadoop Streaming使我们能够以任何支持从标准输入读取数据并写入标准输出的编程或脚本语言编写map和reduce函数。此功能使Hadoop Streaming非常灵活,可以被大量用户轻松使用。 R,Python,C ++或几乎任何其他语言。 有许多参数可以自定义,例如,映射器的数量,减速器的数量,jvm内存,输入格式,输出格式等.Hotoop流作业的默认输入格式是TextInputFormat,它在一行读取数据一时间

Hadoop API 几乎将您绑定到Java,但配置和开发更直接,因为所有内容都可以从Java代码本身进行配置。根据我的经验,Java似乎稍微快一些,但是在正确配置并使用正确的语言时,流式传输可以非常接近。

答案 3 :(得分:0)

流媒体的

优势

  1. Hadoop Streaming允许您使用首选的脚本语言(如Ruby,Python,Pig等)提交Map reduce作业。该脚本可以转换为多个Map Reduce作业。你不必学习java。
  2. <强>缺点

    1. 与使用java的Hadoop API实现相比,Hadoop Streaming脚本的性能较低。原因很明显 - 脚本被转换为多个Map Reduce作业,并且作业完成时间非常长,因为必须完成多个作业。
    2. 就个人而言,我更熟悉Hadoop API与客户分区程序&amp;用Java编写的 Combiner

答案 4 :(得分:0)

如果您使用java编程,那么您可以定期编译和提交作业。如果你想使用其他语言,如Python或.NET,那么你可以用这些语言开发程序,流jar就像一个桥梁,因为这些语言不是原生的hadoop,这是java

沙赫扎德