前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >硅谷企业的大数据平台架构什么样?看看Twitter、Airbnb、Uber的实践

硅谷企业的大数据平台架构什么样?看看Twitter、Airbnb、Uber的实践

作者头像
IT阅读排行榜
发布于 2021-06-01 14:22:35
发布于 2021-06-01 14:22:35
8100
举报
文章被收录于专栏:华章科技华章科技

导读:本文分析一下典型硅谷互联网企业的大数据平台架构。

作者:彭锋 宋文欣 孙浩峰

来源:大数据DT(ID:hzdashuju)

01 Twitter的大数据平台架构

Twitter是最早一批推进数字化运营的硅谷企业之一,其公司运营和产品迭代的很多功能是由其底层的大数据平台提供的。图7-2所示为Twitter大数据平台的基本示意图。

▲图7-2 Twitter大数据平台架构

Twitter的大数据平台开发比较早,很多组件是其内部开发的,后面都有开源组件来对应。

  • Production Hosts:直接服务用户的生产服务器,也就是业务系统。
  • MySQL/Gizzard:用户关系图存在于Twitter的大规模MySQL分布式集群中,使用单个MySQL作为存储单位,在上面增加一层分布式协调数据分片(sharding)和调度的系统。
  • Distributed Crawler, Crane:类似于Sqoop和DataX的系统,可以从MySQL中将业务数据导出到Hadoop、HBase、Vertica里,主要用Java编写。
  • Vertica:大规模分布式数据处理系统(MPP),可以理解为一个以OLAP为主要任务的分布式数据库,主要用于建设数据仓库。类似的商业产品有Teradata、Greenplum等,类似的开源工具有Presto、Impala等。
  • Rasvelg:基于SQL的ETL工具,主要用于数据清洗、治理和数据仓库建设。
  • ScribeAggregators:日志实时采集工具,类似于Flume和Logstash,主要目的是将日志实时采集到Hadoop集群中(图7-2中的RT Hadoop Cluster)。
  • Log Events:主要是将客户端埋点的数据或其他需要实时处理的数据写入各种消息中间件中。
  • EventBus、Kafka、Kestrel queue:Kafka是开源的消息中间件,EventBus和Kestrel都是Kafka出现之前Twitter内部开发的消息中间件。需要内部系统的原因是有些业务需要类似于exactly-once(确定一次)的语义或者其他特殊需求,而Kafka成熟较晚,直到2017年的0.11版才推出exactly-once这种语义。
  • Storm、Heron:消息中间件的数据会被一个实时处理系统处理。Twitter早期用的是Storm,但后来发现Storm性能和开发问题比较大,就自己用C++开发了一个与Storm API兼容的系统Heron来取代Storm,并在2016年开源。
  • Nighthawk、Manhattan:Nighthawk是sharded Redis,Manhattan是sharded key-value store(用来取代Cassandra),推文、私信等用户信息存放在Manhattan里,Nighthawk作为缓存,这些组件是直接服务业务的;实时处理的数据和一些批处理分析的数据也会放在这里,被业务系统调用。
  • LogMover:日志复制工具,主要使用Hadoop的distcp功能将日志从实时服务器复制到另一个大的生产集群。
  • 第三方数据:例如苹果应用商店的数据,这些数据使用定制的爬虫程序在Crane框架里执行。
  • Pig、Hive、Scalding、Spark:各种内部批处理分析框架,也用来开发ETL工具。
  • DirReplicator:用来在各个数据中心、冷热Hadoop集群、测试/生产集群中同步数据目录。
  • DAL:Twitter的数据门户,基本上所有的数据操作都要经过DAL的处理。
  • Tableau、Birdbrain:Twitter的数据可视化/BI工具,Tableau是通用的商业化工具,主要供具有统计背景的数据分析师使用;Birdbrain是内部的BI系统,它将最常用的报表和指标做成自助式的工具,确保从CEO到销售人员都可以使用。

实际上,Facebook、Twitter、LinkedIn、EA、Uber、Airbnb、Lyft、Pinterest以及很多其他硅谷公司的大数据平台架构都非常类似,下面我们以Airbnb和Uber的数据平台架构为例进行介绍,看看它们之间的共同点。

02 Airbnb的大数据平台架构

图7-3展示了Airbnb的大数据平台架构。

▲图7-3 Airbnb大数据平台架构

