自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深度揭秘Airbnb的跨洋大數(shù)據(jù)挑戰(zhàn)及架構(gòu)實(shí)戰(zhàn)

原創(chuàng)
大數(shù)據(jù) 架構(gòu)
大數(shù)據(jù)時(shí)代,每個(gè)公司都會(huì)遇到一些共性的挑戰(zhàn),比如大數(shù)據(jù)的采集、整合、存儲(chǔ)、計(jì)算。Airbnb 在大數(shù)據(jù)平臺(tái)架構(gòu)構(gòu)建的過程中,也收獲了很多寶貴的經(jīng)驗(yàn)。

【51CTO.com原創(chuàng)稿件】大數(shù)據(jù)時(shí)代,每個(gè)公司都會(huì)遇到一些共性的挑戰(zhàn),比如大數(shù)據(jù)的采集、整合、存儲(chǔ)、計(jì)算。Airbnb 在大數(shù)據(jù)平臺(tái)架構(gòu)構(gòu)建的過程中,也收獲了很多寶貴的經(jīng)驗(yàn)。

[[230420]]

2017 年 12 月 1 日-2 日,由 51CTO 主辦的 WOTD 全球軟件開發(fā)技術(shù)峰會(huì)在深圳中州萬豪酒店隆重舉行。Airbnb Sr Software Engineer 王宇在大數(shù)據(jù)系統(tǒng)架構(gòu)設(shè)計(jì)專場與來賓分享了“Airbnb 的跨洋大數(shù)據(jù)架構(gòu)”主題演講。

他為大家揭秘了 Airbnb 是如何解決大數(shù)據(jù)的存儲(chǔ)應(yīng)用以及跨洋的數(shù)據(jù)平臺(tái)的搭建和支持,詳析 Airbnb 大數(shù)據(jù)挑戰(zhàn)和解決方案,分享如何解決大數(shù)據(jù)高效存儲(chǔ)和計(jì)算的過程,并了解如何進(jìn)行大數(shù)據(jù)平臺(tái)的跨洋支持。

本次分享分為三大部分:

  • Airbnb 的大數(shù)據(jù)需求,它是整個(gè)數(shù)據(jù)架構(gòu)的基礎(chǔ)。
  • Airbnb 的大數(shù)據(jù)架構(gòu),包括 Superset 等部件。
  • Airbnb 大數(shù)據(jù)架構(gòu)對(duì)中國的支持,雖然公司位于美國加州,但是對(duì)于中國市場業(yè)務(wù)也提供著數(shù)據(jù)方面的支持。

Airbnb 的大數(shù)據(jù)需求

先介紹一下 Airbnb 對(duì)大數(shù)據(jù)的需求和數(shù)據(jù)的驅(qū)動(dòng)。

Airbnb 于 2008 年 8 月成立,人們可以通過網(wǎng)站、手機(jī)或平板電腦,發(fā)布、發(fā)掘和預(yù)訂各地的獨(dú)特房源。上圖所列數(shù)據(jù)雖不是最新,但是可見數(shù)據(jù)的體量是非常龐大的。

[[230421]]

Airbnb 服務(wù)對(duì)象的多樣性決定了:我們必須通過定制化的數(shù)據(jù)產(chǎn)品,為用戶提供最佳的旅行體驗(yàn)。同時(shí)我們的平臺(tái)也會(huì)基于各種數(shù)據(jù)做出正確的決策。

我們對(duì)于數(shù)據(jù)的使用流程分為:

  • 最底層是數(shù)據(jù)的存儲(chǔ)(Storage),一般具有高配置的計(jì)算能力和容量。
  • 中間層是基于數(shù)據(jù)的挖掘與分析,我們根據(jù)不同的場景,通過 Data Mining和 Analytics,來實(shí)現(xiàn)用戶管理、定價(jià)和風(fēng)險(xiǎn)控制,從而為運(yùn)營(Operating)團(tuán)隊(duì)提供可參考的模型矩陣(Matrix)。
  • 最上層是我們根據(jù)不同的產(chǎn)品結(jié)構(gòu)所開展的基于數(shù)據(jù)的機(jī)器學(xué)習(xí)、人工智能、決策預(yù)判等。

