在批评数据湖的时候,你有没有想过,它并不是取代数据仓库的
數(shù)據(jù)湖初識
近兩年,為什么都開始談?wù)撈?Data Lake 這個”新名詞”了?
先說說我的想法,其實還是用戶需求驅(qū)動數(shù)據(jù)服務(wù),大家開始關(guān)注 Data Lake 的根本原因是用戶需求發(fā)生了質(zhì)變,過去的數(shù)據(jù)倉庫模式以及相關(guān)組件沒有辦法滿足日益進(jìn)步的用戶需求。
?
數(shù)據(jù)湖概念的誕生,源自企業(yè)面臨的一些挑戰(zhàn),如數(shù)據(jù)應(yīng)該以何種方式處理和存儲。最開始,企業(yè)對種類龐雜的應(yīng)用程序的管理都經(jīng)歷了一個比較自然的演化周期。
那么到底是什么樣的需求和挑戰(zhàn)驅(qū)動了技術(shù)的變革,從而導(dǎo)致了新技術(shù)的產(chǎn)生呢?
數(shù)據(jù)湖的定義
AWS定義數(shù)據(jù)湖是一個集中式存儲庫,允許您以任意規(guī)模存儲所有結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
微軟的定義就更加模糊了,并沒有明確給出什么是Data Lake,而是取巧的將數(shù)據(jù)湖的功能作為定義,數(shù)據(jù)湖包括一切使得開發(fā)者、數(shù)據(jù)科學(xué)家、分析師能更簡單的存儲、處理數(shù)據(jù)的能力。
但是隨著大數(shù)據(jù)技術(shù)的融合發(fā)展,早期的定義可能不再那么準(zhǔn)確了,數(shù)據(jù)湖不斷演變,匯集了各種技術(shù),包括數(shù)據(jù)倉庫、實時和高速數(shù)據(jù)流技術(shù)、數(shù)據(jù)挖掘、深度學(xué)習(xí)、分布式存儲和其他技術(shù)。
逐漸發(fā)展成為一個可以存儲所有結(jié)構(gòu)化和非結(jié)構(gòu)化任意規(guī)模數(shù)據(jù),并可以運行不同類型的大數(shù)據(jù)工具,對數(shù)據(jù)進(jìn)行大數(shù)據(jù)處理、實時分析和機器學(xué)習(xí)等操作的統(tǒng)一數(shù)據(jù)管理平臺。
?
所以說數(shù)據(jù)倉庫不是曾經(jīng)的那個倉庫了,數(shù)據(jù)湖也不是曾經(jīng)的那個"大明湖畔的夏雨荷了",sorry應(yīng)該不是那一片綠油油的湖了。
趨勢
這里聊一個很重要的趨勢:數(shù)據(jù)實時化。
當(dāng)然這里有很多其他的趨勢,比如低成本化、設(shè)計云原生化等,但總體上我還是認(rèn)為數(shù)據(jù)實時化是近幾年來最熱門、最明顯且最容易讓人看到收益的一個趨勢。
數(shù)據(jù)倉庫過去的模式大家可能都很了解,將整個數(shù)據(jù)倉庫劃分為 ODS、DWD、DWS,使用 Hive 作為數(shù)據(jù)存儲的介質(zhì),使用 Spark 或者 MR 來做數(shù)據(jù)清洗的計算。
這樣的數(shù)據(jù)倉庫設(shè)計很清晰,數(shù)據(jù)也比較容易管理,所以大家開開心心地使用這套理論和做法將近 10 年左右。
在這 10 年的時間里,主流的互聯(lián)網(wǎng)公司在數(shù)據(jù)技術(shù)上的玩法并沒有多大的改變,比如推薦需要用到的用戶畫像、電商里商品的標(biāo)簽、好友傳播時用的圖、金融風(fēng)控數(shù)據(jù)體系。
站在更高的一個角度看,我們會發(fā)現(xiàn),十年前做的事情,比如用戶畫像表,如果你現(xiàn)在去做推薦服務(wù),還是需要這個表。這樣會產(chǎn)生一個什么現(xiàn)象?
十年的互聯(lián)網(wǎng)行業(yè)的人才積累、知識積累、經(jīng)驗積累,讓我們可以更加容易地去做一些事情,比如十年前很難招聘到的懂推薦數(shù)據(jù)的人才,水平在如今也就是一個行業(yè)的平均值罷了。
既然這些事情變得更好做了,人才更多了,我們就期望在事情上做的更精致。因為從業(yè)務(wù)上講,我去推薦短視頻,讓用戶購買東西,這個需求是沒有止境的,是可以永遠(yuǎn)做下去的。
所以以前我可能是 T+1 才能知道用戶喜歡什么,現(xiàn)在這個需求很容易就達(dá)到之后,我希望用戶進(jìn)來 10s 之后的行為就告訴我這個用戶的喜好;以前可能做一些粗粒度的運營,比如全人群投放等,現(xiàn)在可能要轉(zhuǎn)化思路,做更加精細(xì)化的運營,給每個用戶提供個性化定制的結(jié)果。
技術(shù)演進(jìn)——實時化
數(shù)據(jù)實時化沒問題,但是對應(yīng)到技術(shù)上是什么情況呢?是不是我們要在實時領(lǐng)域也搭一套類似離線數(shù)據(jù)倉庫的數(shù)據(jù)體系和模式?
是的,很多公司確實是將實時數(shù)據(jù)流劃分為了不同層級——也就是我們說的實時數(shù)倉,整體層級的劃分思路和離線倉庫類似,但是實時數(shù)據(jù)的載體就不是 Hive 或者 Hdfs 了,而是要選擇更加實時的消息隊列,比如 Kafka,這樣就帶來了很多問題,比如:
- 消息隊列的存儲時間有限;
- 消息隊列沒有查詢分析的功能;
- 回溯效率比文件系統(tǒng)更差;
除了實時數(shù)據(jù)載體的問題,還有引入實時數(shù)倉后,和離線數(shù)倉的統(tǒng)一的問題,
- 比如實時數(shù)倉的數(shù)據(jù)治理、權(quán)限管理,是不是要單獨做一套?
- 如何統(tǒng)一實時數(shù)據(jù)和離線數(shù)據(jù)的計算口徑?
- 兩套數(shù)據(jù)系統(tǒng)的資源浪費嚴(yán)重,成本提高?
舉一個比較現(xiàn)實的例子,假設(shè)我們構(gòu)造了一個實時計算指標(biāo),在發(fā)現(xiàn)計算錯誤后我們需要修正昨天的實時數(shù)據(jù),這種情況下一般是另外寫一個離線任務(wù),從離線數(shù)倉中獲取數(shù)據(jù),再重新計算一遍,寫入到存儲里。
這樣的做法意味著我們在每寫一個實時需求的同時,都要再寫一個離線任務(wù),這樣的成本對于一個工程師是巨大的。
技術(shù)演進(jìn)——降低成本化
實時系統(tǒng)的成本太大了,這也是讓很多公司對實時需求望而生畏的原因之一。所以這樣去建設(shè)實時數(shù)倉的思路肯定不行啊,等于我要招兩倍的人才(可能還不止),花兩倍的時間,才能做一個讓我的業(yè)務(wù)可能只提升 10% 的功能。
從技術(shù)的角度來看,是這兩套系統(tǒng)的技術(shù)棧不一樣造成了工程無法統(tǒng)一。那么,數(shù)據(jù)湖就是用來解決這樣一個問題,比如我一個離線任務(wù),能不能既產(chǎn)生實時指標(biāo),也產(chǎn)生離線指標(biāo),類似下圖這樣:
?
滿足上面最重要的一個前提就是我的數(shù)據(jù)源是實時的,這樣對我們的大數(shù)據(jù)存儲主要就是HDFS 和 S3 又提出了新的挑戰(zhàn)——數(shù)據(jù)實時更新,如果原有技術(shù)或者組件不能滿足需求,新的技術(shù)在需求的驅(qū)動下就此誕生。
除了計算層面上,在數(shù)據(jù)管理上,比如中間表的 schema 管理,數(shù)據(jù)權(quán)限管理,能否做到統(tǒng)一,在架構(gòu)上實現(xiàn)統(tǒng)一后,我們在應(yīng)對實時需求時,可以將實時離線的冗余程度降到最低,甚至能夠做到幾乎沒有多余成本。
數(shù)據(jù)湖與數(shù)據(jù)倉庫的區(qū)別
數(shù)據(jù)倉庫是一種成熟穩(wěn)定的技術(shù)架構(gòu)。它們存儲經(jīng)過ETL 處理結(jié)構(gòu)化數(shù)據(jù),以便完成整決策支持的過程。數(shù)據(jù)倉庫將數(shù)據(jù)組合為一種聚合、摘要形式,以在企業(yè)范圍內(nèi)使用,并在執(zhí)行數(shù)據(jù)寫入操作時寫入元數(shù)據(jù)和模式定義。
數(shù)據(jù)倉庫通常擁有固定的配置;它們是高度結(jié)構(gòu)化的,因此不太靈活和敏捷。數(shù)據(jù)倉庫成本與在存儲前處理所有數(shù)據(jù)相關(guān),而且大容量存儲的費用相對較高。
相較而言,數(shù)據(jù)湖是較新的技術(shù),擁有不斷演變的架構(gòu)。數(shù)據(jù)湖存儲任何形式(包括結(jié)構(gòu)化和非結(jié)構(gòu)化)和任何格式(包括文本、音頻、視頻和圖像)的原始數(shù)據(jù)。根據(jù)定義,數(shù)據(jù)湖不會接受數(shù)據(jù)治理,但專家們都認(rèn)為良好的數(shù)據(jù)管理對預(yù)防數(shù)據(jù)湖轉(zhuǎn)變?yōu)閿?shù)據(jù)沼澤不可或缺。
數(shù)據(jù)湖在數(shù)據(jù)讀取期間創(chuàng)建模式,與數(shù)據(jù)倉庫相比,數(shù)據(jù)湖缺乏結(jié)構(gòu)性,而且更靈活;它們還提供了更高的敏捷性。在檢索數(shù)據(jù)之前無需執(zhí)行任何處理,而且數(shù)據(jù)湖特意使用了更加便宜的存儲。
數(shù)據(jù)湖與數(shù)據(jù)倉庫的差別很明顯。?然而,在企業(yè)中兩者的作用是互補的,不應(yīng)認(rèn)為數(shù)據(jù)湖的出現(xiàn)是為了取代數(shù)據(jù)倉庫,畢竟兩者的作用是截然不同的。
總結(jié)
離線架構(gòu)大行其道數(shù)十年,互聯(lián)網(wǎng)數(shù)十年技術(shù)積淀和業(yè)務(wù)發(fā)展對數(shù)據(jù)又提出新要求,實時計算技術(shù)的發(fā)展?jié)M足了人們對數(shù)據(jù)實時性的要求,但未能滿足互聯(lián)網(wǎng)人對低成本高性能的執(zhí)著追逐。
當(dāng)然,對于數(shù)據(jù)湖架構(gòu)的批評也是不絕于耳。有人批評說,匯集各種雜亂的數(shù)據(jù),應(yīng)該就是數(shù)據(jù)沼澤。
歷史見證了每一次新技術(shù)的誕生總是遇到萬般挫折與質(zhì)疑,但是它何曾讓你失望過。
總結(jié)
以上是生活随笔為你收集整理的在批评数据湖的时候,你有没有想过,它并不是取代数据仓库的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1个工具,4个技巧,就能高效开发各种报表
- 下一篇: 怎样做高质量的财务分析?