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的措施.
塑造战略的五种能力——迈克尔.波特再论“五力模型”.
Hadoop Streaming和Pipes会意相关推荐
- Hadoop详解(九):Hadoop Streaming和Pipes原理和实现
为了保证编程接口的通用性,Hadoop提供了Streaming和Pipes编程框架和接口,Streaming编程框架通过标准的输入/输出作为媒介来和Hadoop框架交换数据,因此任何可以操作的标准输入 ...
- Hadoop Streaming 编程
1.概述 Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如: 采用shell脚本语言中的一些命令作为ma ...
- Hadoop Streaming高级编程
1. 概要 本文主要介绍了Hadoop Streaming的一些高级编程技巧,包括,怎样在mapredue作业中定制输出输出格式?怎样向mapreduce作业中传递参数?怎么在mapreduce作业中 ...
- Hadoop Streaming
Hadoop Streaming Hadoop Streaming Hadoop Streaming Streaming工作原理 将文件打包到提交的作业中 Streaming选 ...
- Hadoop Streaming框架使用(三)
前两篇文章介绍了Hadoop Streaming框架的使用方法.由于篇幅所限,并没有介绍其中的高级使用方法,但是有一些用法还是相当常见的.今天对一些高级用法进行一个简单的说明,希望能给大家一些启发. ...
- Hadoop Streaming框架使用(一)
Streaming简介 link:http://www.cnblogs.com/luchen927/archive/2012/01/16/2323448.html Streaming框架允许任何程 ...
- Hadoop Streaming编程实例
Hadoop Streaming是Hadoop提供的多语言编程工具,通过该工具,用户可采用任何语言编写MapReduce程序,本文将介绍几个Hadoop Streaming编程实例,大家可重点从以下几 ...
- hadoop streaming部分问题总结
来源: https://hadoop.apache.org/docs/r1.2.1/streaming.html#Generic+Command+Options 文档还是要好好看,中间遇到的好多问题文 ...
- Hadoop streaming: Exception in thread main java.io.IOException: No space left on device
在使用Hadoop streaming时,遇到报错如标题: packageJobJar: [mapper_sim.py, reducer_sim.py, XXX files, /tmp/hadoop- ...
- 利用Hadoop Streaming处理二进制格式文件
Hadoop Streaming是Hadoop提供的多语言编程工具,用户可以使用自己擅长的编程语言(比如python.php或C#等)编写Mapper和Reducer处理文本数据.Hadoop Str ...
最新文章
- JVM年轻代,老年代,永久代详解​​​​​​​
- 稀疏编码(Sparse Coding)(二)
- 新思路设计可视化大型微服务监控系统
- 7 centos ssh 单机_centos7单机安装kafka
- 数学建模python教材推荐_数模竞赛专攻python应该准备什么?
- RocketMQ入门到入土(五)消息持久化存储源码解析
- Mac OS 下安装wget
- 知识竞赛软件/答题系统/答题小程序
- 当时明月在,曾照彩云归。
- 0基础也可直接运行的微信表情包批量转换
- 文章重复率很高,4个快速修改的小技巧,赶快用起来
- napa与matlab,纳帕谷产区Napa Valley|酒斛网 - 与数十万葡萄酒爱好者一起发现美酒,分享微醺的乐趣...
- 或许再过两年,ASML将可以自由给中国供应EUV光刻机
- 2017 携程 笔试编程题 1
- 15-面向对象的程序设计--no
- 使用python批量修改图片名称
- Cocos2d-x游戏暂停、继续游戏、重新开始界面的实现---之游戏开发《赵云要格斗》(10)
- c++多态之 运行时多态与编译时多态
- iOS 探讨之 mach_absolute_time
- 电子邮箱哪家最安全,各家电子邮箱安全性盘点!