Airbnb 的數據基礎架構|數據|基礎架構|集群_網易科技

2020-11-23 網易手機

(原標題:Airbnb 的數據基礎架構)

今天還是回歸技術話題吧。雲計算尤其亞馬遜的雲服務(AWS)提供彈性計算能力,無需購買昂貴伺服器甚至機房,通過虛擬化主機,還提供豐富配套組件,節約運維成本,方便擴展,成為很多創業公司的首選。這裡就是 Airbnb 以 AWS 作為基礎搭建數據架構中走過的坑和經驗分享,由於筆者也剛好做過,同是天涯淪落人,難度 2 星,供做數據的朋友學習。

第 1 部分:數據基礎設施的背後哲學

在 Airbnb 我們提倡數據文化並使用數據作為關鍵輸入去決策。跟蹤指標,通過實驗驗證假設,建立機器學習模型和深入挖掘商業洞察是我們快速聰明前進的關鍵。

經過多年的進化,我們覺得數據基礎設施服務穩定,可靠,可擴展,因此是一個很好的機會來分享我們的經驗給社區。在接下來的幾周內,我們將發布一系列突出我們的分布式架構和工具組件的博客文章。由於開源貢獻者提供了許多我們每天使用的基礎系統,使我們不僅樂意分享在公共 GitHub 的項目,而且還會聊我們一路上學到的東西。

了解我們數據基礎設施的一些非正式理念:

  • 放眼開源世界:在開源社區中數據基礎設施有很多好的資源,我們儘量採用這些系統。此外,如果我們建立一些對自己有用又對社有回報的東西。

  • 首選標準組件和方法:有些時候是發明一種全新的一塊基礎設施是合理的,但很多時候,這沒有很好的利用資源。建立一個獨特解決方案是靠直覺還是採用現有的是非常重要的,而靠直覺必須正確考慮維護支持的隱性成本。

  • 確保它能夠擴展:我們發現數據與業務不是線性增長,但隨著技術員工建立新的產品和在業務採取新方式後,將超線性增長。

  • 通過傾聽你的同事解決實際問題:與公司的數據用戶溝通是了解路線圖的重要組成部分。與亨利·福特的口號一致,我們必須在找更快的馬與造汽車上保持平衡 - 但首先要聽你的客戶。

  • 留有一定的餘量:我們超額認購資源如集群,促進探索的文化。對基礎設施團隊實現資源利用最大化還高興的太早,但我們的假設是,在存儲中發現了一個新的商業機會將抵消了這些額外的機器費用。

第 2 部分:基礎設施概況

這裡是我們的基礎設施的主要部件的簡圖。

源數據進入我們的系統有兩個主要渠道:原始碼發送 Kafka 事件和線上資料庫將 AWS RDS 中的存儲導出,再通過 Sqoop 傳遞。

這裡數據源包含用戶的活動事件數據和快照源數據,發送到 「金」 集群存儲,並開始運行我們的提取,轉換和加載(ETL)。在此步驟中,我們針對業務邏輯,匯總表格,並執行數據質量檢查。

在上面的圖中,有 「金」 和 「銀」 兩個獨立集群,我們將在後面詳細描述。分離原因是保證計算和存儲資源的隔離,如果一個掛了可以做災難恢復。這種架構提供了一個理想環境,最重要的工作嚴格保障 SLA(服務保證協議),避免資源密集型即席查詢的影響。我們把 銀 集群作為一個生產環境,但是放寬保證,可以承受資源密集型查詢。

通過兩個集群我們獲得隔離力量,在管理大量的數據複製並維持動態系統之間有同步的成本。「金」 是我們的真正來源,我們將複製 「金」 數據的每一位到 「銀」。「銀」 集群上生成的數據不會被複製回 「金」,所以你可以認為這是 「銀」 作為一個超集集群,是單向複製方案。因為我們的很多分析和報告從 「銀」 簇發,當 「金」 有新數據產生,我們儘快複製它到 「銀」,去保證其他工作刻不容緩運行。更關鍵的是,如果我們更新預先存在的 「金」 集群上的數據,我們必須小心的更新並同步傳播給 「銀」。這種複製優化問題並沒有一個開源的很好解決方案,所以我們建立了一套新的工具,我們會以後更詳細地介紹。

