一贴浙、什么是數(shù)據(jù)湖
數(shù)據(jù)湖是目前比較熱的一個概念更胖,許多企業(yè)都在構(gòu)建或者計劃構(gòu)建自己的數(shù)據(jù)湖铛铁。但是在計劃構(gòu)建數(shù)據(jù)湖之前隔显,搞清楚什么是數(shù)據(jù)湖,明確一個數(shù)據(jù)湖項目的基本組成饵逐,進而設(shè)計數(shù)據(jù)湖的基本架構(gòu)括眠,對于數(shù)據(jù)湖的構(gòu)建至關(guān)重要。關(guān)于什么是數(shù)據(jù)湖倍权,有如下定義掷豺。
-
Wikipedia(維基百科)是這樣定義的:
數(shù)據(jù)湖是一類存儲數(shù)據(jù)自然/原始格式的系統(tǒng)或存儲,通常是對象塊或者文件薄声。數(shù)據(jù)湖通常是企業(yè)中全量數(shù)據(jù)的單一存儲当船。全量數(shù)據(jù)包括原始系統(tǒng)所產(chǎn)生的原始數(shù)據(jù)拷貝以及為了各類任務(wù)而產(chǎn)生的轉(zhuǎn)換數(shù)據(jù),各類任務(wù)包括報表默辨、可視化德频、高級分析和機器學習。數(shù)據(jù)湖中包括來自于關(guān)系型數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)(行和列)缩幸、半結(jié)構(gòu)化數(shù)據(jù)(如CSV壹置、日志、XML表谊、JSON)钞护、非結(jié)構(gòu)化數(shù)據(jù)(如email、文檔爆办、PDF等)和二進制數(shù)據(jù)(如圖像患亿、音頻、視頻)押逼。數(shù)據(jù)沼澤是一種退化的、缺乏管理的數(shù)據(jù)湖惦界,數(shù)據(jù)沼澤對于用戶來說要么是不可訪問的要么就是無法提供足夠的價值挑格。
-
AWS(亞馬遜云科技)的定義相對就簡潔一點:
數(shù)據(jù)湖是一個集中式存儲庫,允許您以任意規(guī)模存儲所有結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)沾歪。您可以按原樣存儲數(shù)據(jù)(無需先對數(shù)據(jù)進行結(jié)構(gòu)化處理)漂彤,并運行不同類型的分析 – 從控制面板和可視化到大數(shù)據(jù)處理、實時分析和機器學習灾搏,以指導做出更好的決策挫望。
-
微軟的定義就更加模糊了,并沒有明確給出什么是Data Lake狂窑,而是取巧的將數(shù)據(jù)湖的功能作為定義:
Azure(軟基于云計算的操作系統(tǒng))的數(shù)據(jù)湖包括一切使得開發(fā)者媳板、數(shù)據(jù)科學家、分析師能更簡單的存儲泉哈、處理數(shù)據(jù)的能力蛉幸,這些能力使得用戶可以存儲任意規(guī)模破讨、任意類型、任意產(chǎn)生速度的數(shù)據(jù)奕纫,并且可以跨平臺提陶、跨語言的做所有類型的分析和處理。數(shù)據(jù)湖在能幫助用戶加速應(yīng)用數(shù)據(jù)的同時匹层,消除了數(shù)據(jù)采集和存儲的復(fù)雜性隙笆,同時也能支持批處理、流式計算升筏、交互式分析等撑柔。數(shù)據(jù)湖能同現(xiàn)有的數(shù)據(jù)管理和治理的IT投資一起工作,保證數(shù)據(jù)的一致仰冠、可管理和安全乏冀。它也能同現(xiàn)有的業(yè)務(wù)數(shù)據(jù)庫和數(shù)據(jù)倉庫無縫集成,幫助擴展現(xiàn)有的數(shù)據(jù)應(yīng)用洋只。Azure數(shù)據(jù)湖吸取了大量企業(yè)級用戶的經(jīng)驗辆沦,并且在微軟一些業(yè)務(wù)中支持了大規(guī)模處理和分析場景,包括Office 365, Xbox Live, Azure, Windows, Bing和Skype识虚。Azure解決了許多效率和可擴展性的挑戰(zhàn)肢扯,作為一類服務(wù)使得用戶可以最大化數(shù)據(jù)資產(chǎn)的價值來滿足當前和未來需求。
關(guān)于數(shù)據(jù)湖的定義其實很多担锤,但是基本上都圍繞著以下幾個特性展開蔚晨。
- 數(shù)據(jù)湖需要提供足夠用的數(shù)據(jù)存儲能力,這個存儲保存了一個企業(yè)/組織中的所有數(shù)據(jù)肛循。
- 數(shù)據(jù)湖可以存儲海量的任意類型的數(shù)據(jù)铭腕,包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)多糠。
- 數(shù)據(jù)湖中的數(shù)據(jù)是原始數(shù)據(jù)累舷,是業(yè)務(wù)數(shù)據(jù)的完整副本。數(shù)據(jù)湖中的數(shù)據(jù)保持了他們在業(yè)務(wù)系統(tǒng)中原來的樣子夹孔。
- 數(shù)據(jù)湖需要具備完善的數(shù)據(jù)管理能力(完善的元數(shù)據(jù))被盈,可以管理各類數(shù)據(jù)相關(guān)的要素,包括數(shù)據(jù)源搭伤、數(shù)據(jù)格式只怎、連接信息、數(shù)據(jù)schema怜俐、權(quán)限管理等身堡。
- 數(shù)據(jù)湖需要具備多樣化的分析能力,包括但不限于批處理佑菩、流式計算盾沫、交互式分析以及機器學習裁赠;同時,還需要提供一定的任務(wù)調(diào)度和管理能力赴精。
- 數(shù)據(jù)湖需要具備完善的數(shù)據(jù)生命周期管理能力佩捞。不光需要存儲原始數(shù)據(jù),還需要能夠保存各類分析處理的中間結(jié)果蕾哟,并完整的記錄數(shù)據(jù)的分析處理過程一忱,能幫助用戶完整詳細追溯任意一條數(shù)據(jù)的產(chǎn)生過程。
- 數(shù)據(jù)湖需要具備完善的數(shù)據(jù)獲取和數(shù)據(jù)發(fā)布能力谭确。數(shù)據(jù)湖需要能支撐各種各樣的數(shù)據(jù)源帘营,并能從相關(guān)的數(shù)據(jù)源中獲取全量/增量數(shù)據(jù);然后規(guī)范存儲逐哈。數(shù)據(jù)湖能將數(shù)據(jù)分析處理的結(jié)果推送到合適的存儲引擎中芬迄,滿足不同的應(yīng)用訪問需求。
- 對于大數(shù)據(jù)的支持昂秃,包括超大規(guī)模存儲以及可擴展的大規(guī)模數(shù)據(jù)處理能力禀梳。
綜上,個人認為數(shù)據(jù)湖應(yīng)該是一種不斷演進中肠骆、可擴展的大數(shù)據(jù)存儲算途、處理、分析的基礎(chǔ)設(shè)施蚀腿;以數(shù)據(jù)為導向嘴瓤,實現(xiàn)任意來源、任意速度莉钙、任意規(guī)模廓脆、任意類型數(shù)據(jù)的全量獲取、全量存儲磁玉、多模式處理與全生命周期管理狞贱;并通過與各類外部異構(gòu)數(shù)據(jù)源的交互集成,支持各類企業(yè)級應(yīng)用蜀涨。
數(shù)據(jù)湖基本能力示意
這里需要再特別指出兩點:
- 可擴展是指規(guī)模的可擴展和能力的可擴展,即數(shù)據(jù)湖不但要能夠隨著數(shù)據(jù)量的增大蝎毡,提供“足夠”的存儲和計算能力厚柳;還需要根據(jù)需要不斷提供新的數(shù)據(jù)處理模式,例如可能一開始業(yè)務(wù)只需要批處理能力沐兵,但隨著業(yè)務(wù)的發(fā)展别垮,可能需要交互式的即席分析能力;又隨著業(yè)務(wù)的實效性要求不斷提升扎谎,可能需要支持實時分析和機器學習等豐富的能力碳想。
- 以數(shù)據(jù)為導向烧董,是指數(shù)據(jù)湖對于用戶來說要足夠的簡單、易用胧奔,幫助用戶從復(fù)雜的IT基礎(chǔ)設(shè)施運維工作中解脫出來逊移,關(guān)注業(yè)務(wù)、關(guān)注模型龙填、關(guān)注算法胳泉、關(guān)注數(shù)據(jù)。數(shù)據(jù)湖面向的是數(shù)據(jù)科學家岩遗、分析師扇商。目前,云原生(分布部署和統(tǒng)一運管的分布式云)應(yīng)該是構(gòu)建數(shù)據(jù)湖的一種比較理想的構(gòu)建方式宿礁,后面在“數(shù)據(jù)湖基本架構(gòu)”一節(jié)會詳細論述這一觀點案铺。