我們在企業(yè)中比較推崇 Data Informed Culture,我們通過檢查各種試驗(yàn)性的假設(shè)、和深度挖掘各種商業(yè)數(shù)據(jù),從而構(gòu)建出機(jī)器學(xué)習(xí)的模型。

同時(shí),我們通過持續(xù)監(jiān)控與跟蹤,將數(shù)據(jù)作為決策的重要依據(jù),保證平臺(tái)上的任何推薦都能夠嚴(yán)格基于數(shù)據(jù)的指標(biāo)。

Airbnb 的大數(shù)據(jù)架構(gòu)

下面我們從 Airbnb 大數(shù)據(jù)架構(gòu)的構(gòu)建理念、整體的架構(gòu)特點(diǎn)和對(duì)部分系統(tǒng)的 Deep Dive 來深入探討。

Airbnb 大數(shù)據(jù)架構(gòu)理念

雖然經(jīng)歷了幾代數(shù)據(jù)架構(gòu)的升級(jí),但是我們的理念一直保持如下五個(gè)特點(diǎn):

  • 開源軟件的使用,在開源社區(qū)里有著非常多的優(yōu)秀產(chǎn)品可為我們提供幫助。
  • 使用標(biāo)準(zhǔn)的組件和方法,可以提高通用性和重用性。
  • 關(guān)注可擴(kuò)展性,在設(shè)計(jì)的最初就要考慮到系統(tǒng)的 scale up(擴(kuò)容),從而使得整體架構(gòu)既簡單易懂,有靈活伸縮。
  • 解決數(shù)據(jù)用戶的實(shí)際問題,真正滿足數(shù)據(jù)使用者的需求,給他們提供所需的環(huán)境。
  • 留有余量,為了提高產(chǎn)品效率,公司產(chǎn)品線的增加往往相對(duì)于現(xiàn)有的數(shù)據(jù)架構(gòu)的壓力并非是線性上升的,因此我們要在設(shè)計(jì)之初就留有足夠的余量。

Airbnb 大數(shù)據(jù)架構(gòu)實(shí)戰(zhàn)

上圖所列的數(shù)據(jù)雖不是最新,但與當(dāng)前的實(shí)際體量也差不多。我們?nèi)罩鞠⒌娜萘看蟾庞?10B,數(shù)據(jù)倉庫的容量大概是 50PB 以上,機(jī)器的數(shù)量大約有幾千臺(tái),而數(shù)據(jù)的年增長率則是每年 5 倍的增長速度。

上圖展示的是我們數(shù)據(jù)架構(gòu)的一個(gè)概覽。從左向右,首先是兩種輸入:

  • Event Logs,一般是由用戶行為所觸發(fā),它連接的是改進(jìn)版 Kafka,即:底層是 Kafka 的 Jenkins,而我們在上層做了許多優(yōu)化。
  • MySQL Dumps,來自傳統(tǒng)關(guān)系型數(shù)據(jù)庫的在線數(shù)據(jù)流被 Sqoop 傳遞到 Hadoop 的 HDFS 中。

而中間則由 Gold Hive Cluster 和 Silver Hive Cluster 兩個(gè)部分組成,所有的 Raw Data 和 Log 在被處理之前,全都被送入 Gold Cluster 進(jìn)行各種應(yīng)用、分類和特征的提取。

在產(chǎn)生相應(yīng)的 table 之后,再被放入 Server 中。那么如果所有的變化都是批量產(chǎn)生的話,我們就能夠很容易地實(shí)現(xiàn)同步。

但是如果出現(xiàn) Interfering Change(干擾變更)時(shí),為了保持一致性,我們自己寫了一個(gè) Re-air 的工具,去同步兩個(gè)單獨(dú)的 Data Clusters。

最上面是 Airflow Scheduling,Airflow 是我們公司內(nèi)部自行開發(fā)的一個(gè)系統(tǒng),我們用它去做 schedule job。

通過良好的 UI,它能夠?qū)崿F(xiàn)數(shù)據(jù)流的分配管理,控制任務(wù)間依賴關(guān)系和時(shí)間調(diào)度。同時(shí)它還能夠調(diào)度上圖右邊的 Spark Cluster。

