【MapR初探】
EMC中国研究院 向东
【1.
MapR成立于2009年,但是引起媒体广泛关注是缘由GIGAOM网站2011年3月的一篇报道 《MapR,Cloudera的新对手》(http://gigaom.com/cloud/meet-mapr-a-competitor-to-hadoop-leader-cloudera/ ),报道这么描述MapR:
“构建一个HDFS的私有替代品,这个替代品比当前的开源版本快三倍,自带快照功能,而且支持无Namenode单点故障(SPOF),并且在API上和兼容,所以可以考虑将其作为替代方案。”
这篇报道随即被InfoQ引用 (http://www.infoq.com/cn/news/2011/03/structure_big_data
到了5月,确切的说,是5月25号,另一个爆炸性的新闻被披露了。这天,EMC World 2011上,EMC宣布,将在自己推出的Greenplum HD企业版Hadoop中采用MapR的技术。一时间,MapR处于全球技术媒体的聚光灯下,人们不禁要问,MapR到底提供了什么,为什么会被EMC选中作为合作伙伴呢?
GreenPlum HD,会跳舞的大象
【2.
Hadoop, 大数据处理的宠儿,现今IT媒体聚光灯的焦点,如同希腊神话中的勇士阿喀琉斯一样,有着传奇的出身:Hadoop的主要设计思想,来自两篇著名的Google论文:《MapReduce: Simplified Data Processing on Large Clusters》http://labs.google.com/papers/mapreduce.html
Hadoop有两个主要的子系统,Hadoop 分布式文件系统HDFS和Hadoop Map/Reduce。HDFS是Hadoop的分布式存储子系统,用户的数据文件,会被切分成64M大小的block(block的大小是可调的,64M是Google在实践中总结出来的一个优选参数),经过Namenode协调,存放在不同的DataNode上。对于任何一个HDFS文件,Namenode会在内存中维护两种meta data:1) HDFS文件和block的对应关系 ,2)block在data node上存放的位置。Namenode会在磁盘上保存第一种meta data (通过checkpoint 文件和write ahead log),第二种meta data则是DataNode通过block report 定时发送给NameNode。
上述构架简洁优雅,而且Google在工程实践中也证明了这个构架的可用性和可靠性。但是随着Hadoop被广泛应用,面对各种不同的需求,人们也渐渐的发现了Hadoop的阿喀琉斯之踵。总结下来,主要有以下3大方面:
1)
2)
3)
Hadoop的这些缺点也带来了巨大的机会,Cloudera的目光最为敏锐,最早看到这一点。Cloudera的商业模式和一般Open Source创业公司无异:网罗Hadoop的contributor,积极的回馈Hadoop社区,在此基础上发布自己的Hadoop发行版CDH(Cloudera's Distribution including Apache Hadoop),提供各种增值服务。实际上,CDH版Hadoop具有相当高的知名度。
MapR则认为,Hadoop的这些缺陷来自于其架构设计本身,小修小补不能解决问题。他们选择了一条艰难得多的路: 用新架构重写HDFS,同时在API级别,和目前的Hadoop 发行版保持兼容。这家2009年成立的创业公司,在蛰伏了两年之后,终于一鸣惊人,大放异彩。回顾前面GIGAOM的报道:
“构建一个HDFS的私有替代品,这个替代品比当前的开源版本快三倍,自带快照功能,而且支持无Namenode单点故障(SPOF),并且在API上和兼容,所以可以考虑将其作为替代方案。”
MapR真的做到了。
【3.
2011年6月,在Hadoop 2011峰会上,MapR的创始人M.C. Srivas做了名为《Design, Scale and Performance of MapR's Distribution for Hadoop》的演讲(http://www.mapr.com/blog/2011/07/the-design-scale-and-performance-of-maprs-distribution-for-apache-hadoop.html ),比较详细的介绍了MapR设计原则,部分实现细节以及MapR的性能,外界也第一次从内部了解MapR Hadoop。演讲的录像和PPT随后被公布在Youtube和Slideshare(http://www.slideshare.net/mcsrivas/design-scale-and-performance-of-maprs-distribution-for-hadoop ),
MapR认为,解决Hadoop的种种问题,要采用以下设计思想:
1)
2)
3)
4)
通过上述方式,MapR期望这种设计能极大的提高Hadoop的扩展能力,比如支持的节点数目从当前2000个左右扩展到10000个以上,系统文件容量从10-50PB扩展到1-10EB,文件数量从1.5亿扩展到1万亿(1 trillion)左右。同时,系统还需要支持完全的随机读写以及一系列企业应用特性,比如快照,mirror等等。MapR还期望在性能上有所突破,尽可能的榨取硬件的能力,并能对新的硬件技术(固态硬盘,万兆网卡等)提供支持。
纵观其实现,整个MapR的核心是其分布式NameNode, 在MapR的设计中,分布式的NameNode又被称作Container,和Hadoop原始设计中的Namenode不一样的是,Container不仅维护了用户文件的meta data,也维护数据块。每个Container的大小在16GB-32GB之间(这也就意味着一个node上会有很多个container),同一个Container在不同node间有replica。
对于用户来说,Container的概念过于底层,MapR引入了Volume的概念来降低使用用户门槛和提高系统的灵活性。 MapR Volume(http://www.mapr.com/doc/display/MapR/Volumes)的概念和传统存储概念意义上的Volume相当类似,用户不需要直接管理Container,相应的,用户通过管理volumes来管理Container:用户可以为每个Volume指定不同的大小限制,replication level等参数。此外,用户还可以对volume建立snapshot,mirror等。
Container,volume相关的meta data被维护在被称为CLDB中(container location database,http://www.mapr.com/doc/display/MapR/Glossary#Glossary-containerlocationdatabas
采用分布式Namenode的一个必然结果就是要处理大量的分布式事务: 用户有可能同时操作两个Container。 针对这种情况, MapR认为传统的两阶段提交和基于Quarum 的协议(例如Paxos)都有局限性,他们提出了新的解决方案: MapR lockless transaction。Srivas的讲座并没有过多讨论MapR lockless transaction的细节,从有限的几张PPT里面,我们还是可以得知一二的:
1)
2)
3)
4)
5)
MapR声称这种实现方式有很高的吞吐率,而且事务进行过程中不需要锁, 而且因为WAL的存在,如果事务进行过程中出现程序崩溃也无所谓。实际上,MapR lockless transaction的实现是仔细分析了MapR 分布式事务的特点以后的一种设计折中: 作为大数据分析平台,Hadoop要处理的数据集并往往是只读或者读多写少(当前版本的Hadoop HDFS实际上是只读的),分布式事务存在冲突的几率比较小,就是说,代价很大的回滚操作执行的几率很小,在这种情况下,放弃开销很大的锁机制是划算的。
除了分布式Namenode这个大亮点之外,MapR还实现了一系列高级特性,对原来Hadoop的功能进行了大幅度的增强。这其中最吸引眼球的有两点:
1)
2)
以上简要介绍了MapR
【4.
经过数年的酝酿,大数据成为人们关注的焦点,各大IT媒体都在讨论什么是大数据,其意味着什么,有哪些应用程序可以处理大数据,如何培养数据科学家等等。在这个潜力无比的新兴市场中,Hadoop无疑已经提前卡位成功。 在Hadoop的基础上,人们纷纷推出了自己的发行版和增值服务,比如Cloudera推出了CDH;IBM则推出了InfoSphere BigInsights;Yahoo更是将原来开发Hadoop的部分独立拆分出来成立了一家新公司Hortonworks,以期望获得更大的竞争优势。
Hortonworks,三象行,必有我师焉
相对于舞台上的其他竞争对手,MapR独辟蹊径,利用当前的Hadoop的一些弱点获得了巨大的关注和影响力。展望未来,MapR会如何发展捏? 我觉得MapR必须有心理准备应付Hadoop的快速发展。Hadoop暴露各种问题已经广为知晓,Hadoop 2.0也在如火如荼的规划和实现中(http://www.oscon.com/oscon2011/public/schedule/detail/19234 ),在不久的将来,Hadoop将会有剧烈的变化。那么,要保持和新版的Hadoop API兼容的同时还保留自己的种种优点(高性能,高可用性,各种企业特性)是非常有挑战性的工作,MapR的天才们会交出怎样的答案?我们拭目以待。
【完】
关于作者:
向东(@朝东走),EMC中国研究院高级研究员,主要关注云计算,分布式系统和大数据。
(注,本文根据公开资料收集整理而成,文中各种技术观点,如有不妥,欢迎指正。)