Netflix資深軟件工程師Tom Gianos和Netflix大數(shù)據(jù)計算工程經(jīng)理Dan Weeks在2016年度QCon舊金山活動中介紹了Netflix的大數(shù)據(jù)策略和分析基礎架構,此外還概括介紹了他們的數(shù)據(jù)規(guī)模、S3數(shù)據(jù)倉庫,以及他們的大數(shù)據(jù)大數(shù)據(jù)聯(lián)合編排系統(tǒng)(Federated orchestration system)Genie。
為了介紹具體的需求,Weeks解釋稱,“規(guī)模”是Netflix在大數(shù)據(jù)領域面臨的最大挑戰(zhàn)。該公司在全球范圍內(nèi)有超過8600萬會員,每天通過流播的方式播放總時長超過1.25億小時的內(nèi)容。這樣的規(guī)模導致他們的數(shù)據(jù)倉庫容量已經(jīng)超過60PB。
盡管很多人可能覺得視頻流播數(shù)據(jù)是Netflix數(shù)據(jù)分析工作的主要數(shù)據(jù)源,但Weeks解釋說,他們分析的主要是其他類型的數(shù)據(jù),例如公司內(nèi)部各種微服務和營銷活動產(chǎn)生的事件,尤其是Weeks專門提到:
Netflix是一家徹頭徹尾的數(shù)據(jù)驅動型公司。我們喜歡根據(jù)真憑實據(jù)作出不同的決策。對于整個平臺的某些變更,如果無法切實證明有助于改善用戶體驗,我們寧愿不進行這樣的變更。
Weeks列舉了一個此類數(shù)據(jù)類型的用例:A/B測試。數(shù)據(jù)科學家可以分析用戶的交互,進而決定向用戶永久推送哪些類型的功能。
Weeks還概括介紹了Netflix的數(shù)據(jù)流程架構。他們共使用了兩個數(shù)據(jù)流,一個用于事件數(shù)據(jù),一個用于維度數(shù)據(jù)。事件數(shù)據(jù)通過他們的Kafka數(shù)據(jù)管道傳遞,維度數(shù)據(jù)則使用開源工具Aegisthus從他們的Cassandra群集拉取。最終,所有類型的數(shù)據(jù)匯總至S3。
雖然傳統(tǒng)數(shù)據(jù)倉庫可以使用HDFS,但Weeks提到使用S3可以獲得其他一些優(yōu)勢。例如99.99%可用性、版本控制,以及將計算負載從存儲系統(tǒng)中剝離的能力。最后一點非常關鍵,盡管數(shù)據(jù)未能本地保存會導致延遲增高,但通過這樣的剝離可以很輕松地在無須移動數(shù)據(jù)的前提下對計算群集進行縮放或執(zhí)行升級任務。
在數(shù)據(jù)倉庫方面,為了獲得所需數(shù)據(jù),Weeks介紹說他們使用了一種名為Metacat的元數(shù)據(jù)系統(tǒng)。具體來說,該系統(tǒng)提供了有關確定如何處理數(shù)據(jù)所需的信息,此外還可以從中了解數(shù)據(jù)具體是什么,保存在哪里。由于這是一種聯(lián)合(Federated)系統(tǒng),因此可在Hive、RDS、S3等存儲的基礎之上運行的技術。
Weeks還介紹說,數(shù)據(jù)本身存儲為Parquet文件格式。這是一種列式存儲格式,借此可獲得更高壓縮率。Parquet文件還可以存儲額外的元數(shù)據(jù),例如有關列最大/最小長度及其體積的信息。這樣諸如計數(shù)或跳過之類的操作就可以非??焖俚貓?zhí)行完畢。
有關Parquet調(diào)優(yōu)地詳細信息已由Netflix資深軟件工程師Ryan Blue公開發(fā)布至這里。
在Weeks從底層介紹他們的大數(shù)據(jù)環(huán)境后,Gianos從較高層面進行了介紹。他介紹的內(nèi)容主要圍繞Genie,這是一種聯(lián)合編排引擎,可用于管理諸如Hadoop、Pig、Hive等不同類型的大數(shù)據(jù)作業(yè)。
為了介紹他們針對Genie的具體需求,Gianos用一個簡單的用例作為例子:少量用戶同時訪問同一個群集。雖然這種情況非常易于管理,但隨著組織規(guī)模的增大,可能會面臨不同的情況,導致對客戶端資源和群集資源的需求激增,進而導致部署變得愈加復雜。這就導致了導致數(shù)據(jù)科學家經(jīng)常遇到的問題,例如作業(yè)速度變慢,數(shù)據(jù)處理庫過時等,這也使得系統(tǒng)管理員難以輕松地對這些問題作出響應。
按照Gianos的介紹,Genie可以幫助系統(tǒng)管理員執(zhí)行群集的啟動和管理、庫文件的安裝等任務,這一切都不會影響到最終用戶。從用戶的角度來看,用戶可以通過這樣的抽象直接訪問群集,而無須考慮如何連接到群集,也不需要了解群集上到底運行了什么。
在群集的更新方面,Gianos介紹說,只要成功通過測試,只需要添加對應的標簽即可順利遷移至新群集。Genie可以對所有工作進行編排,并讓原本的作業(yè)繼續(xù)在老群集上運行,同時新提交的作業(yè)可以在新群集上運行。這樣即可實現(xiàn)不停機更新。
Genios還介紹說,Genie的標簽機制可以應用于負載均衡,為此只需跨越群集對標簽進行復制即可拆分負載。從客戶端的角度來看,這一過程是完全透明的。
另外Genios也介紹了Genie的二進制更新機制。新的二進制文件可以移動到一個集中的下載位置,隨后在下一次調(diào)用時自動替換老的文件。
Genios從數(shù)據(jù)科學家的角度演示了Genie的完整工作流。基本上,他們只需要將作業(yè)提交至Genie,其中可包含群集標簽等元數(shù)據(jù),以及自己希望使用的大數(shù)據(jù)處理引擎。隨后Genie可以查找最適合運行該作業(yè)的群集。Genie的界面會通過用戶反饋告訴用戶作業(yè)的運行進度。
詳細信息請在線查看完整演示文稿。
閱讀英文原文:Netflix Demonstrates Big Data Analytics Infrastructure