天天看點

漫說資料湖——如何建湖?如何做資料ETL?為什麼大資料需要資料湖?

作者 |友創雲天

來源|http://t.hk.uy/bt5

資料湖這一概念,最早是在2011年由CITO Research網站的CTO和作家Dan Woods首次提出。其比喻是:如果我們把資料比作大自然的水,那麼各個江川河流的水未經加工,源源不斷地彙聚到資料湖中。業界便對資料湖一直有着廣泛而不同的了解和定義。

“資料湖是一個集中化存儲海量的、多個來源,多種類型資料,并可以對資料進行快速加工,分析的平台,本質上是一套先進的企業資料架構。”

"資料湖"的核心價值在于為企業提供了資料平台化營運機制。随着DT時代的到來,企業急需變革,需要利用資訊化、數字化、新技術的利器形成平台化系統,賦能公司的人員和業務,快速應對挑戰。而這一切的資料基礎,正是資料湖所能提供的。

下面通過一組漫畫,更直覺的解釋資料湖的概念。

從前,資料少的時候,人們拿腦子記就可以了,大不了采用結繩記事:

漫說資料湖——如何建湖?如何做資料ETL?為什麼大資料需要資料湖?

後來,為了更有效率的記事和工作,資料庫出現了。資料庫核心是滿足快速的增删改查,應對聯機事務。

漫說資料湖——如何建湖?如何做資料ETL?為什麼大資料需要資料湖?

比如你用銀卡消費了,背景資料庫就要快速記下這筆交易,更新你的卡餘額。

日子久了,人們發現,庫裡的資料越來越多了,不光要支援聯機業務,還有分析的價值。但是,傳統資料庫要滿足頻繁、快速的讀寫需求,并不适合這種以讀取大量資料為特征的分析業務。

漫說資料湖——如何建湖?如何做資料ETL?為什麼大資料需要資料湖?

于是,人們在現有的資料庫基礎上,對資料進行加工。這個加工過程,被稱為:ETL(Extract-Transform-Load)抽取、轉換和加載。

漫說資料湖——如何建湖?如何做資料ETL?為什麼大資料需要資料湖?

經過這三步,資料倉庫就建好了。這個“倉庫”,主要是為了資料分析用途,比如用于BI、出報表、做經營分析等等。

簡要總結下:資料庫用于聯機事務,通常為小資料量高頻讀寫。

漫說資料湖——如何建湖?如何做資料ETL?為什麼大資料需要資料湖?

資料庫等原始資料,經過ETL加工以後,就被裝進了資料倉庫。資料倉庫主要用于聯機分析業務,通常為大資料量讀取。

漫說資料湖——如何建湖?如何做資料ETL?為什麼大資料需要資料湖?

雖然應用場景不一樣,但他們都是結構化資料。

在相當長的一段時間内,他們聯合起來,共同滿足企業的實時“交易”型業務和聯機“分析性”的業務。

随着時代的發展,資料的類型越來越多,人們對資料的需求也越來越複雜。

漫說資料湖——如何建湖?如何做資料ETL?為什麼大資料需要資料湖?

企業越來越看重這些“大資料”的價值,希望把他們存好、用好。

這些資料,五花八門,又多又雜,怎麼存呢?

索性挖個大坑吧!

漫說資料湖——如何建湖?如何做資料ETL?為什麼大資料需要資料湖?

這就是資料湖的原型。說白了,資料湖就像一個“大水坑”,是一種把各類異構資料進行集中存儲的架構。

為什麼不是資料河Data River?

因為,資料要能存,而不是一江春水向東流。

為什麼不是資料池Data Pool?

因為,要足夠大,大資料太大,一池存不下。

為什麼不是資料海Data Sea?

因為,企業的資料要有邊界,可以流通和交換,但更注重隐私和安全,“海到無邊天作岸”,那可不行。

so,資料湖,Data Lake,剛剛好。

可是,概念雖好,把這個“水坑”用好卻不容易。

資料湖本身,具備以下幾個特點:

海量原始資料集中存儲,無需加工。資料湖通常是企業所有資料的單一存儲,包括源系統資料的原始副本,以及用于報告、可視化、分析和機器學習等任務的轉換資料。資料湖可以包括來自關系資料庫(行和列)的結構化資料,半結構化資料(CSV,日志, XML, JSON),非結構化資料(電子郵件,文檔, PDF)和二進制資料(圖像,音頻,視訊)。也就是資料湖将不同種類的資料彙聚到一起。