最下方是 Presto Cluster,它是 Facebook 研發(fā)出的一套開源的分布式 SQL 查詢引擎,適用于交互式分析查詢。

其右邊對(duì)應(yīng)的分別是:負(fù)責(zé)界面顯示的 Airpal、簡易的數(shù)據(jù)搜索分析工具Caravel、和 Tableau 公司的可視化數(shù)據(jù)分析產(chǎn)品。

如上圖所示,我們的 Data Cluster 云是架構(gòu)在亞馬遜的 AWS 上,其中全球部分被放置在美國東部,而中國部分則被放置在新加坡:

  • 在存儲(chǔ)方面,我們使用的是 Hadoop 的 HDFS 和 AWS 的 S3。
  • 在資源管理上,我們用到了 YARN。同時(shí)我們通過 Druid 和亞馬遜的 RDS,實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫連接的監(jiān)控,以及操作與擴(kuò)展。
  • 在計(jì)算上,我們采用的是 MapReduce、HIVE 和 Presto。
  • 在調(diào)度上,我們使用的是自己開發(fā)的 Airflow。
  • 在可視化上,我們用到了現(xiàn)成的 Tableau 和 Superset。

我們來具體看看 Streaming Ingestion(數(shù)據(jù)流攝取)的流程。首先,我們主要獲取的是兩種輸入:

  • Event Logs 
  • DB Mutations

為了記錄數(shù)據(jù)庫的變化(mutations),我們自行開發(fā)了一個(gè)叫做 SpinalTap 的系統(tǒng),用來捕獲每個(gè)表(table)的變化。

該系統(tǒng)是由通用分布式集群管理與調(diào)度框架 Helix 來進(jìn)行管理的。Helix 不但開源,而且我個(gè)人覺得比 Zookeeper 更好用。

然后數(shù)據(jù)順次進(jìn)入 Kafka 的 Jenkins,Spark Streaming,之后到達(dá) Hbase 的數(shù)據(jù)倉庫。

上圖是 Re-air 的抽象邏輯圖,其中最重要的就是實(shí)現(xiàn)在 Gold、Cluster 和 Silver Cluster 之間 HDFS 的實(shí)時(shí)同步。另外在它對(duì)所有數(shù)據(jù)同步的過程中,也能具有去重的效果。

說到兩個(gè)獨(dú)立的集群,現(xiàn)在許多公司都在嘗試這樣的架構(gòu),我們也是力推 Gold+Silver 的集群模式。

它的優(yōu)勢在于:

  • 用戶作業(yè)的錯(cuò)誤能夠被完全隔離。
  • 容量規(guī)劃更為方便。我們可以對(duì)兩個(gè)集群的容量及各種參數(shù)進(jìn)行預(yù)估,在管理角度上更為清晰。
  • 保證 SLA。您一旦形成了獨(dú)立集群的概念和能力,就能快速地升級(jí)或部署新的函數(shù)與應(yīng)用。
  • 具有更為可靠性的災(zāi)難恢復(fù)能力。

當(dāng)然,該架構(gòu)也會(huì)存在著如下的缺點(diǎn):

  • 用戶容易混淆,據(jù)官方數(shù)據(jù)聲稱,用戶容易混淆兩個(gè)集群。
  • 數(shù)據(jù)同步,這是兩個(gè)集群的最大挑戰(zhàn),不過我們用 Re-air 解決了此問題。
  • 運(yùn)營成本可能會(huì)有所增加。

前面我們提到過兩個(gè)數(shù)據(jù)倉庫之間的同步策略,具體說來一般分為兩種方式:

  • 批量同步。優(yōu)點(diǎn)是:掃描 HDFS、Metastore,拷貝相關(guān)的數(shù)據(jù),簡單粗暴、也不需要維護(hù)狀態(tài);缺點(diǎn)是:當(dāng)您的存儲(chǔ)容量變得很大時(shí),延時(shí)會(huì)比較高。
  • 增量同步。優(yōu)點(diǎn)是:更為智能化,它可以記錄數(shù)據(jù)源的變化,通過拷貝到目標(biāo)集群,執(zhí)行相關(guān)操作。其延時(shí)非常低,我們在兩邊的同步延遲可以達(dá)到秒級(jí);缺點(diǎn)是:復(fù)雜,需要維護(hù)和處理好許多狀態(tài)。

