Hadoop API与Hadoop流媒体

Hadoop API与Hadoop流媒体,hadoop,mapreduce,cloudera,Hadoop,Mapreduce,Cloudera,使用Streamer jar运行hadoop程序与使用程序的jar文件运行hadoop程序有什么区别?通常我们使用java编写Map/Reduce对..将数据集分割为独立块的映射,还有一个reduce,它将结果结合起来执行一些有用的分析……Hadoop streaming是一个实用程序,它允许我们用任何语言(如Ruby/Python/Bash等)编写Map/reduce应用程序,能够使用STDIN(用于输入)和STDOUT(用于输出) 你说得对,如果你不使用Java,你就没有可用的核心hadoo

使用Streamer jar运行hadoop程序与使用程序的jar文件运行hadoop程序有什么区别?

通常我们使用java编写Map/Reduce对..将数据集分割为独立块的映射,还有一个reduce,它将结果结合起来执行一些有用的分析……Hadoop streaming是一个实用程序,它允许我们用
任何语言(如Ruby/Python/Bash等)编写Map/reduce应用程序
,能够使用
STDIN(用于输入)
STDOUT(用于输出)

你说得对,如果你不使用Java,你就没有可用的核心hadoop函数。像ChainMapper和ChainReducer、ChainedJobs之类的东西不能通过流媒体使用。此外,由于Hadoop是用Java编写的,因此使用Java将使其速度更快


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

Hadoop Streaming使我们能够用任何支持从标准输入读取数据和写入标准输出的编程或脚本语言编写映射和减缩函数。此功能使Hadoop流媒体非常灵活,可以方便地被大量用户使用。R,Python,C++,或者几乎任何其他语言。 有很多参数可以自定义,例如映射器的数量、还原器的数量、jvm内存、输入格式、输出格式等。hadoop流作业的默认输入格式是TextInputFormat,它一次读取一行数据

Hadoop API
几乎可以将您绑定到Java,但是配置和开发更加简单,因为一切都可以从Java代码本身进行配置。根据我的经验,Java似乎稍微快一点,但如果配置得当并使用正确的语言,流式处理可以非常接近

流媒体的优势

  • Hadoop Streaming允许您使用首选脚本语言(如Ruby、Python、Pig等)提交Map reduce作业。该脚本可以转换为多个Map reduce作业。你不必学习java
  • 缺点

  • 与使用java的Hadoop API实现相比,Hadoop流脚本的性能较低。原因很明显-脚本被转换为多个Map Reduce作业,并且作业完成时间非常长,因为必须完成多个作业
    就我个人而言,我对Hadoop API更为熟悉,因为它使用Java编写的customerPartitionerCombiner,如果您使用Java编程,那么您可以定期编译和提交作业。如果你想使用其他语言,比如Python或.NET,那么你可以用这些语言开发程序,流媒体jar就像一座桥,因为这些语言不是本机的hadoop,而是java


    Shahzad

    是的,我做过。但我的问题是有什么区别。就像我发现的一个例子,使用java mapreduce,我们可以使用内置的map和reduce类,但当我在php中使用streamer时,我没有使用它。好吧,主要的好处是程序不需要了解java就可以使用Hadoop,因为Hadoop流媒体就在那里……但我担心如果我会使用java以外的其他语言,那么我将无法使用核心Hadoop函数。我找的是php thrift客户端,但是链接死了,刚才我发现php需要更多的时间。在java中,当map启动时,相应地减少启动,但在php中,当map完成时,减少启动。如果你能为我提供php thrift客户端,这将是很有帮助的。这个链接可能对你有帮助:Thnx再次。但看起来我现在必须离开这个论坛,我被禁了不知道是什么原因。。