幾年前,內(nèi)部部署的數(shù)據(jù)湖是Ebates針對商業(yè)智能(BI)基礎(chǔ)設(shè)施方面的問題所給出的答案。如今,即席查詢的需求激增正在干擾核心ETL的工作負(fù)載。
設(shè)法將數(shù)據(jù)湖用作數(shù)據(jù)倉庫,這是公司在數(shù)據(jù)湖方面經(jīng)常遇到問題的做法之一。Gartner的研究副總裁Merv Adrian表示,這無異于“如果這不管用,這就是一個糟糕的想法”。
Ebates的分析副總裁Mark Stange-Tregear對這個問題耳熟能詳。Stange-Tregear大概在四年前加入Ebates,那時該公司除了單個SQL服務(wù)器和少數(shù)幾個數(shù)據(jù)工程師采用主要生產(chǎn)數(shù)據(jù)庫的副本外并沒有多少商業(yè)智能基礎(chǔ)設(shè)施。他們在提取,轉(zhuǎn)換和加載(ETL)的過程中感到十分吃力。
Stange-Tregear說:“ETL周期曾運(yùn)行了28個小時。團(tuán)隊(duì)成員卻無法定期獲得所需的報告或信息。我們達(dá)到了并發(fā)限制。這顯然很不穩(wěn)定。”
從成本的角度和Ebates對未來的愿景來看,構(gòu)建在Hadoop集群上的數(shù)據(jù)湖似乎是合適的解決方案。Ebates能將所有數(shù)據(jù)存放在一個地方并使其可用,而無需重新混合并處理多個數(shù)據(jù)孤島。
Stange-Tregear的團(tuán)隊(duì)用Python編寫了核心ETL流程,不到幾個月的時間該團(tuán)隊(duì)就能夠從新的數(shù)據(jù)湖中獲取核心的執(zhí)行報告。
Stange-Tregear說:“我們從那里得到了高管的支持。我們以更加快速且高效的方式獲取報告。我們開始對所有其它的東西進(jìn)行遷移。這個結(jié)尾日志很長,但最終我們關(guān)閉了所有SQL 服務(wù)器。”
ETL的瓶頸
Stange-Tregear解釋說,在Ebates單一的Hadoop集群中有兩個不同的數(shù)據(jù)區(qū)域,一個是公司所說的數(shù)據(jù)湖:這是一個非常干凈的生產(chǎn)數(shù)據(jù)庫的副本。團(tuán)隊(duì)對這些數(shù)據(jù)所做的轉(zhuǎn)換或清理工作沒有太大作用:數(shù)據(jù)湖中的表格看起來與生產(chǎn)數(shù)據(jù)庫中的數(shù)據(jù)幾乎完全相同,Stange-Tregear這樣說道。
集群的另一部分是Ebates所指的數(shù)據(jù)倉庫,這是大多數(shù)繁重報告所使用的已經(jīng)得到了清理,合理化,連接的數(shù)據(jù)。
Stange-Tregear說:“我們將數(shù)據(jù)湖中的數(shù)據(jù)預(yù)先聚合到數(shù)據(jù)倉庫中。我們直接從數(shù)據(jù)湖做報告,但如果我們做一些預(yù)處理,性能就可以得到提升。”
這個商業(yè)智能基礎(chǔ)設(shè)施曾是Stange-Tregear剛剛接受Ebates職位時針對這個難題所給出的答案。但隨著Hadoop集群的使用量激增,新的難題漸漸增多。
Stange-Tregear說:“在某個時刻,如果你在同一臺機(jī)器上做多種不同類型的工作,你就會遇到資源競爭。如果你在磁盤級別沒有資源競爭,你能進(jìn)行的讀寫操作十分有限。”
Hadoop集群的好處之一是可以添加更多計算機(jī)來提高處理能力。Stange-Tregear說,你可以用這種辦法來掩蓋問題,但這不是長久之計,因?yàn)閱栴}始終存在。
他解釋說:“因?yàn)槲覀冇泻芏噌槍旱呐R時工作負(fù)載,這是相對不受控制且不可預(yù)測的。如果有人進(jìn)行了大量的連接(join),集群將會接受這種做法并開始進(jìn)行處理,這可能會干擾你的ETL工作負(fù)載、按預(yù)定時間發(fā)送的電子郵件和例行報告,最終導(dǎo)致集群崩潰。”
Stange-Tregear指出,如今的Hadoop技術(shù)非常穩(wěn)定:“你必須對集群做一些十分令人討厭的事情才能使它崩潰。但我們現(xiàn)在每天都做幾次這樣的事情。”
有兩種顯而易見的方法可以解決這個問題。一種方法是嘗試找到那些礙事的工作負(fù)載類型,讓人們不要提交這些負(fù)載。
Stange-Tregear說:“在努力向所有人提供商業(yè)智能的同時,這是很難做到的。其實(shí)你并不想控制它,但我想控制它。我們無法消除那些有問題的添加物。可能我的分析團(tuán)隊(duì)才是主要的問題,而且當(dāng)你要導(dǎo)致了這樣的負(fù)載時,這是不可預(yù)測的。”
另一種方式(也就是Gartner的Adrian建議的那種方法)是將ETL處理和即席查詢方面的工作負(fù)載分給不同的硬件。Stange-Tregear承認(rèn),這讓人難以接受,因?yàn)檫@好像違背了最初的愿景,回到了孤立的數(shù)據(jù)基礎(chǔ)設(shè)施。但他指出,通過單獨(dú)的ETL集群和數(shù)據(jù)湖集群,Ebates可以將數(shù)據(jù)從一個集群復(fù)制到另一個集群,而不會增加太多的ETL開銷。
云端的ETL
Ebates現(xiàn)在面臨的決策是,是否要建立第二個內(nèi)部部署的Hadoop集群來進(jìn)行臨時報告,或者將第二個集群置于云端。
Gartner的Adrian補(bǔ)充道:“云方面的問題往往比數(shù)據(jù)湖方面的問題更重要,遷入云端往往更有意義。這是運(yùn)營支出(OpEx)而不是資本支出(CapEx)。有人對此進(jìn)行備份和改進(jìn)。這是一個巨大的優(yōu)勢。對數(shù)據(jù)科學(xué)方面的工作負(fù)載來說,也許最大的優(yōu)勢在于云,我能夠在云中利用計算和存儲分離的優(yōu)勢。”
Adrian表示,對于生產(chǎn)工作而言,云的好處并不那么明確。生產(chǎn)環(huán)境大部分時間都處于運(yùn)行狀態(tài),這就意味著它一直在計費(fèi),云的成本優(yōu)勢也不是很大。
雅虎的開發(fā),用戶數(shù)據(jù)和分析副總裁,AtScale的創(chuàng)始人兼技術(shù)副總裁David Mariani表示,阻礙云端的HDFS使用Hadoop的一個原因是它并不具備真正的成本效益。
Mariani說:“數(shù)據(jù)存儲在節(jié)點(diǎn)中。計算和存儲是掛鉤的。你不能關(guān)閉那些節(jié)點(diǎn)。這些節(jié)點(diǎn)全天候運(yùn)行,這就意味著這些節(jié)點(diǎn)一直在計費(fèi)。”
AtScale的答案是將數(shù)據(jù)直接存儲在Amazon S3中,AtScale的中間件將數(shù)據(jù)連接到所需的Tableau等計算和商業(yè)智能工具。Stange-Tregear說,這正是開放云端,以此作為解決Ebates需求的強(qiáng)有力的競爭產(chǎn)品。
他解釋說:“我們希望能夠直接查詢數(shù)據(jù)集。我們可以在不增加額外負(fù)載的情況下直接查詢S3 bucket嗎?”
Stange-Tregear說:“這是爬,走,跑的問題。我們的處理器基于內(nèi)部部署的解決方案。我們首先做什么?顯而易見的解決方案是首先將報告轉(zhuǎn)換為云解決方案。如果這么做可行的話,我們現(xiàn)在要做的第二步是將所有的ETL 處理遷移到云端嗎?如果事物的報告方面湊效的話,我們可能會朝著將ETL遷移到云中的方向努力。”