Cloudera已经拉拢到四家主流企业,旨在共同推动将两大开源项目相结合以进一步提升Hadoop社区力量的规划。
Cloudera、IBM、英特尔、DataBricks以及MapR之间建立起合作关系,希望将Apache Hive移植到Apache Spark当中——这项消息是在本周于旧金山举办的Spark峰会上放出的。我们上周就已经得到消息,有传闻称Cloudera将建议把Hive与Spark进行结合。
对于那些不太熟悉Hadoop领域众多项目代号的朋友,我们在这里作出一点简短解释:Spark是一套通用型集群计算系统,最初由加利福尼亚大学与伯克利大学共同开发并以Hadoop文件系统为基础。它能够被用作HadoopMapReduce的替代性数据处理方案,且在内存内运行机制下可带来100倍于MapReduce的处理速度——采用磁盘运行机制时的速度提升则在10倍左右。
与此同时,Hive是一款数据仓库软件、旨在利用SQL类语言对存储于Hadoop当中的数据进行查询。
两个项目的重要地位皆不容质疑,其中Spark被视为MapReduce的潜在继承者,而Hive则被公认为在Hadoop上实现SQL任务处理的不二选择。
通过将Hive与Spark相结合,Cloudera公司希望能够把纷繁复杂的Hadoop生态系统加以整合并将力量集中起来,而且这样做同时也将降低Cloudera自家项目Impala的重要程度。
在我们进行的采访当中,Cloudera公司产品管理主管Justin Erickson指出,该公司已经决定全力推动Hive——这是因为他们希望“促进并聚合Spark与Hive两个社区的技术力量,最终在Hadoop当中为用户带来更快的批处理速度。”
“Hive是目前Hadoop当中的标准批处理解决方案,”该公司产品营销部门负责人Matt Brandwein表示。“我们希望能够缓解社区当中力量涣散的现状。人们已经开始意识到,摆在自己面前的选项实在太多、它们各自适合应对的任务也各不相同。Spark才是继任者与接班人,这一点需要得到强调与认可。”
这一举措将给整个Hadoop生态系统带来重要的影响,Cloudera自然也在其中。过去Cloudera公司一直对Hive的价值持怀疑态度。在去年发表的一篇博文中,该公司首席战略官Mike Olson写道“几十年以来的经验已经教会我们,一定要让自己的数据库拥有实时响应能力,而以MapReduce为基础建立起来的Hive并不能满足这样的需求。”
为了解决Hive的这一天然缺陷,Cloudera公司开发出自己的软件方案,也就是Impala。不过随着Cloudera、MapR、DataBricks以及英特尔之间全新合作关系的建立,看起来Cloudera对于 Hive的态度似乎已经开始缓和,并将利用该技术作为自己与Hadoop社区沟通的主要途径——当然,他们也将继续开发Imapala并将其作为盈利手段之一。
在这样的背景下,另一套衍生方案实在不得不提——它就是同样希望将Hive运行在Spark之上的技术项目Shark。不过Cloudera认为Shark与主流Hive之间存在着严重偏差。
“Shark所采取的方案是替换掉Hive当中的多种关键性组件,其中包括查询规划机制以及Hive的其它元素,”Cloudera解释道。“这样作法的结果就是,Shark要保持与Hive之间的兼容性将变得非常困难,因为那些对Hive作出的变更无法以透明方式移植到Shark当中。在自己的Hive & Spark对接方案当中,我们只对物理查询规划机制作出了很有限的一点调整并向Hive添加了多种新功能,同时以透明化方式向Spark、MapReduce以及Tez提供了变更内容。这样一来,其维护负担将比Shark项目低得多,而且能够更深层地与核心Hive社区相结合。”
说起Tez,Cloudera的这一举动无疑给Hortonworks带来了压力——后者一直致力于开发另一套竞争性数据处理框架。不过Cloudera表示Spark与Tez类似,仅仅属于方案选项之一。
正如该公司在常见问题说明文档中所言,“Spark项目的建立目的并不是要取代Tez或者MpaReduce在执行后端领域的地位。同时存在多种后端机制对于Hive项目来说肯定是种好现象。用户可以自由选择使用Tez、Spark或者MapReduce。每一套方案都拥有自己的专长之处,哪种更适合完全取决于实际用例。而Hive的成功也并不完全依赖于Tez或者Spark的市场认同度。”
而在就此事的评论当中,Hortonworks表示这一决定能够将更多开发资源导向将Hive运行在Spark方面,这大体上可以算是一件好事。“这相当于承认了开源社区驱动模式是正确的选择,”Hortonworks公司战略副总裁Shaun Connolly在接受采访时解释道。
从另一个角度来审视此次合作,可以看到Cloudera借此筹得了9亿美元资金——其中7.4亿美元来自英特尔——很明显Cloudera公司希望依靠各大技术巨头作为后盾、从而在Hadoop业务当中扮演主导性角色。
通过将一部分资金投入到与Hadoop相关的各类开源项目当中,Cloudera将能够更好地理解此类软件的未来发展方向,同时进一步考量如何才能从不断增长的业务用户群体当中获得经济收益。