硅谷企业的大数据平台架构什么样?看看Twitter、Airbnb、Uber的实践
導讀:本文分析一下典型硅谷互聯網企業的大數據平臺架構。
作者:彭鋒 宋文欣 孫浩峰
來源:大數據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實現了企業級的高可用性??偟膩碚f,這種對超大規模集群的支持以及被驗證過的企業級高可用性是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的概念:
全局的數據和應用資產的管理和運營;
明確平臺團隊和業務團隊的分工和合作;
重視可衡量的數據能力。
從上述介紹可以看到,硅谷企業在數據平臺的建設上一般都會采取比較開放的思路,從現有的比較合理的開源架構起步,搭建好自己的基礎平臺,解決基礎問題之后再來迭代。
它們在這個過程中會開發一些新技術,解決一些新問題,這些新技術和解決問題的新方法有的回饋到開源社區,有的就在自己公司內部使用。大家都想避免重復造輪子,這主要是基于以下幾方面的考慮:
重復造輪子風險大、投入高、見效慢;
自己造的輪子沒有社區,原始開發人員離職后難以招人替代;
開發人員更愿意使用現有開源工具,閉源系統很難招到頂尖人才;
閉源開發的系統迭代一般比開源要慢很多,如果趕不上,差距會越來越大;
涉及系統越來越復雜,一個公司很難自己覆蓋所有系統。
我們知道很多大公司內部開發的優秀產品因為沒有開源,后續迭代減慢,逐漸被開源產品取代。但是,并非所有層次的產品都適合開源,也并非所有的系統都適合選擇開源產品。我們建議的思路如下。
基礎架構組件:這方面的產品或組件最好選擇成熟的開源體系,因為成熟的開源體系經過了眾多企業的千錘百煉,具有較高的穩定性和可靠性,而如果自己重新來做,未知因素太多,坑也太多。
用戶交互組件:在基礎架構之上與用戶打交道的交互產品,因為各個企業使用習慣不一樣,底層技術棧不一樣,所以最好選擇定制服務或者自主開發。
關于作者:彭鋒,智領云科技聯合創始人兼CEO。武漢大學計算機系本科及碩士,美國馬里蘭大學計算機專業博士,主要研究方向是流式半結構化數據的高性能查詢引擎,在數據庫頂級會議和期刊SIGMOD、ICDE、TODS上發表多篇開創性論文。2011年加入Twitter,任大數據平臺主任工程師、公司架構師委員會大數據負責人,負責公司大數據平臺及流水線的建設和管理。
宋文欣,智領云科技聯合創始人兼CTO。武漢大學計算機系本科及碩士,美國紐約州立大學石溪分校計算機專業博士。曾先后就職于Ask.com和EA(電子藝界)。2016年回國聯合創立智領云科技有限公司,組建智領云技術團隊,開發了BDOS大數據平臺操作系統。
孫浩峰,智領云科技市場總監。前CSDN內容運營副總編,關注云計算、大數據、人工智能、區塊鏈等技術領域,對云計算、網絡技術、網絡存儲有深刻認識。擁有豐富的媒體從業經驗和專業的網絡安全技術功底,具有超過15年的企業級IT市場傳播、推廣、宣傳和寫作經驗,撰寫過多篇在業界具有一定影響力的文章。
本文摘編自《云原生數據中臺:架構、方法論與實踐》,經出版方授權發布。
延伸閱讀《云原生數據中臺:架構、方法論與實踐》
點擊上圖了解及購買
轉載請聯系微信:DoctorData
推薦語:前Twitter大數據平臺主任工程師撰寫,融合硅谷與國內經驗,全面講解云原生數據中臺架構、選型、方法論、實施路徑,國內外專家聯袂推薦。
劃重點????
干貨直達????
終于有人把p值講明白了
超詳細!17 步全解四象限導圖的使用方法
終于有人把大數據架構講明白了
手把手教你用Python求均值、中值和眾數
更多精彩????
在公眾號對話框輸入以下關鍵詞
查看更多優質內容!
PPT?|?讀書?|?書單?|?硬核?|?干貨?|?講明白?|?神操作
大數據?|?云計算?|?數據庫?|?Python?|?爬蟲?|?可視化
AI?|?人工智能?|?機器學習?|?深度學習?|?NLP
5G?|?中臺?|?用戶畫像?|?1024?|?數學?|?算法?|?數字孿生
據統計,99%的大咖都關注了這個公眾號
????
總結
以上是生活随笔為你收集整理的硅谷企业的大数据平台架构什么样?看看Twitter、Airbnb、Uber的实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手把手教你用AI画梵高的《星空》
- 下一篇: 高能干货:OpenCV看这篇就够了,9段