使用者按需處理,不需要移動資料即可計算。資料庫通常提供了多種資料計算引擎供使用者來選擇。常見的包括批量、實時查詢、流式處理、機器學習等。

資料湖提供靈活的,面向任務的資料編訂,不需要提前定義資料模型。

任何事物都有兩面性,資料湖有優點也同樣存在些缺點。

資料湖中的資料最接近原生的。這對于資料探索類需求,帶來很大便利,可以直接得到原始資料。

資料湖統一企業内部各個業務系統資料,解決資訊孤島問題。為橫跨多個系統的資料應用,提供一種可能。

資料湖提供了全局的、統一的企業級資料概覽視圖,這對于資料品質、資料安全..直到整體的資料治理,甚至提高到資料資産層面都大有裨益。

資料湖改變了原有工作模式,鼓勵人人了解、分析資料;而不是依賴于專門的資料團隊的”供給”方式,可以提升資料營運效率、改善客戶互動、鼓勵資料創新。

對資料的歸集處理程度明顯缺失,對于試圖直接使用資料的使用者來說顯得有些過于“原材料”化,且資料太過備援。應對這一問題,可通過”資料接入+資料加工+資料模組化”的方式來解決。

對資料湖基礎層的性能有較高要求,必須依托高性能的伺服器進行資料處理過程。這主要是來自于海量資料、異構多樣化資料、延遲綁定模式等帶來的問題。.

資料處理技能要求高。這也主要是因為資料過于原始帶來的問題。

資料湖建設思路從本質上颠覆了傳統資料倉庫建設方法論。傳統的企業資料倉庫則強調的是整合、面向主題、分層次等思路。其兩者并不是對等的概念,更多是包含;即資料倉庫作為資料湖的一類“資料應用”存在。

兩者可從以下次元進行對比:

1)存儲資料類型

資料倉庫是存儲清洗加工過的,可信任的、結構良好的資料;資料湖則是存儲大量原始資料,包括結構化的、半結構化的和非結構化的資料。在我們世界中,主要是由原始的、混亂的、非結構化的資料組成。

随着“混亂資料”的不斷更新,人們對它的興趣也不斷增長,想要更好的了解它、從其中擷取價值、并根據它做出決策。這就得需要一個靈活、靈活、經濟且相對輕松的解決方案,然而這些都不是資料倉庫的強項。而且當有新的需求提出時,傳統資料倉庫又難以快速随之變化。

2)處理資料方式

如果需要加載到資料倉庫中的資料,我們首先需要定義好它,這叫做寫時模式(Schema-On-Write)。而對于資料湖,您隻需加載原始資料,然後,當您準備使用資料時,就給它一個定義,這叫做讀時模式(Schema-On-Read)。

這是兩種截然不同的資料處理方法。因為資料湖是在資料到使用時再定義模型結構,是以提高了資料模型定義的靈活性,可滿足更多不同上層業務的高效率分析訴求。

3)工作合作方式

傳統的資料倉庫的工作方式是集中式的,業務人員給需求到資料團隊,資料團隊根據要求加工、開發成次元表,供業務團隊通過BI報表工具查詢。

資料湖更多是開放、自助式的(self-service),開放資料給所有人使用,資料團隊更多是提供工具、環境供各業務團隊使用(不過集中式的次元表建設還是需要的),業務團隊進行開發、分析。

資料湖的技術實作,與大資料技術緊密結合。

·通過Hadoop存儲成本低的特點,将海量的原始資料、本地資料、轉換資料等儲存在Hadoop中。這樣所有資料都在一個地方存儲,能給後續的管理、再處理、分析提供基礎。

·通過Hive、Spark等低成本處理能力(相較于RDBMS),将資料交給大資料庫平台劑型處理。此外,還可通過Storm、Flink等支援流式處理等特殊計算方式。

·由于Hadoop的可擴充性,可以很友善地實作全量資料存儲。結合資料生命周期管理,可做到全時間跨度的資料管控

雲計算采用虛拟化、多租戶等技術滿足業務對伺服器、網絡、存儲等基礎資源的最大化利用,降低企業對IT基礎設施的成本,為企業帶來了巨大的經濟性;同時雲計算技術實作了主機、存儲等資源快速申請、使用,則同樣為企業帶來了更多的管理便捷性。在建構資料湖的基礎設施時,雲計算技術可以發揮很大作用。此外,像AWS、MicroSoft、EMC等均提供了雲端的資料湖服務。

