Hadoop Streaming和Pipes会意

原始问题的引出见:http://bbs.hadoopor.com/viewthread.php?tid=542
在论坛里搜查了下,觉察了两篇利用C/C++编写mapreduce的文章.如下:
http://bbs.hadoopor.com/thread-256-1-1.html
http://bbs.hadoopor.com/thread-420-1-2.html
一. 其中,利用stream的文章中提到,利用stream编写mapreduce过程,其reduce任务要等到所有map任务告终后能力举行,这点不太会意.
二. 从两种措施的告终上来看.感受有点独到.在linux下,等闲从stdin读入数据感受是管道的措施,而穿越socket读入数据为stream措施,然而在hadoop中,传神其叫法与linux下相反.不懂得为什么.
三. 从代码能够看出,在hadoop中,stream是利用stdin,而pipes是利用socket.这两者有什么优缺点能够比拟下的.
By:guxiangxi

一,二两个问题我也不会意,何止如何批复。第三个问题我更关怀一些,因为之前用过一下streaming,感受不是尤其好用,目前的情形还是纯熟C++,但写mapreduce还是用java。刚好Pipes刚好是我想要的。下面有三处文章能够参看
       1、http://cxwangyi.blogspot.com/2010/01/writing-hadoop-programs-using-c.html
       2、http://remonstrate.wordpress.com/2010/10/01/hadoop-上的-c-例程/
       3、http://blog.endlesscode.com/2010/06/16/***-demo-of-streaming-and-pipes/

归纳如下:
      1、Streaming是Hadoop供给的一个能够利用其他编程语言来举行MapReduce来的API,因为Hadoop是基于Java(由于作者比拟擅长Java,Lucene和Nutch都是出于Hadoop的作者)。Hadoop Streaming并不混杂,其只是利用了Unix的规范输入输出作为Hadoop和其他编程语言的开发接口,因而在其他的编程语言所写的过程中,只必需将规范输入作为过程的输入,将规范输出作为过程的输出就能够了。在规范的输入输出中,key和value是以tab作为分隔符,并且在reduce的规范输入中,hadoop框架保证了输入的数据是穿越了按key排序的。

      2、Hadoop Pipes是Hadoop MapReduce的C++接口。与利用规范输入输出的Hadoop Streaming不同(当然Streaming也能够用于C++),Hadoop Pipes在tasktacker和map/reduce举行通信时利用的socket作为管道,不是规范输入输出,而不是JNI。Hadoop Pipes不能运行在standalone形式下,因而要先搭配成pseudo-distributed形式,因为Hadoop Pipes依靠于Hadoop的散布式缓存技巧,而散布式缓存只会在HDFS运行的时候才会扶持。与Java的接口不一样,Hadoop Pipes的key和value都是基于STL的string,因而在处理时开发人员必需手动地举行数据种类的转换。

      3、从性质上 hadoop pipes 和 hadoop streaming 做的事情几乎一样,除非两者的通信不同,pipes 能够利用 hadoop 的 counter 个性。与 Java native code 比拟,Java native code 能够利用告终了 Writable 接口的任何数据种类作为 key/value,而 pipes 和 streaming 就定然穿越字符串举行顺次转换(通信开支大,存储开支大)。可能正是这个起因,pipes 可能尔后会被从 hadoop 中移除。当然,万一计算代价较高,可能 Java native code 并未曾 C++ 厉行效率高,那么尔后可能就写 streaming code 了。pipes 利用的是 byte array,刚好能够用 std:string 封装,只是例子里面都是转换成为字符串输入输出。这要求过程员自己设计科学的输入输出措施(数据 key/value 的分段)。

曾经获得验证:pipes 曾经从 hadoop 中移除。运行$ ~/hadoop-0.21.0/bin/hadoop,曾经看不到pipe的这一项了。

利用上的参看:
1、http://developer.yahoo.com/hadoop/tutorial/module4.html#pipes
2、http://code.google.com/p/hypertable/wiki/MapReduceWithHypertable

Gridview 表头加入checkbox的措施.

塑造战略的五种能力——迈克尔.波特再论“五力模型”.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值