我們改進 HDFS 已經取得了很大效果,並更準確地用 Hive 管理表,作為我們中心源的數據。倉庫的質量和完整性取決於數據不變的,繼承數據可通過重新推導計算的 - 使用分區 Hive 表對這個目標非常重要。此外,我們不鼓勵數據系統的擴散,不希望維護單獨的基礎設施,比如我們的源數據和我們終端用戶報告。根據我們的經驗,這些中間系統混淆真理的來源,增加 ETL 的管理負擔,難以跟蹤從原始數據一路上來自的迭代指標。我們不跑 Oracle,Teradata,Vertica,Redshift 等,而是使用 Presto 對所有 Hive 管理的表做即席查詢。我們都希望在不久的將來,聯通 Presto 和 Tableau。

其他的一些在圖中要注意的東西,包括 Airpal,使用 Presto 支持基於 Web 查詢執行的工具,我們搭建並開源了。這是在數據倉庫即席 SQL 查詢,1/3 以上的所有員工都使用該工具運行查詢主界面。作業調度功能就是通 Airflow,一個以編程方式編寫,調度和監控的平臺,可以運行在 Hive,Presto,Spark,MySQL 的數據管道等。我們在邏輯上跨集群共享 Airflow,但物理作業運行在合適的集群機器上。Spark 集群是工程師和數據科學家機器學習工作偏愛的另一處理工具,對流處理非常有用。你可以在 Aerosolve 查看我們在機器學習上的努力。 S3 是一個獨立的存儲系統,我們可以從 HDFS 數據得到便宜的長期存儲。Hive 管理的表可以對自己存儲改變,並指向 S3 的文件,容易訪問和管理元數據。

第 3 部分:Hadoop 集群的詳細演化

今年我們從架構不佳組群進行遷移,被稱為 「Pinky 與 Brain」,放到上述的 「金銀」 系統中去。兩年前,我們從 Amazon EMR 移到一組運行在 HDFS 300 TB 數據的 EC2 實例。今天,我們有兩個獨立的 HDFS 集群,數據 11 PB,我們 S3 存儲 PB 級別。有了這樣的背景,我們來解決問題:

1)在 Mesos 架構上運行一個獨特的 Hadoop

早期的 Airbnb 工程師們在一個叫做 Mesos 上,其中規定了部署跨多個伺服器的配置。我們使用 AWS 上 c3.8xlarge 的單一集群。每個 bucket 是 3T 的 EBS,並跑了所有的 Hadoop,Hive,Presto,Chronos 的,和 Mesos 上的 Marathon。

需要明確的是,許多公司都使用 Mesos 實施新穎的解決方案來管理大型重要基礎設施。但是,我們的小團隊決定運行更加規範,無處不在的部署,減少我們花在運營和調試的時間。

Mesos 上 Hadoop 問題:

  • 很少能見到工作運行和日誌文件

  • 很少能見到集群健康狀態

  • Hadoop 在 Mesos 只能運行 MR1

  • Task Tracker 競爭的性能問題

  • 集群的低利用率

  • 高負荷,難調試系統

  • 缺乏整合 Kerberos 安全

解決方法:答案是簡單地轉移到一個 「標準」 棧。我們很樂意從數百或數千公司學習操作大型集群,而不是試圖去創造一種新的解決方案。

2)遠程讀取和寫入

之前通過存儲在 EBS(彈性塊存儲)上訪問我們所有 HDFS 數據,我們發送到公共 Amazon EC2 運行查詢網絡數據。

Hadoop 是為特定硬體搭建,預先在本地磁碟讀寫,所以這是一個設計不匹配。

關於遠程讀寫,我們曾錯誤地選擇了 AWS 在三個不同的可用性區域分割我們的數據存儲,而它們在一個區域內。每個可用區被定為自己的 「機架」,3 個副本分別存放在不同的機架,因此遠程讀寫操作都不斷發生。這又是一個設計缺陷,導致緩慢的數據傳輸,當一臺機器丟失或損壞塊時候,遠程拷貝就隨時發生。

解決方法:使用本地存儲專門實例,並在一個可用性區域中運行,而不是讓 EBS 修正這些問題。

3)同構機器上工作負載的異構

縱觀我們的工作量,我們發現,我們的構件有不同的要求。我們的 Hive/ Hadoop/ HDFS 機器需大量的儲存空間,但並不需要多少內存或 CPU。Presto 和 Spark 渴望內存和高處理能力,但並不需要多大的存儲。通過 3TB EBS 支持運行 c3.8xlarge 被證明是存儲非常昂貴,也是限制因素。