如今業(yè)界許多公司都在使用 Airflow,來實(shí)現(xiàn)統(tǒng)一的調(diào)度管理系統(tǒng)(Schedule System)。我們公司內(nèi)部也開發(fā)出了一套自己的工作流系統(tǒng)。

它有著獨(dú)特的 UI,能提供許多內(nèi)置的 Operators。我們可以通過自定義各種 Job(作業(yè)),來支持 Hive、Presto、MySQL、S3 等系統(tǒng)。

當(dāng)然,相類似的系統(tǒng)也有:Apache 的 Oozie、Azkaban、AWS 的 SWF 等,但是 Airflow 更好用一些。

簡單來說,如果您要做一套 Flow,那么首先需要定義不同流程的特征(feature)。

通過收集,我們便可羅列出自己環(huán)境中的 DAG,其中包括各種成功或失敗的任務(wù)(tasks)。

通過如圖所示的樹形視圖(Tree View),您可以迅速地通過時(shí)間狀態(tài)來找到被阻止的地方。

您還能夠獲知關(guān)鍵組件間的邏輯關(guān)系,如上圖所示。

而通過任務(wù)耗時(shí)曲線圖,您可以了解到在過去的屢次運(yùn)行中,不同任務(wù)的具體耗時(shí)情況,出現(xiàn)過的異常值,以及最耗時(shí)的環(huán)節(jié)。

我們再來看看 Superset,它是由 Apache 提供的一種開源的大數(shù)據(jù)可視化工具,我們對(duì)其也進(jìn)行了自行開發(fā)。

Superset 的功能比較強(qiáng)大,您可以自行建立不同的 Dashboard(儀表盤),它支持各種應(yīng)用數(shù)據(jù)的查詢,并能以曲線、餅圖或表的形式展示出來,還能定制化顯示頁面。

通過簡單的頁面點(diǎn)擊,數(shù)據(jù)能夠立即呈現(xiàn)出來。同時(shí)它還能提供各式各樣的 Matrix(模型矩陣),以供進(jìn)一步做細(xì)粒度的分析。

Airbnb 大數(shù)據(jù)架構(gòu)對(duì)中國的支持

最后我介紹一下大數(shù)據(jù)架構(gòu)對(duì)中國的支持。對(duì)于 Airbnb 這樣的海外公司在進(jìn)入中國市場的過程中,鑒于中國對(duì)于數(shù)據(jù)安全性的合規(guī)要求等方面的挑戰(zhàn),我們找到了一些相應(yīng)的解決方案。

大數(shù)據(jù)架構(gòu)在中國的挑戰(zhàn)

由于 Airbnb 是一個(gè)旅游的平臺(tái),所以我們會(huì)存儲(chǔ)一些和個(gè)人相關(guān)的信息。例如:我們會(huì)要求用戶上傳身份證的相關(guān)信息。

如果是房東的話,我們還要求他注冊家里的各種數(shù)據(jù)。因此,我們不能將數(shù)據(jù)簡單放到谷歌上。

同時(shí),中國的研發(fā)團(tuán)隊(duì)不僅需要最大程度地使用中國本地的數(shù)據(jù),還要用到位于美國數(shù)據(jù)中心的全球數(shù)據(jù)。

因此,保證數(shù)據(jù)的安全性和使用時(shí)的高效性,是我們所面臨的兩大挑戰(zhàn)。

解決方案

我們在亞洲的新加坡有個(gè) Gold 和 Silver Cluster 區(qū)域中心,而在中國北京我們用的是 Jade,其結(jié)構(gòu)一模一樣,只是在業(yè)務(wù)上有細(xì)微的差別。

如前面所提到的,我們在存儲(chǔ)上用到了 HDFS 和 S3。而實(shí)際上,我們在全球絕大多數(shù)地區(qū)都使用的是 HDFS,只是在 Jade Cluster 里我們用的是 S3。

數(shù)據(jù)支持

首先來看看 Universal Export(統(tǒng)一導(dǎo)出)對(duì)數(shù)據(jù)的支持。我們無時(shí)無刻地在向中國這邊輸送著全球的信息數(shù)據(jù)。