近些年,人工智能技術再一次飛速發展,訓練和推理等需要同時處理超大的,甚至是多個資料集,這些資料集通常是視訊、圖檔、文本等非結構化資料,來源于多個行業、組織、項目,對這些資料的采集、存儲、清洗、轉換、特征提取等工作是一個系列複雜、漫長的工程。資料湖需要為人工智能程式提供資料快速收集、治理、分析的平台,同時提供極高的帶寬、海量小檔案存取、多協定互通、資料共享的能力,可以極大加速資料挖掘、深度學習等過程。

傳統方式下,資料治理工作往往是在資料倉庫中。那麼在建構企業級資料湖後,對資料治理的需求實際更強了。因為與”預模組化”方式的數倉不同,湖中的資料更加分散、無序、不規格化等,需要通過治理工作達到資料”可用”狀态,否則資料湖很可能會”腐化”成資料沼澤,浪費大量的IT資源。平台化的資料湖架構能否驅動企業業務發展,資料治理至關重要。這也是對資料湖建設的最大挑戰之一。

資料湖中存放有大量原始及加工過的資料,這些資料在不受監管的情況下被通路是非常危險的。這裡是需要考慮必要的資料安全及隐私保護問題,這些是需要資料湖提供的能力。但換種角度來看,将資料集中在資料湖中,其實是有利于資料安全工作的。這要比資料分散在企業各處要好的多。

資料湖是一種存儲架構,本質上講是存儲,企業基于雲服務,可以快速挖出一個适合自己的“湖”,完成資料的采集、存儲、處理、治理,提供資料內建共享服務、高性能計算能力和大資料分析算法模型,支撐經營管理資料分析應用的全面開展。為規模化資料應用賦能。

資料湖技術架構涉及了資料接入(轉移)、資料存儲、資料計算、資料應用、資料治理、中繼資料、資料品質、資料資源目錄、資料安全及資料審計等10個方面領域:

漫說資料湖——如何建湖?如何做資料ETL?為什麼大資料需要資料湖?

資料提取允許連接配接器從不同的資料源擷取資料并加載到資料湖中。資料提取支援:所有類型的結構化,半結構化和非結構化資料。批量,實時,一次性負載等多次攝取;在資料接入方面,需提供适配的多源異構資料資源接入方式,為企業資料湖的資料抽取彙聚提供通道。

資料存儲應是可擴充的,提供經濟高效的存儲并允許快速通路資料探索。它應該支援各種資料格式。

資料湖需要提供多種資料分析引擎,來滿足資料計算需求。需要滿足批量、實時、流式等特定計算場景。此外,向下還需要提供海量資料的通路能力,可滿足高并發讀取需求,提高實時分析效率。并需要相容各種開源的資料格式,直接通路以這些格式存儲的資料。

資料治理是管理資料湖中使用的資料的可用性,安全性和完整性的過程。資料治理是一項持續的工作,通過闡明戰略、建立架構、制定方 針以及實作資料共享,為所有其他資料管理職能提供指導和監督。

中繼資料管理是資料湖整個資料生命周期中需要做的基礎性工作,企業需要對中繼資料的生命周期進行管理。中繼資料管理本身并不是目的,它是組織從其資料中獲得更多價值的一種手段,要達到資料驅動,組織必須先是由中繼資料驅動的。

資料資源目錄的初始建構,通常會掃描大量資料以收集中繼資料。目錄的資料範圍可能包括全部資料湖中被确定為有價值和可共享的資料資産。資料資源目錄使用算法和機器學習自動完成查找和掃描資料集、提取中繼資料以支援資料集發現、暴露資料沖突、推斷語義和業務術語、給資料打标簽以支援搜尋、以及辨別隐私、安全性和敏感資料的合規性。

資料安全是安全政策和安全程式的規劃、開發和執行、以提供對資料和資訊資産的身份驗證、授權、通路和稽核。需要在資料湖的每個層中實作安全性。它始于存儲,發掘和消耗,基本需求是停止未授權使用者的通路。身份驗證、審計、授權和資料保護是資料湖安全的一些重要特性。

資料品質是資料湖架構的重要組成部分。資料用于确定商業價值,從劣質資料中提取洞察力将導緻品質差的洞察力。資料品質重點關注需求、檢查、分析和提升的實作能力,對資料從計劃、擷取、存儲、共享、維護、應用、消亡生命周期的每個階段裡可能引發的各類資料品質問題進行識别、度量、監控、預警等一系列活動,并通過改善和提高組織的管理水準使得資料品質獲得進一步提高。

