天天看點

Netflix展示大資料分析基礎架構

netflix資深軟體工程師tom gianos和netflix大資料計算工程經理dan weeks在2016年度qcon舊金山活動中介紹了netflix的大資料政策和分析基礎架構,此外還概括介紹了他們的資料規模、s3資料倉庫,以及他們的大資料大資料聯合編排系統(federated orchestration system)genie。

為了介紹具體的需求,weeks解釋稱,“規模”是netflix在大資料領域面臨的最大挑戰。該公司在全球範圍内有超過8600萬會員,每天通過流播的方式播放總時長超過1.25億小時的内容。這樣的規模導緻他們的資料倉庫容量已經超過60pb。

盡管很多人可能覺得視訊流播資料是netflix資料分析工作的主要資料源,但weeks解釋說,他們分析的主要是其他類型的資料,例如公司内部各種微服務和營銷活動産生的事件,尤其是weeks專門提到:

netflix是一家徹頭徹尾的資料驅動型公司。我們喜歡根據真憑實據作出不同的決策。對于整個平台的某些變更,如果無法切實證明有助于改善使用者體驗,我們甯願不進行這樣的變更。

weeks列舉了一個此類資料類型的用例:a/b測試。資料科學家可以分析使用者的互動,進而決定向使用者永久推送哪些類型的功能。

weeks還概括介紹了netflix的資料流程架構。他們共使用了兩個資料流,一個用于事件資料,一個用于次元資料。事件資料通過他們的kafka資料管道傳遞,次元資料則使用開源工具aegisthus從他們的cassandra群集拉取。最終,所有類型的資料彙總至s3。

雖然傳統資料倉庫可以使用hdfs,但weeks提到使用s3可以獲得其他一些優勢。例如99.99%可用性、版本控制,以及将計算負載從存儲系統中剝離的能力。最後一點非常關鍵,盡管資料未能本地儲存會導緻延遲增高,但通過這樣的剝離可以很輕松地在無須移動資料的前提下對計算群集進行縮放或執行更新任務。

在資料倉庫方面,為了獲得所需資料,weeks介紹說他們使用了一種名為metacat的中繼資料系統。具體來說,該系統提供了有關确定如何處理資料所需的資訊,此外還可以從中了解資料具體是什麼,儲存在哪裡。由于這是一種聯合(federated)系統,是以可在hive、rds、s3等存儲的基礎之上運作的技術。

weeks還介紹說,資料本身存儲為parquet檔案格式。這是一種列式存儲格式,借此可獲得更高壓縮率。parquet檔案還可以存儲額外的中繼資料,例如有關列最大/最小長度及其體積的資訊。這樣諸如計數或跳過之類的操作就可以非常快速地執行完畢。

有關parquet調優地詳細資訊已由netflix資深軟體工程師ryan blue公開釋出至這裡。

在weeks從底層介紹他們的大資料環境後,gianos從較高層面進行了介紹。他介紹的内容主要圍繞genie,這是一種聯合編排引擎,可用于管理諸如hadoop、pig、hive等不同類型的大資料作業。

為了介紹他們針對genie的具體需求,gianos用一個簡單的用例作為例子:少量使用者同時通路同一個群集。雖然這種情況非常易于管理,但随着組織規模的增大,可能會面臨不同的情況,導緻對用戶端資源和群集資源的需求激增,進而導緻部署變得愈加複雜。這就導緻了導緻資料科學家經常遇到的問題,例如作業速度變慢,資料處理庫過時等,這也使得系統管理者難以輕松地對這些問題作出響應。

按照gianos的介紹,genie可以幫助系統管理者執行群集的啟動和管理、庫檔案的安裝等任務,這一切都不會影響到最終使用者。從使用者的角度來看,使用者可以通過這樣的抽象直接通路群集,而無須考慮如何連接配接到群集,也不需要了解群集上到底運作了什麼。

在群集的更新方面,gianos介紹說,隻要成功通過測試,隻需要添加對應的标簽即可順利遷移至新群集。genie可以對所有工作進行編排,并讓原本的作業繼續在老群集上運作,同時新送出的作業可以在新群集上運作。這樣即可實作不停機更新。

genios還介紹說,genie的标簽機制可以應用于負載均衡,為此隻需跨越群集對标簽進行複制即可拆分負載。從用戶端的角度來看,這一過程是完全透明的。

另外genios也介紹了genie的二進制更新機制。新的二進制檔案可以移動到一個集中的下載下傳位置,随後在下一次調用時自動替換老的檔案。

genios從資料科學家的角度示範了genie的完整工作流。基本上,他們隻需要将作業送出至genie,其中可包含群集标簽等中繼資料,以及自己希望使用的大資料處理引擎。随後genie可以查找最适合運作該作業的群集。genie的界面會通過使用者回報告訴使用者作業的運作進度。

本文轉自d1net(轉載)

繼續閱讀