上圖是數(shù)據(jù)輸出的簡要邏輯圖。最左邊是全球的數(shù)據(jù)表輸入,由于安全性的原因,我們通過 Filter 進(jìn)行過濾,并且在生產(chǎn)環(huán)境中建立了一個(gè)基于 HDFS 的 Staging Table。

而其右邊則是另一個(gè)基于 S3 的 Staging Table,因此這些數(shù)據(jù)在跨區(qū)域到達(dá)亞洲的時(shí)候,我們這邊會(huì)有相應(yīng)的 Job(作業(yè))去進(jìn)行評(píng)估和過濾。

另外,我們通過兩套數(shù)據(jù)的方式,大幅提高了對(duì)于數(shù)據(jù)的訪問使用速度,以及系統(tǒng)之間的復(fù)制效率。

服務(wù)監(jiān)控

下面簡單介紹一下我們端對(duì)端的服務(wù)級(jí)別監(jiān)控,如下圖:

由于系統(tǒng)對(duì)于實(shí)時(shí)性要求比較高,我們需要通過良好的監(jiān)控,以獲知在什么時(shí)候、在何處出現(xiàn)了什么問題。

因此我們在整個(gè)過程中都“打上”了各種時(shí)間標(biāo)記,從而能夠無時(shí)無刻地監(jiān)控到不同交易之間的時(shí)間差,同時(shí)也包括每一步之間數(shù)據(jù)的差異性。

如上圖所示,我們實(shí)現(xiàn)了按小時(shí)輸出日志事件、按天輸出近 300 張表、10TB 的數(shù)據(jù)量,這些都?xì)w功于我們在全球和中國范圍內(nèi)的大數(shù)據(jù)整體架構(gòu)。

[[230424]]

王宇,于華中科技大學(xué)和石溪大學(xué)(Stony Book University)獲得本科與碩士學(xué)位。曾就職 Quantcast 和 Qualcomm。在 Quantcast 主要負(fù)責(zé)廣告的實(shí)時(shí)競價(jià)和精準(zhǔn)投放;在 Qualcomm 負(fù)責(zé)搭建芯片數(shù)據(jù)的云存儲(chǔ)和分析系統(tǒng)?,F(xiàn)加入 Airbnb 中國基礎(chǔ)構(gòu)架組(China Infrastructure),任職高級(jí)軟件工程師,負(fù)責(zé) Airbnb 中國產(chǎn)品相關(guān)的基礎(chǔ)構(gòu)架(Data Infrastructure) 和反欺詐服務(wù)(Anti-Fraud)。

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2017-12-01 19:02:33

Airbnb大數(shù)據(jù)平臺(tái)

2013-07-31 09:20:07

大數(shù)據(jù)引擎云計(jì)算個(gè)性化搜索

2015-09-01 10:52:16

安全數(shù)據(jù)分析架構(gòu)

2016-10-12 09:10:56

大數(shù)據(jù)Airbnb

2018-04-27 13:21:29

大數(shù)據(jù)IT企業(yè)數(shù)據(jù)分析

2013-07-30 09:14:25

2019-07-24 06:05:32

2013-07-10 10:17:07

2025-02-19 15:09:50

2020-04-14 16:13:13

數(shù)據(jù)可視化大數(shù)據(jù)數(shù)據(jù)

2017-08-02 14:31:58

大數(shù)據(jù)集群數(shù)據(jù)存儲(chǔ)

2019-12-27 15:58:57

大數(shù)據(jù)IT互聯(lián)網(wǎng)

2021-09-01 14:45:08

服務(wù)器數(shù)據(jù)PostgreSQL

2020-04-14 11:18:11

大數(shù)據(jù)IT技術(shù)

2020-03-06 10:05:15

2021-08-27 16:50:54

大數(shù)據(jù)個(gè)人信用

2011-06-08 14:24:35

Airbnb移動(dòng)互聯(lián)網(wǎng)

2019-11-04 14:28:55

機(jī)器學(xué)習(xí)大數(shù)據(jù)數(shù)據(jù)挖掘

2013-01-07 10:00:58

大數(shù)據(jù)企業(yè)大數(shù)據(jù)

2014-12-25 14:28:47

大數(shù)據(jù)IDC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)