Netflix如何使用bulldozer從資料倉儲批處理資料轉移到鍵值儲存?

banq發表於2020-11-01

Netflix擁有超過1.95億使用者,每天生成數PB的資料。資料科學家和工程師從我們的訂戶和影片中收集這些資料,並實施資料分析模型以發現客戶行為,以最大程度地提高使用者滿意度。
通常,資料科學家和工程師使用大資料計算技術(例如SparkPresto)編寫Extract-Transform-Load(ETL)作業和管道,以處理此資料並定期計算成員或影片的關鍵資訊。處理後的資料通常儲存為AWS S3中的資料倉儲表。Iceberg在Netflix中作為資料倉儲表格式被廣泛採用,該格式解決了Hive表的許多可用性和效能問題。
在Netflix,我們還廣泛採用強調關注點分離的微服務架構。這些服務中的許多服務通常都需要對定期生成的細粒度資料進行快速查詢。例如,為了增強我們的使用者體驗,一個線上應用程式獲取訂戶的首選項資料來推薦電影和電視節目。
但是資料倉儲的目標不是為了以低延遲服務於微服務的點請求。
因此,我們必須有效地將資料從資料倉儲轉移到全域性,低延遲和高度可靠的鍵值儲存中。
 
Bulldozer是一個自助式資料平臺,可將資料從資料倉儲表高效地批次轉移到鍵值儲存中。它利用Netflix Scheduler來排程Bulldozer作業。Netflix Scheduler建立在Meson之上,Meson是一個通用的工作流程編排和計劃框架,用於執行和管理資料工作流程的生命週期。Bulldozer使資料倉儲表更易於被不同的微服務訪問,並減輕了每個團隊構建自己的解決方案的負擔。圖1顯示了我們如何使用Bulldozer在Netflix上移動資料。

Netflix如何使用bulldozer從資料倉儲批處理資料轉移到鍵值儲存?

Netflix如何使用bulldozer從資料倉儲批處理資料轉移到鍵值儲存?

作為將資料移至鍵值儲存的鋪裝路徑,Bulldozer提供了可擴充套件且高效的無程式碼解決方案。使用者只需要在YAML檔案中指定資料來源和目標群集資訊。Bulldozer提供了自動生成protobuf檔案中定義的資料模式的功能。protobuf架構用於Bulldozer和資料使用者對資料進行序列化和反序列化。Bulldozer使用Spark將資料倉儲中的資料讀取到DataFrames中,使用protobuf中定義的架構將每個資料條目轉換為鍵值對,然後將鍵值對分批傳遞到鍵值儲存中。
  
我們在2020年初將Bulldozer投入生產。目前,Bulldozer每天都將數十億條記錄從資料倉儲轉移到Netflix中的鍵值儲存。這些用例包括我們成員的預測分數資料以幫助改善個性化體驗,用於資料生命週期管理的Airtable和Google Sheets的後設資料,用於訊息傳遞個性化的訊息傳遞建模資料等等。


 

相關文章