2013年4月,OpenStack社区知名厂商Mirantis正式宣布了基于OpenStack的开源BDaaS(BigData-as-a-Service)项目——Sahara(原名Savanna),正式开始了在OpenStack上构建大数据服务能力的努力。
近日,开源技术专家章宇(@一棹凌烟)在其博客上分享了对Sahara项目的研究心得。整个介绍系列分为7篇文章,除前言部分外,其余六篇分别是:
- Sahara概述:介绍项目的目的、概况、发展等基本情况
- Sahara使用方式:介绍具体如何使用Sahara进行大数据业务操作
- Sahara设计实现:介绍Sahara的架构设计与实现
- Sahara与AWS EMR和Serengeti的对比:将Sahara与目前最知名的公有云大数据服务和Hadoop虚拟化项目进行简单对比分析
- 对Sahara的若干思考
- 小结与展望
在《Sahara概述》中,章宇介绍了Sahara的定位、功能的演进、社区支持力度与整体发展的趋势。
Sahara最初的基本定位是基于OpenStack提供简单的Hadoop集群创建方式,不过随着项目不断演进,Sahara所涵盖的范畴也有所扩大。章宇从两个层面介绍了Sahara项目的发展方向:
从服务层次的维度看,Sahara已经开始从利用OpenStack的IaaS能力,提供简单的大数据工具集群创建和管理服务,扩展到提供分析即服 务(Analytic-as-a-Service)层面的大数据业务应用能力。Sahara v0.3中引入的EDP(Elastic Data Processing)就是一个明确的体现。
从承载的业务类型维度看,Sahara也很有可能会迅速突破单一的Hadoop工具范畴,拓展支持其他新兴的大数据工具。例如,关于提供Spark支持的BP已经被提交至社区,目前正在等待review。
Sahara项目的发展较快,其项目PTL Sergey Lukjanov已经宣布Sahara将于OpenStack Juno版本中正式成为integrated项目,目前代码已经提交,并在等待review,其版本演进可以参见其wiki页面介绍。目前Sahara已经被集成在RDO中,因此可以被更为简单方便的安装部署。
《Sahara使用方式》简单介绍了Sahara的使用模式、基本概念与操作流程。
Sahara有两种使用模式:
- 基本的大数据集群应用模式(基本模式)
- 通过EDP机制引入的分析即服务模式(EDP模式)
简单来说,基本模式要求用户自己从底层搭建Hadoop虚拟机、建立集群,技术门槛较高;而EDP模式有点类似于AWS EMR服务,对底层的Hadoop集群操作和Hadoop业务操作进行了封装,暴露给用户的只有非常简单的接口,使用简便。
章宇介绍了Sahara当中的节点(node)、节点组(node group)、节点组模板(node group template)、集群(cluster)、集群模板(cluster template)、任务(job)等关键概念,并简单列出了在基本模式下用Sahara建立Hadoop集群的操作流程。整个介绍比较概括,step by step的操作文档可参考Sahara官方的QuickStart。
接下来,章宇开始从研究代码的层面介绍Sahara的设计与实现。Sahara的设计有两大特点:
1、模块化、可配置:
Sahara中的大量功能和机制,都基于可选择、可配置的模块化插件实现,例如:可以通过对engine的配置来选择不同的Hadoop集群编配引擎,通过对plugin的配置来选择不同的Hadoop发行版安装与部署方式和工具,等等。
2、代码重用:
Sahara也尽可能重用了OpenStack自身提供的IaaS层组件及其服务,例如:利用Nova提供虚拟机资源,利用Horizon提供人机界面,等等。
Sahara对Horizon(界面)、Glance(镜像管理)、Keystone(身份认证)、Heat(集群配置)、 Ceilometer(监控)、Nova(虚拟机管理)、Neutron(网络)、Cinder(块存储)和Swift(对象存储)都有不同程度的代码复 用,其中Nova、Glance和Keystone是必要组件,其他组件可选用。
Sahara的整体架构可参考其架构图。其中,章宇建议:
在分析集群创建流程时,主要应关注sahara.api、sahara.service.api、sahara.service.engine和 sahara.plugins这四个package的各自行为及相互关系。其中,sahara.service.api中的 _provision_cluster()驱动了整个cluster创建的过程。
接下来,章宇从产品和技术的层面将Sahara与EMR、Serengeti进行了对比,要点如下:
- EMR在Sahara基本模式的基础上融合了EDP模式的特点
- EDP的用户只需要指定“哪些数据”、“哪个集群”、“哪个程序包”这三要素,而完全不用关心集群如何创建、如何管理这样的与自己核心业务诉求无关的问题
- EMR的用户则除了需要在创建集群时指定大量信息外,还需要负责集群和业务的运行管理
- 比较而言,EDP的用户是纯粹的大数据业务应用者,而EMR的用户则身兼业务应用和系统运维两种职责
- 基于EMR的大数据解决方案,全面涵盖了数据的存储、计算、分析、共享等各个处理环节,这是Sahara还难以企及的
- Sahara和Serengeti的区别,可以说是“应用云化”和“应用虚拟化”的区别。Serengeti项目的主要关注点在于如何为搭建在虚拟机环境下的Hadoop集群提高性能和可靠性,这里面的思考是Sahara可以借鉴的
介绍到这里,章宇对Sahara目前的状态进行了概述,认为目前的Sahara还面临以下几点挑战:
- Sahara的管理平面性能存在疑问,创建和发布集群的等待时间有待测试
- 复杂管理的成功率方面,目前Sahara中没有看到明确的处理机制,这是一个缺失
- Sahara搭建的Hadoop在虚拟化环境下的性能有待优化,不过这个问题可以等到前面两个关键问题解决了之后再来优化
- Auto-scaling的缺失。目前Sahara要扩展需要人工执行
- Sahara最大的亮点在EDP,其价值有待进一步挖掘