流式MapReduce实现Sector/Sphere
Sector/sphere是2006年由伊利诺大学的NCDM实验室提出并研发的流式MapReduce实现(传统MapReduce实现见我的博文:传统MapReduce实现),采用较为高效的C++语言实现。Sector/sphere由分布式文件系统Sector和并行计算框架sphere组成,一些测试结果表明:Sector/sphere比Hadoop在计算效率上高效得多(见参考资料(1))。
1、分布式文件系统Sector
上图展示了Sector系统的总架构,主要由三部分组成:security server,master和slave。 Security server主要用于存储用户的用户名,密码,文件访问权限等信息,同时也维护了授权的slave的IP列表,这样可以防止未经授权的slave连入集群。Master 维护了所有文件的元数据信息,监控各个slave节点的运行状态并且对用户提出的请求作出相应(同Hadoop的namenode类似)。Master可以直接与security server进行通信,从而验证slave,client和user的身份。Slave用于存储实际的文件,且一般运行在一个或多个数据中心中(同Hadoop的datanode类似)。
数据在Sector上以文件为单位进行存储(Hadoop是为block为单位),用户可以在任何节点上下载某个文件。不过,这样就需要用户将大的文件分割成一个一个小文件,供每个task处理。
Sector提供了安全机制,所有用户信息(账号)被保存到一个security server上,当有用户需要访问某个文件时,master要询问security server,由它检查该用户是否有权限;同样,当有slave想要接入集群时,也需经security server的许可。
Sector采用自己研发的UDT协议进行数据传输,在广域网中,该协议传输效率比HTTP高得多。
2、并行计算框架Sphere
先解释几个概念:
SPE:Sphere Proccessing Engine, SPE数据处理逻辑单位,可以处理来自一个数据段,一组数据或者整个文件。
stream:在sphere中,stream是一个数据集或者部分数据集的抽象,每一个stream被一个SPE处理。
Sphere计算框架有几个特点:
(1) 数据的处理过程借鉴了GPU模型,采用流式处理方式,即每个SPE产生的结果可以shuffle给另一个SPE进行处理,该SPE再传给下一个SPE,…,这样一直下去。当只有两个阶段时,便是MapReduce计算,正是从这个角度看,Sphere是MapReduce的一个扩展。
(2) Master把尽可能多的控制权交给client,自己只负责非常少的工作,从而减轻自己的压力。当用户在client端提交一个作业时,master返回给client一个可用slave node列表,然后把作业的监控权和调度权交给了client,client负责这个slave node列表的使用方式(调度),并通过HEARTBEAT每隔一段时间与各个SPE通信,查看它的状态和task执行进度。
(3) 用户在sphere上开发应用程序时,可以自定义函数,这大大提高了分布式程序开发的自由度,而对于MapReduce框架,用户必须实现map()和reduce()函数,它们的接口都是提前规定好的。
3、Sector/Sphere,GFS/BigTable和Hadoop对比
总之,Sector/Sphere有以下几个创新之处:
(1) 提供安全机制。保密信息由一个专门的安全服务器保管。
(2) 采用自主研发的基于UDP的数据传输协议UDT,效率比http高很多
(3) 支持广域网,多个数据中心的架构
(4) 支持多阶段流式处理(MapReduce只是两个阶段)
缺点:
不够成熟,用户很少(基本没有),Map阶段有容错功能,reduce阶段没有,若reduce task失败,则整个job失败。
4、参考资料
(1)Sector/sphere官方网站:http://sector.sourceforge.net/
(2)论坛:http://sourceforge.net/projects/sector/forums
(3)Sector/sphere论文:http://www.cca08.org/papers/gu-grossman-ahm-08-1.pdf
(4)UDT官方网站:http://udt.sourceforge.net/
原创文章,转载请注明: 转载自董的博客
本文链接地址: http://dongxicheng.org/mapreduce/streaming-mapreduce-sphere/



浙公网安备 33010602011771号