导读:本文分析一下典型硅谷互联网企业的大数据平台架构。
作者:彭锋 宋文欣 孙浩峰
来源:大数据DT(ID:hzdashuju)
01 Twitter的大数据平台架构
Twitter是最早一批推进数字化运营的硅谷企业之一,其公司运营和产品迭代的很多功能是由其底层的大数据平台提供的。图7-2所示为Twitter大数据平台的基本示意图。
▲图7-2 Twitter大数据平台架构
Twitter的大数据平台开发比较早,很多组件是其内部开发的,后面都有开源组件来对应。
实际上,Facebook、Twitter、LinkedIn、EA、Uber、Airbnb、Lyft、Pinterest以及很多其他硅谷公司的大数据平台架构都非常类似,下面我们以Airbnb和Uber的数据平台架构为例进行介绍,看看它们之间的共同点。
02 Airbnb的大数据平台架构
图7-3展示了Airbnb的大数据平台架构。
▲图7-3 Airbnb大数据平台架构
Airbnb采用可扩展的大数据平台以确保产品能满足业务的增长,并对Hive集群单独区分金集群和银集群,对数据存储和计算进行分离以保证灾难恢复。
03 Uber的大数据平台架构
图7-4显示了Uber的第二代大数据平台架构。
2015年前后,Uber开始围绕Hadoop生态系统重新构建新的大数据平台。Uber引入了一个Hadoop数据湖,其中所有原始数据仅从不同的在线数据存储中摄取一次,并且在摄取期间不进行转换。这种设计降低了在线数据存储的压力,使Uber能够从临时摄取作业过渡到可扩展的摄取平台。
▲图7-4 Uber大数据平台架构
除了整合Hadoop之外,Uber还使该生态系统中的所有数据服务都可以横向扩展,从而提高了大数据平台的效率和稳定性,而且具有这种通用的水平可扩展性可以快速满足新业务需求。Uber第二代大数据平台中包括以下组件。
04 云平台作为大数据平台的通用底座
在上面的几张架构图中,没有明确指出这样一个事实:绝大部分硅谷高科技公司的大数据平台是建立在一个底层云平台架构之上的。因为这是一个共识,所以大部分架构图中省略了这一层。
例如,很多硅谷的公司,从几十人的小公司到几千人的上市公司,在基于Apache Mesos来打造它们的大数据平台。那么它们为何选择Apache Mesos作为基础平台呢?
Apache Mesos是一个分布式集群管理系统,提供了高效、跨分布式的资源隔离和共享以及分布式计算的管理和调度。该系统目前被业界领先公司广泛应用到生产环境和大数据系统中,如苹果公司使用Mesos管理3000台集群来支持Siri语音识别应用,Twitter使用Mesos管理近万台机器的生产环境集群。
Apache Mesos是目前比较先进并经过生产环境验证的分布式集群管理系统。
作为一个数据中心管理系统,Mesos最重要的功能实际上就是基于混合技术做二层调度和资源管理。Mesos不仅支持容器技术,还支持非容器化的应用,实现整个资源池的混合架构、资源的抽象、扁平化管理,最终实现对上层分布式应用(如Spark、Cassandra、Hadoop等)的支持。
Mesos最大的特征及优势是对海量集群的商业和企业级支持。在Mesos的发展历程中有很多问题被发现和解决,并据此在商业环境中持续迭代Mesos的代码仓库,这样就形成了持续迭代和持续优化的机制。
Mesos能够用于大型甚至是超大型集群(主机数在万台以上的集群),在这之上,Mesos实现了企业级的高可用性。总的来说,这种对超大规模集群的支持以及被验证过的企业级高可用性是Mesos最主要的优势。
Mesos源于Google的论文“Large-scale cluster management at Google with Borg”,其中描述了Google的Borg系统是如何管理它的海量服务器和数据中心的。
Mesos的主要作者Ben Hindman在加州大学伯克利分校读博期间,根据Borg的主要思路写了一个分布式数据中心管理系统。Twitter在2010年高速发展时碰到了数据中心的管理问题,于是就把Hindman招募过来,并将Mesos作为自己的数据中心管理系统。
经过Twitter工程团队的大力推进和实际生产验证,Mesos在生产环境中很快就能管理上万台机器的集群,也因此在业界树立了数据中心管理的标杆。
同一时期,Uber、Airbnb、Lyft、Pinterest等公司正好也处于起步阶段,而它们在生产中碰到的问题与Twitter高度相似。因此,它们也就自然而然地选择了基于Mesos来打造自己的大数据平台。下面以Airbnb为例,看看它为什么会选择Mesos。
首先,在有Mesos之前,Airbnb大部分的开发人员和用户有很多数据需要计算,而用以前的方式很难平衡资源,不仅需要找机器来配置,还要安装一些Spark的集群工具。因此,数据开发人员难以及时处理数据并进行大数据计算。
而Mesos正好解决了开发人员的数据计算需求与资源供给之间的矛盾。在解决这个矛盾的过程中,研发人员就能够很轻松地完成大数据的计算和对相关运维的支持,后续也为研发人员带来了很多益处。
其次,Airbnb研发人员会用到Cassandra之类的工具,在使用Mesos以前,这需要先准备机器,安装操作系统、Spark集群、相关的依赖包,安装和使用十分困难。而使用了Mesos之后,新分布式应用上线和开发人员之间的矛盾就得以解决,从而能够及时满足研发人员对于新应用、新分布式系统的需求。
体会到Mesos对分布式开发流程颠覆式的改进之后,Airbnb的两名早期数据平台员工Tobias Knaup及Florian Leibert在2013年共同创立了Mesosphere公司。
Leibert曾是Twitter早期用户增长团队的成员和数据平台的用户,他也是在Twitter使用了Mesos之后意识到其优势并将Mesos引入Airbnb。2014年Hindman也加入其中,全职推广Mesos。
他们认为Apache Mesos是一个开源的孵化项目,它不仅能服务于Twitter、Facebook这样的大公司,还应该更多地服务于早期Airbnb这样的中小企业。
因此,他们创立了DC/OS这个项目,通过DC/OS的开发和商业化,帮助很多中小企业客户在工程师能力不足的情况下,也能受益于Mesos带来的好处。从广义上来说,他们普及了Mesos的应用。
实际上,Apache Mesos类似于Linux的内核,DC/OS则是基于内核之上的分布式应用系统。随着DC/OS的发展,在DC/OS中的许多基于Mesos的监控、日志管理、用户管理、多租户、安全等外围运维服务也随之成长起来。
总而言之,DC/OS是基于Mesos的开源技术,Mesosphere是基于DC/OS开源技术所做的企业级封装,也是构建数据基础架构的核心平台。
05 硅谷大数据平台架构的共性和建设思路
从以上大数据平台的架构范例中,我们可以看出以下几个共性。
这些共性体现在TotalPlatform的概念中,即要求整个企业的数据工作在统一平台中完成。此外,还有一些在架构图中没有显示,却是大部分数据平台都很重视的部分,如TotalInsight的概念:
从上述介绍可以看到,硅谷企业在数据平台的建设上一般都会采取比较开放的思路,从现有的比较合理的开源架构起步,搭建好自己的基础平台,解决基础问题之后再来迭代。
它们在这个过程中会开发一些新技术,解决一些新问题,这些新技术和解决问题的新方法有的回馈到开源社区,有的就在自己公司内部使用。大家都想避免重复造轮子,这主要是基于以下几方面的考虑:
我们知道很多大公司内部开发的优秀产品因为没有开源,后续迭代减慢,逐渐被开源产品取代。但是,并非所有层次的产品都适合开源,也并非所有的系统都适合选择开源产品。我们建议的思路如下。