White Elephant:開發者必備的Hadoop利器
LinkedIn是全球最大的職業社交網站,從2002年12月創立到2013年初,LinkedIn注冊用戶已到2億,平均每秒增加一個新用戶,86%的“財富100強企業”正在使用LinkedIn的付費解決方案,270萬個公司主頁在此安家落戶,用戶每年發起超過幾十億次搜索。為了應對這些超大數據,LinkedIn使用Hadoop進行產品開發,并且為了更好地理解LinkedIn在所有用例中的Hadoop集群使用情況,他們創建了White Elephant。
以下為文章全文:
隨著Hadoop的發展,調度、容量規劃和計費已成為其關鍵問題,這些都是公開的問題。今天,我們高興地宣布我們開源LinkedIn的解決方案:White Elephant。
在LinkedIn,我們使用Hadoop進行產品開發(如People You May Know和Endorsements那樣的預測分析應用),為了更好地理解我們在所有用例中的Hadoop集群使用情況,我們創建了White Elephant。
雖然Ganglia這樣的工具提供了系統級指標,但我們還是希望能夠了解每個用戶在任何時間所使用的資源。White Elephant解析Hadoop日志為Hadoop集群提供了逐層向下監視以及任務統計匯總,包括總任務時間、使用的時段、CPU時間和失敗的工作項。
White Elephant滿足了以下幾個需求:
調度:White Elephant具有在利用率較低的時段安排工作的能力,最大限度地提高集群效率。
容量規劃:可計劃未來的硬件需求,了解作業資源使用量的增長。
計費:Hadoop集群的容量有限,所以在多租戶環境中White Elephant可針對作業商業價值的大小來分配使用的資源。
在這篇文章中,我們將分享White Elephant的架構,并展示了一些它提供的可視化效果。我們已在GitHub上公布代碼,你可以自己嘗試一下!
架構
White Elephant架構圖

這張圖里分別有A、B、C這三個Hadoop網格,White Elephant將計算統計如下:
上傳任務:任務定期運行在Job Tracker上,并逐步拷貝新的日志文件到一個Hadoop網格進行分析。
計算: MapReduce作業的順序通過Job Executor進行協調,解析上傳的日志并計算匯總統計。
查看:一個查看器應用逐步加載匯總統計數據,緩存到本地,并公開一個Web界面,該做法可以細分Hadoop集群的統計數據。
例子
以下是我們實際使用的情況:我們在過去幾個月里注意到集群使用情況的增加,但沒人對此負責。我們可以使用White Elephant來調查這個問題。
下圖顯示了過去幾個月里一個示例數據集每周被使用的總時數,你會注意到,自1月中旬以來,每周的集群使用量基線從6000小時大約增加到了10000小時。

在上圖中,整個數據集都被挑選出來檢查,因此所有用戶的數據都被組合在一起,讓我們看看前20名用戶的堆疊圖。

現在我們可以看到前20名用戶的個人每周使用情況。剩下的46個用戶已經被組合成一個單一的指標。幾個用戶在可疑的集群使用組中脫穎而出,所以我們將進行更深的挖掘。
我們可以將鼠標懸停在圖例上來突出顯示這些用戶。

使用拖放操作,我們可以重新安排列表以便這些用戶出現在底部。

看起來像4個用戶已展示出顯著的使用率增加:用戶1和用戶2的使用量在1月中旬開始增加,而用戶43和用戶65的使用量在12月左右開始穩步攀升。
如果我們不希望看到這些用戶的集群使用情況,我們可以在圖例中取消對他們的選中。

一旦我們排除了這些用戶,我們可以看到集群的使用情況在這段時間內沒有明顯地改變,因此我們已經確定了我們的罪魁禍首。
讓我們追溯這四個用戶,用戶可以選擇一個多選控制,一個過濾器使它很容易通過名字來搜索特定的用戶。

如何將這四個用戶與其他人相比呢?為方便起見,其余用戶被聚合在一起,包括:只選擇總指標,并將其移動到頂部。

通過White Elephant,我們已經找到了問題所在,這要歸功于Hadoop使用情況中前所未有的可視性。我們甚至可以得到一個表,從CSV中列出被查詢的數據。

開源
White Elephant是開源的,并且可在Apache 2許可下自由使用。像往常一樣,我們歡迎貢獻!