兩個主要的資料審計任務是跟蹤對關鍵資料集的更改:跟蹤重要資料集元素的更改;捕獲如何/何時/以及更改這些元素的人員。資料審計有助于評估風險和合規性。

資料應用是指通過對資料湖的資料進行統一的管理、加工和應用,對内支援業務營運、流程優化、營銷推廣、風險管理、管道整合等活動,對外支援資料開放共享、資料服務等活動,進而提升資料在組織營運管理過程中的支撐輔助作用,同時實作資料價值的變現。在基本的計算能力之上,資料湖需提供批量報表、即席查詢、互動式分析、資料倉庫、機器學習等上層應用,還需要提供自助式資料探索能力。

資料湖對一個企業的數字化轉型和可持續發展起着至關重要的作用。建構開放、靈活、可擴充的企業級統一資料管理和分析平台, 将企業内、外部資料随需關聯,打破了資料的系統界限。

利用資料湖智能分析、資料可視化等技術,實作了資料共享、日常報表自動生成、快速和智能分析,滿足企業各級資料分析應用需求。

深度挖掘資料價值,助力企業數字化轉型落地。實作了資料的目錄、模型、标準、認責、安全、可視化、共享等管理,實作資料集中存儲、處理、分類與管理,實作報表生成自動化、資料分析靈活化、資料挖掘可視化,實作資料品質評估、落地管理流程。

資料湖本身是一個中心化的存儲,能夠存儲任意規模的結構化與非結構化資料。資料湖的優勢就是資料可以先作為資産存放起來,問題就在于如何把這些資料在業務中利用起來。當部署了資料湖之後,資料治理問題将會接踵而至,比如從資料湖到資料湖,如何将資料進行分流、湖的資料如何進行整理等。

資料倉庫裡的資料是經過過整理、清晰易懂的。而資料湖的概念是不經處理直接進行堆砌,那麼資料湖就有可能會變成“資料沼澤”,篩選難度會變大。由于定義不正确、資訊不完整、資料陳舊或無法找到所需資訊,它需要更多的中繼資料來了解存儲在資料湖中的資料資産,包括資料内容、資料資産圖譜、資料敏感性、使用者喜好、資料品質、上下文(缺乏上下文将無法用于分析)和資料價值等業務層面的了解。另外這些系統和應用是技術人員開發的,由于技術人員和業務人員的思維和“語言”存在差異,這使得業務使用者擷取資料變得更加複雜和困難。

如何讓資料湖的水保持清亮不會成為資料沼澤?“資料湖的資料不被有效使用就會成為大垃圾場。”中國有句諺語:“流水不腐,戶樞不蠹”。資料隻有流動起來,才可以不成為資料沼澤,湖泊隻是暫存資料河流的基地。資料流動就意味着所有的資料産生,最終要有它的耕種者和使用者。要讓資料有效流動起來,就要建立有效的“資料河”(Data River)。業界在資料湖的嘗試上一般都會忽視資料治理的重要性,這是很危險的,由它導緻的資料沼澤也是企業對資料湖持續觀望的原因之一。

對資料治理的需求實際更強了。因為與“預模組化”方式的數倉不同,湖中的資料更加分散、無序、不規則化等,需要通過治理工作達到資料“可用”狀态,否則資料湖很可能會“腐化”成資料沼澤,浪費大量的IT資源。平台化的資料湖架構能否驅動企業業務發展,資料治理至關重要,沒有資料湖治理,企業可能失去有意義的商業智能。這也是對資料湖建設的最大挑戰之一。

考慮全面的資料湖治理,包括是誰引入的資料、誰負責資料,以及資料的定義,以確定資料的妥善标記和使用,實作對企業資料資源内容層面的優化改造和有效管控。

現階段資料湖更多是作為資料倉庫的補充,資料湖概念和技術還在不斷演化,不同的解決方案供應商也在添加新的特性和功能,包括架構标準化和互操作性、資料治理要求、資料安全性等。

資料湖作為一種雲服務随時按需滿足對不同資料的分析、處理和存儲需求,資料湖的擴充性,可以為使用者提供更多的實時分析,基于企業大資料的資料湖正在向支援更多類型的實時智能化服務發展,将會為企業現有的資料驅動型決策制定模式帶來極大改變。

資料湖發展到現在,已經成為企業資料體系的基礎:資料庫、數倉、大資料處理、機器學習等各種資料服務,都可以“一湖盡收”。在這個“上雲用數賦智”時代,很多企業已經完成上雲第一步,接下來,就是如何“用數”和“賦智”。

繼續閱讀