Airbnb采用可扩展的大数据平台以确保产品能满足业务的增长,并对Hive集群单独区分金集群和银集群,对数据存储和计算进行分离以保证灾难恢复。

  • 数据源:包含各种业务数据的采集,例如将数据埋点事件日志发送到Kafka,MySQL数据通过数据传输组件Sqoop传输到Hive集群。
  • 存储:使用的是Hadoop的HDFS和AWS的S3。
  • 复制:有专门的复制程序在金、银集群中复制数据。
  • 资源管理:用到了YARN,同时通过Druid和亚马逊的RDS实现对数据库连接的监控、操作与扩展。
  • 计算:主要采用MapReduce、Hive、Spark、Presto。其中,Presto是Facebook研发的一套开源的分布式SQL查询引擎,适用于交互式分析查询。
  • 调度:开发并开源了任务调度系统Airflow,可以跨平台运行Hive、Presto、Spark、MySQL等Job,并提供调度和监控功能。
  • 查询:主要使用Presto。
  • 可视化:开发了负责界面显示的Airpal、简易的数据搜索分析工具Caravel及Tableau公司的可视化数据分析产品。

03 Uber的大数据平台架构

图7-4显示了Uber的第二代大数据平台架构。

2015年前后,Uber开始围绕Hadoop生态系统重新构建新的大数据平台。Uber引入了一个Hadoop数据湖,其中所有原始数据仅从不同的在线数据存储中摄取一次,并且在摄取期间不进行转换。这种设计降低了在线数据存储的压力,使Uber能够从临时摄取作业过渡到可扩展的摄取平台。

▲图7-4 Uber大数据平台架构

除了整合Hadoop之外,Uber还使该生态系统中的所有数据服务都可以横向扩展,从而提高了大数据平台的效率和稳定性,而且具有这种通用的水平可扩展性可以快速满足新业务需求。Uber第二代大数据平台中包括以下组件。

  • 实时数据采集:Kafka。
  • 键值数据库:类似于Twitter的Manhattan。
  • RDBMS DB:关系型数据库
  • Ingestion:数据采集(这里它强调了强制类型检查,即schema enforced,强制类型检查是数据治理中的一环)。
  • 数据采集、存储:主要使用Hadoop,采取Twitter开源的列式存储格式Parquet,构建了一个集中模式服务来收集、存储相关客户端库,将不同服务数据模式集成到这个中央模式服务中。
  • ETL:在Hadoop数据湖上进行数据的整合、治理、分析。
  • 数据仓库:使用Vertica,主要存储从数据湖中计算出来的宽表,因为处理能力有限,一般只存储最近的数据。
  • 计算框架:采用MapReduce、Hive、Spark和Presto。
  • 查询工具:使用Presto来实现交互式查询,使用Spark对原始数据进行编程访问,使用Hive进行非常大的离线查询,并允许用户根据需求进行选择。
  • 支持的数据应用:建模、机器学习、运营人员、A/B测试。
  • 支持随机查询:运营人员、数据科学家。

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 硅谷大数据平台架构的共性和建设思路

从以上大数据平台的架构范例中,我们可以看出以下几个共性

  • 统一的平台支持端到端的数据工具体系,尤其强调体现数据价值的应用。
  • 强调数据能力的闭环,从数据的产生、使用到最后反馈到产品。
  • 数据的采集、治理、分析、使用由所有部门在统一体系中完成。
  • 主要的基础组件大部分采用成熟系统,如Hadoop、Hive、Kafka、Spark、Vertica。
  • 自己开发一些侧重用户交互的组件,如ETL开发调度平台、数据门户、建模/数据治理。

这些共性体现在TotalPlatform的概念中,即要求整个企业的数据工作在统一平台中完成。此外,还有一些在架构图中没有显示,却是大部分数据平台都很重视的部分,如TotalInsight的概念:

  • 全局的数据和应用资产的管理和运营;
  • 明确平台团队和业务团队的分工和合作;
  • 重视可衡量的数据能力。

从上述介绍可以看到,硅谷企业在数据平台的建设上一般都会采取比较开放的思路,从现有的比较合理的开源架构起步,搭建好自己的基础平台,解决基础问题之后再来迭代。

它们在这个过程中会开发一些新技术,解决一些新问题,这些新技术和解决问题的新方法有的回馈到开源社区,有的就在自己公司内部使用。大家都想避免重复造轮子,这主要是基于以下几方面的考虑:

  • 重复造轮子风险大、投入高、见效慢;
  • 自己造的轮子没有社区,原始开发人员离职后难以招人替代;
  • 开发人员更愿意使用现有开源工具,闭源系统很难招到顶尖人才;
  • 闭源开发的系统迭代一般比开源要慢很多,如果赶不上,差距会越来越大;
  • 涉及系统越来越复杂,一个公司很难自己覆盖所有系统。

