天天看點

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

在keen io,我們認為會運用事件資料的公司才具有競争優勢,世界領先的科技公司證明了這一點。但是我們仍然對facebook、amazon、airbnb、pinterest和netflix資料團隊所做的事情感到驚訝。他們為軟體和企業從資料中擷取資訊而制定了新标準。

由于他們的産品使用者量極大,是以這些團隊必須不斷地定義規模分析的方法。他們已經在資料架構中投入了數百萬美元,并且在大多數公司中,資料團隊的規模超過了整個工程部門的規模。

我們建立了keen io,是為了以讓大多數軟體工程團隊無需從頭架設所有内容,就可以利用最新的大型事件資料技術。但是,如果您對如何成為巨頭公司感到好奇,那麼請從最好的公司中收集一些架構。

netflix擁有9300萬使用者,沒有互動缺陷。正如他們的工程團隊在netflix資料管道的演變中描述的那樣,他們每天大約捕獲5000億個事件,每天大約有1.3 pb的資料傳輸。在高峰時段,他們每秒将記錄800萬次事件。他們雇用了100多個資料工程師或分析師。

以下是上述文章中資料架構的簡化視圖,其中顯示:開源系統apache kafka,搜尋伺服器elastic search,亞馬遜雲存儲服務aws s3,進行大資料處理的apache spark,運作架構apache hadoop和大資料分析服務emr作為主要元件。

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

擁有超過10億的活躍使用者,facebook有世界上最大的資料倉庫之一,存儲超過300pb。該資料被用于廣泛的應用:從傳統的批處理到圖形分析,機器學習和實時互動式分析。

為了進行大規模的互動式查詢,facebook的工程師發明了presto,一種針對點對點分析進行優化的定制分布式的sql查詢引擎。每天有1000多名facebook員工使用presto,通過hive、hbase和scribe的可插拔後端資料存儲,每天執行查詢次數超過30000次。

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

體系結構

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

後端資料存儲

airbnb支援超過1億使用者浏覽200多萬的房屋清單。他們智能地向這些使用者提供新的旅行建議的能力,這對他們的成長有很大影響。

airbnb的資料科學經理elena grewal在去年的會議“建立一個世界級的分析團隊”上提到,他們已經将airbnb的資料團隊擴充到擁有30多名工程師的規模。這是每人每年500萬的投資。

在部落格《資料基礎架構》一文中,airbnbeng建築師james mayfield、krishna puttaswamy、swaroop jagadish和kevin longdescribe描述了建構資料結構的基本要素以及如何為關鍵任務資料提供更高的可靠性。他們嚴重依賴hive和apache spark,并使用了facebook的presto。

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

airbnb的資料基礎結構

pinterest每月有超過1億的使用者浏覽超過100億的網頁浏覽量。截至2015年,他們将資料團隊擴充到擁有250多名工程師的規模。他們的基礎設施依賴于開源系統apache kafka,資料處理架構storm,系統基礎架構hadoop,開源資料庫hbase和gpu渲染器redshift。

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

資料管道結構圖

pinterest團隊不僅需要追蹤大量客戶相關的資料。像其他社交平台一樣,他們還需要向廣告商提供詳細的分析。黃彤波在《behind the pins: building analytics at pinterest》一文中寫道:為了滿足這一需求,他們改進了自己的分析堆棧。以下是pinterest團隊如何使用apache kafka,aws s3和hbase的示意圖:

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

pinterest商業資料分析結構圖

每天實時處理50億次會議。ed solovey介紹了crashlytics answers團隊建構的一些架構,用于處理數十億的日常移動裝置事件。

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

資訊流接收

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

存儲

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

批處理計算

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

加速計算

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

總覽

正如我之前提到的,我們建構了keen資料接口(api),以便任何開發人員都可以使用世界一流的資料架構,而無需擁有一個龐大的團隊建構一大堆基礎架構。成千上萬的工程團隊使用keen的api來捕獲、分析、流式傳輸和嵌入事件資料,包括實時和批處理應用程式。

雖然使用keen的開發人員在發送事件或運作查詢時不需要知道幕後發生的情況,但下面是處理其請求的體系結構:

Facebook、亞馬遜等巨頭是如何建造自己的資料庫的?| 全球聚焦

keen io 資訊處理結構圖

在輸入方面,負載均衡器處理數十億個傳入的文章請求。事件流來自于應用程式,網站,連接配接裝置,伺服器,計費系統等等。事件需要驗證、排序和可選擇地豐富額外的中繼資料,如ip-地理查詢。這一切都發生在幾秒鐘内。

一旦安全地存儲在apache cassandra中,事件資料就可以通過rest api進行查詢。我們的架構(通過apache storm,dynamodb,redis和aws lambda等技術)支援從原始傳入資料實時資料探索,到應用程式和面向客戶報告的緩存查詢的各種查詢需求。keen每天查詢數萬個事件屬性,并為成千上萬的客戶建構報告,自動化和資料挖掘界面。

感謝!

感謝團結一緻的資料工程界,不斷發明新的資料技術、開源,并分享他們的知識。如果沒有這麼多工程隊伍的基礎工作,沒有與我們天天一起合作的人,我們的團隊也不可能有今天。歡迎各方的意見和回報。

特别感謝文章中提到的的作者和建築師:netflix的steven wu,facebook presto、airbnbeng和pinterest的工程師martin traverso,以及crashlytics answers的ed solovey。

感謝編輯terry horner,dan kador,manu mahajan和ryan spraetz的幫助。

netflix

facebook

airbnb

pinterest

twitter / crashlytics

keen io的資料架構

keen io資訊處理結構圖

翻譯來自:蟲洞翻翻譯者id:王炜 編輯:郝鵬程