解決方法:一旦我們遷移出 Mesos 架構,我們能選擇不同類型的機器運行各種集群,例如使用 r3.8xlarge 實例運行 Spark。亞馬遜發布新生代 「D 系列」 的實例,我們正在評估,這從成本角度所作的過渡更可取的。從 c3.8xlarge 機器每個節點的遠程存儲 3TB 轉變到 d2.8xlarge 機器上本地存儲 48TB 是非常有吸引力,會為我們在未來三年節省了數百萬美元。

4)HDFS Federation

我們一直在運行Federation HDFS 集群,數據共享物理塊池,但每個邏輯集群分離 mapper 和 reducer 集合。這讓我們可以通過 query 查詢訪問任何一塊數據,提高終端用戶體驗,但我們發現,Federation 並沒有得到廣泛的支持,被某些專家認為是實驗性和不可靠的。

解決方法:移到一個完全不同的 HDFS 節點,而不是運行 Federation,做到在機器水平的真正隔離,這也提供了更好的災難恢復機制。

5)系統監控是累贅

一個獨特的基礎設施體系最嚴重的問題是創建自定義監視和報警集群。 Hadoop,Hive,HDFS 是複雜的系統,容易發生眾多故障。試圖預測所有故障狀態,並設置合理的門檻是相當有挑戰性。

解決方法:我們籤了 Cloudera 的支持合同,用他們的專業知識來獲得在架構和操作這些大型系統,以及最重要的通過使用 Cloudera 的管理器工具,減少我們的維護負擔。接入到我們內部系統,大大減少了我們的監控和報警負擔,這樣我們花很少的時間進行系統維護和警報。

結論

在我們舊的集群上評估錯誤和低效率,開始著手系統地解決這些問題。去遷移 PB 數據和數百個用戶作業是一個漫長的過程,因為還不破壞我們現有服務;我們將單獨把一些工具貢獻給開源社區。

現在,遷移完成後,我們已經大大減少了平臺事故和故障的數量。不難想像我們在不成熟的平臺上處理的 bug 和問題,但系統現在基本上是穩定的。另一個好處是,當我們僱傭新工程師加入我們的團隊,上手很快因為系統也被其他公司採用。

最後,因為我們有機會在 「金銀」 系統去設置新鮮的架構,搭建所有新實例,用合理的方式添加 IAM 角色來管理安全性。這意味著在集群之上提供更為精密的訪問控制層,集成管理我們所有的機器。

我們能夠明顯削減成本,並同時提高性能。這裡有一些數據:

原文:https://medium.com/airbnb-engineering/data-infrastructure-at-airbnb-8adfb34f169c#.d1d0l7bee

原創文章,作者:董老師,如若轉載,請註明出處:http://36kr.com/p/5043787.html

「看完這篇還不夠?如果你也在創業,並且希望自己的項目被報導,請戳這裡告訴我們!」

本文來源:36氪 責任編輯:王曉易_NE0011