我们知道很多大公司内部开发的优秀产品因为没有开源,后续迭代减慢,逐渐被开源产品取代。但是,并非所有层次的产品都适合开源,也并非所有的系统都适合选择开源产品。我们建议的思路如下。

  • 基础架构组件:这方面的产品或组件最好选择成熟的开源体系,因为成熟的开源体系经过了众多企业的千锤百炼,具有较高的稳定性和可靠性,而如果自己重新来做,未知因素太多,坑也太多。
  • 用户交互组件:在基础架构之上与用户打交道的交互产品,因为各个企业使用习惯不一样,底层技术栈不一样,所以最好选择定制服务或者自主开发。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据DT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大厂是如何搭建大数据平台架构?
今天我们来看一下淘宝、美团和滴滴的大数据平台,一方面进一步学习大厂大数据平台的架构,另一方面也学习大厂的工程师如何画架构图。通过大厂的这些架构图,你就会发现,不但这些知名大厂的大数据平台设计方案大同小异,架构图的画法也有套路可以寻觅。
程序员小猿
2021/01/19
1.6K0
大厂是如何搭建大数据平台架构?
大数据平台架构:数据平台建设的几种方案
随着大数据在越来越多的企业当中落地,企业要开展大数据相关的业务,那么首先要搭建起自身的数据平台。而企业搭建大数据平台,往往需要结合成本、业务、人员等各方面的因素,来规划数据平台建设方案。今天我们就来聊聊数据平台建设的几种方案。
成都加米谷大数据
2020/10/14
3K0
大数据平台架构:数据平台建设的几种方案
大数据平台演进之路 | 淘宝 & 滴滴 & 美团
声明:本文参考了淘宝/滴滴/美团发表的关于大数据平台建设的文章基础上予以整理。参考链接和作者在文末给出。
王知无-import_bigdata
2019/09/16
3.4K0
hadoop大数据平台架构之DKhadoop详解
大数据的时代已经来了,信息的爆炸式增长使得越来越多的行业面临这大量数据需要存储和分析的挑战。Hadoop作为一个开源的分布式并行处理平台,以其高拓展、高效率、高可靠等优点越来越受到欢迎。这同时也带动了hadoop商业版的发行。这里就通过大快DKhadoop为大家详细介绍一下hadoop大数据平台架构内容。
用户3391135
2018/10/09
1.2K0
什么样的大数据平台架构,才是最适合你的?
技术最终为业务服务,没必要一定要追求先进性,各个企业应根据自己的实际情况去选择自己的技术路径。   它不一定具有通用性,但从一定程度讲,这个架构可能比BAT的架构更适应大多数企业的情况,毕竟,大多数企业,数据没到那个份上,也不可能完全自研,商业和开源的结合可能更好一点,权当抛砖引玉。   大数据平台架构的层次划分没啥标准,以前笔者曾经做过大数据应用规划,也是非常纠结,因为应用的分类也是横纵交错,后来还是觉得体现一个“能用”原则,清晰且容易理解,能指导建设,这里将大数据平台划分为“五横一纵”。
BestSDK
2018/03/01
8.2K0
什么样的大数据平台架构,才是最适合你的?
大数据平台架构设计思路
在业务增涨过程中,每个企业不知不觉积累积累了一些数据。无论数据是多是少,企业都希望让“数据说话”,通过对数据的采集、存储、分析、计算最终提供对业务有价值信息。
数字悠客
2020/06/02
2.5K0
大数据平台架构及主流技术栈
互联网和移动互联网技术开启了大规模生产、分享和应用数据的大数据时代。面对如此庞大规模的数据,如何存储?如何计算?各大互联网巨头都进行了探索。Google的三篇论文 GFS(2003),MapReduce(2004),Bigtable(2006)为大数据技术奠定了理论基础。随后,基于这三篇论文的开源实现Hadoop被各个互联网公司广泛使用。在此过程中,无数互联网工程师基于自己的实践,不断完善和丰富Hadoop技术生态。经过十几年的发展,如今的大数据技术生态已相对成熟,围绕大数据应用搭建的平台架构和技术选型也逐渐趋向统一。
全栈程序员站长
2022/09/02
4.3K0
全球100款大数据工具汇总
来源:网络 1、 Talend Open Studio 是第一家针对的数据集成工具市场的ETL(数据的提取Extract、传输Transform、载入Load)开源软件供应商。Talend的下
顶级程序员
2018/05/03
1.2K0
全球100款大数据工具汇总
大数据平台技术栈
Flume是一个分布式的高可用的数据收集、聚集和移动的工具。通常用于从其他系统搜集数据,如web服务器产生的日志,通过Flume将日志写入到Hadoop的HDFS中。
物流IT圈
2019/07/16
2.2K0
大数据平台技术栈
大数据平台架构技术选型与场景运用
本次分享将结合多个大数据项目与产品研发的经验,探讨如何基于不同的需求场景搭建通用的大数据平台。内容涵盖数据采集、存储与分析处理等多方面的主流技术、架构决策与技术选型的经验教训。 大数据平台内容 数据源
IT大咖说
2018/04/03
2.9K0
大数据平台架构技术选型与场景运用
全球100款大数据工具汇总
企鹅号小编
2017/12/29
1.5K0
全球100款大数据工具汇总
大数据平台架构:分布式技术架构简介
不可否认,大数据在这些年的发展当中,实现大数据处理的核心技术,始终是分布式。基于分布式技术架构,有分布式存储、分布式计算等相应的技术框架组件,形成了完善的技术生态,为大数据处理需求任务提供相应的解决方案。今天我们就从大数据平台架构的角度,来聊聊分布式技术架构。
成都加米谷大数据
2020/09/29
2.6K0
大数据平台架构:分布式技术架构简介
多图技术贴:深入浅出解析大数据平台架构
目录: 什么是大数据 Hadoop介绍-HDFS、MR、Hbase 大数据平台应用举例-腾讯 公司的大数据平台架构 “就像望远镜让我们能够感受宇宙,显微镜让我们能够观测微生物一样,大数据正在改变我们的
CSDN技术头条
2018/02/07
8440
多图技术贴:深入浅出解析大数据平台架构
金融信创湖仓一体数据平台架构实践
大数据基础设施的发展经历了四个主要阶段,每个阶段都有着标志性的技术进步来应对新的应用需求。
ApacheHudi
2024/03/18
4140
金融信创湖仓一体数据平台架构实践
100PB级数据分钟级延迟:Uber大数据平台(下)
到2017年初,我们的大数据平台被整个公司的工程和运营团队使用,使他们能够在同一个地方访问新数据和历史数据。用户可以通过同一个UI门户轻松访问不同大数据平台的数据。我们的计算集群中有超过100PB的数据和100000个vcores。每天支持100,000个Presto查询, 10,000个Spark作业,以及 20,000个Hive查询。我们的Hadoop分析架构遇到了可扩展性限制,许多服务受到高数据延迟的影响。
数据科学人工智能
2022/03/30
1.2K0
100PB级数据分钟级延迟:Uber大数据平台(下)
大数据下的数据分析平台架构
摘要:Admaster数据挖掘总监 随着互联网、移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.8万亿GB,对这些海量数据的分析已经成为一个非常重要且紧迫的需求。
黄规速
2022/04/14
8200
大数据下的数据分析平台架构
大数据架构平台架构设计和技术分析
本文首先介绍了大数据架构平台的组件架构,让读者了解大数据平台的全貌,然后分别介绍数据集成、存储与计算、分布式调度、查询分析等方面的观点,最后是专家眼里大数据平台架构的发展趋势。
大数据学习与分享
2023/09/18
2.8K0
大数据架构平台架构设计和技术分析
大数据平台如何进行云原生改造
如今,企业都面临着日益增长的数据量、各种类型数据的实时化和智能化处理的需求。此时,云原生大数据平台的高弹性扩展、多租户资源管理、海量存储、异构数据类型处理及低成本计算分析的能力,受到了大家的欢迎。但企业应该如何做好大数据平台的云原生改造和升级呢?
深度学习与Python
2022/03/22
4890
大数据平台架构的组成
是指以处理海量数据存储、计算及不间断流数据实时计算等场景为主的一套基础设施。典型的包括Hadoop系列、Spark、Storm、Flink以及Flume/Kafka等集群。
加米谷大数据
2019/10/15
2.7K0
大数据平台架构的组成
干货 | ALLUXIO在携程大数据平台中的应用与实践
作者简介 郭建华,携程技术中心软件研发工程师,2016年加入携程,在大数据平台部门从事基础框架的研究与运维,主要负责HDFS、Alluxio等离线平台的研发运维工作。 进入大数据时代,实时作业有着越来越重要的地位,并且部分实时和离线作业存在数据共享。实践中使用统一的资源调度平台能够减少运维工作,但同时也会带来一些问题。 本文将介绍携程大数据平台是如何引入Alluxio来解决HDFS停机维护影响实时作业的问题,并在保证实时作业不中断的同时,减少对HDFSNameNode的压力,以及加快部分Spark SQL作
携程技术
2018/07/05
1.3K0
推荐阅读
相关推荐
大厂是如何搭建大数据平台架构?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档