相關焦點

  • 分布式與集群分久必合,淺析Filecoin集群架構優化方向
    如果說Filecoin是區塊鏈的底層基礎設施,那麼,集群架構就是Filecoin的底層基礎設施。接下來,我們從集群發展的三個階段來談談Filecoin集群的優化方向。分布式集群集群架構組成的集群走的是「精緻化」的路線,將功能全部分開,有助於在最大程度上提高效率,但是也存在一定程度上的資源浪費。
  • 數據湖 VS 數據倉庫之爭?阿里提出大數據架構新概念:湖倉一體
    而以開源 Hadoop 體系為代表的的開放式 HDFS 存儲、開放的文件格式、開放的元數據服務以及多種引擎(Hive、Presto、Spark、Flink 等)協同工作的模式,則形成了數據湖的雛形。4. 階段四:大數據技術「普及期」。當前,大數據技術早已不是什麼火箭科技,而已經滲透到各行各業,大數據的普及期已經到來。
  • 【原創】-數據倉庫架構的設計
    概述 架構是數據倉庫建設的總體規劃,從整體視角描述了解決方案的高層模型,描述了各個子系統的功能以及關係,描述了數據從源系統到決策系統的數據流程。業務需求回答了要做什麼,架構就是回答怎麼做的問題。
  • 數據中心網絡架構特點「新三樣」
    :「南北」向流量,三層網絡,樹型架構。從網絡整體模型這宏觀的角度來看,數據中心的網絡的確發生了翻天覆地的變化,這些變化讓網絡可以更加高效的運行,本文將根據多年來洞察數據中心網絡發展的變化,總結出來了數據中心網絡架構新的三大特點,對網絡的看法雖只是管中窺豹,但也能讓讀者略知一二,讓讀者充分感受下這些年發生在數據中心網絡身上的大變化。
  • 戴爾推出現代化基礎架構平臺Dell EMC PowerStore
    戴爾科技集團今天發布具有劃時代意義的『第五代存儲』核心產品PowerStore,以領先業界的創新水平,將卓越的工作負載, 通過敏捷高速的『有效容量』技術,利用智能的基礎架構和具有充分適應性的靈活體系架構,為企業在數位化轉型中提供強有力的數據平臺支撐,全面滿足『新基建』建設對數據存儲的更高要求,幫助企業利用『新基建』建設獲得持續發展的數據動能。
  • Dell EMC發布新一代現代化基礎架構——PowerStore
    」 黃陳宏博士還表示,戴爾科技集團今天發布具有劃時代意義的『第五代存儲』核心產品PowerStore,以領先業界的創新水平,將卓越的工作負載, 通過敏捷高速的『有效容量』技術,利用智能的基礎架構和具有充分適應性的靈活體系架構,為企業在數位化轉型中提供強有力的數據平臺支撐,全面滿足『新基建』建設對數據存儲的更高要求,幫助企業利用『新基建』建設獲得持續發展的數據動能。
  • 5項雲基礎架構管理的最基本要求
    雲基礎架構廣泛而複雜。它指的是組成雲的伺服器,軟體,網絡設備和存儲設備。它與典型的數據中心基礎架構沒有什麼不同,只不過它是通過網際網路連接,進而使用雲端資源。雲基礎架構主要包括計算,網絡和存儲。
  • 大數據基礎知識:Hadoop分布式系統介紹
    Hadoop是Apache軟體基金會下一個開源分布式計算平臺,以hdfs(Hadoop Distributed File System)、MapReduce(Hadoop2.0加入了YARN,Yarn是資源調度框架,能夠細粒度的管理和調度任務,還能夠支持其他的計算框架,比如spark)為核心的Hadoop為用戶提供了系統底層細節透明的分布式基礎架構。
  • VMwareCloud on Dell EMC支持基礎架構現代化
    雲服務推出虛擬桌面基礎架構(VDI)支持、大規模部署和數據保護功能  VMware Cloud on Dell EMC提供高性能計算、存儲與網絡功能,由運行在戴爾科技集團超融合系統中位列第一的領先產品Dell EMC VxRail之上的VMware vSphere、VMware vSAN和 VMware NSX Data Center
  • 工業大數據應用技術架構有哪些類型
    工業大數據是指製造企業在生產運輸銷售過程中所產生的各種數據,包括企業生產鏈的各個環節以及工業傳感器,自動控制系統,物聯網等等。那麼大數據技術架構類型都有哪些?工業大數據是指製造企業在生產運輸銷售過程中所產生的各種數據,包括企業生產鏈的各個環節以及工業傳感器,自動控制系統,物聯網等等。那麼大數據技術架構類型都有哪些?  1、業務架構  業務架構定義了業務戰略、管理、組織和關鍵業務流程,是企業全面的信息化戰略和信息系統架構的基礎,是數據、應用、技術架構的決定因素。
  • Dell EMC PowerStore在存儲基礎架構性能和靈活性方面取得突破進展
    戴爾科技集團今天發布具有劃時代意義的『第五代存儲』核心產品PowerStore,以領先業界的創新水平,將卓越的工作負載, 通過敏捷高速的『有效容量』技術,利用智能的基礎架構和具有充分適應性的靈活體系架構,為企業在數位化轉型中提供強有力的數據平臺支撐,全面滿足『新基建』建設對數據存儲的更高要求,幫助企業利用『新基建』建設獲得持續發展的數據動能。
  • 更適合邊緣計算的基礎架構:超融合
    這一切的一切都清晰地指出,邊緣需要一些更加強大的基礎架構能力。我們認為,超融合適合邊緣計算有以下三個理由滿足新邊緣節點的定位,邊緣計算讓計算靠近數據,數據處理應用,分析應用軟體都將部署到邊緣,超融合可以為邊緣節點提供更強大的性能和存儲空間。
  • 大數據架構與系統(上午):高效處理高並發及大數據的經典分享
    大數據架構與系統專題論壇上午場,來自Hortonworks Senior Member of Technical Staff、阿里、百川、VMware和騰訊的嘉賓分別分享了各自在大數據架構與系統方面的最新實踐。
  • 康曉宇:數據基礎設施支撐金融科技創新
    華為利用自身在數據存儲、傳輸和安全等方面的技術優勢,以用戶需求為導向,積極參與銀行業數據基礎設施建設,為銀行業數位化轉型貢獻力量。在此過程中,中國人民銀行作為頂層設計者,積極運用前沿科技持續優化金融基礎設施,支撐金融體系結構轉型升級和金融資源高效配置。近年來,人民銀行除搭建統一的數字票據交易平臺、打造首個外匯期權中央對手清算系統及建成網聯平臺外,先後還成立了深圳金融科技有限公司、長三角金融科技有限公司、成方金融科技有限公司等多家金融科技公司,以期升級監管科技手段,推動金融科技深度應用,並促進構建金融科技國際競爭力。
  • 對比解讀五種主流大數據架構的數據分析能力 - 大數據_CIO時代網...
    在傳統大數據架構的基礎上,流式架構非常激進,直接拔掉了批處理,數據全程以流的形式處理,所以在數據接入端沒有了ETL,轉而替換為數據通道。  Lambda架構算是大數據系統裡面舉足輕重的架構,大多數架構基本都是Lambda架構或者基於其變種的架構。  Lambda的數據通道分為兩條分支:實時流和離線。
  • EA、Twitter、Airbnb、Uber,都怎麼建數據中臺?
    Hadoop 為基礎的大數據平臺,有了統一的數據倉庫、服務和算法來支撐業務部門分析、推薦及報表等訴求,此時的數據延遲從兩到三天縮短為幾個小時。 在建設過程中,我們也有一些原則,這些基本是矽谷的科技公司建設數據中臺都在採用的: 一是擁抱開源,不重複造輪子,比如大數據平臺基本都基於 Hadoop 生態; 二是基於公有雲的混合架構,遊戲伺服器部署在私有雲,但數據中臺部署在
  • 分布式架構概述
    分布式架構是一個非常複雜的體系,任何技術都不是孤立的存在,任何技術都無法適應所有場景。作為一名分布式系統架構或者資深研發人員,我們必須儘可能多的學習與之相關的各種知識,掌握各種技術的演進路線,正式從一名碼農蛻變成為架構師什麼是分布式?網際網路應用的特點是:高並發,海量數據。
  • 民生銀行大數據體系架構設計與演進
    第三個階段是全面推動在線實時數據計算及分析階段:   隨著批量數據體系的成熟,業務場景對實時數據的需求迅速湧現,我行科技啟動了全面的實時數據體系建設,對實時風控和實時事件驅動的營銷和運營形成了全面的支撐。
  • 《中國金融》|數據基礎設施支撐金融科技創新
    華為利用自身在數據存儲、傳輸和安全等方面的技術優勢,以用戶需求為導向,積極參與銀行業數據基礎設施建設,為銀行業數位化轉型貢獻力量。在此過程中,中國人民銀行作為頂層設計者,積極運用前沿科技持續優化金融基礎設施,支撐金融體系結構轉型升級和金融資源高效配置。近年來,人民銀行除搭建統一的數字票據交易平臺、打造首個外匯期權中央對手清算系統及建成網聯平臺外,先後還成立了深圳金融科技有限公司、長三角金融科技有限公司、成方金融科技有限公司等多家金融科技公司,以期升級監管科技手段,推動金融科技深度應用,並促進構建金融科技國際競爭力。
  • 以數據為中心的智能架構 看英特爾如何多維定義
    既然目標錨定了,那麼就沒有理由不去推動全面轉型,首當其衝的自然是基礎架構。雲計算為大數據的處理和應用提供了新的維度,用雲量甚至成為衡量一家企業數位化轉型程度的重要指標。在英特爾公司數據中心集團副總裁兼雲服務供應商集團總經理Raejeanne Skillern看來,雲在計算資源的交付和消費方式方面創造了「新常態」。