數據的數量和複雜性驟增怎麼辦?數據湖泊來幫忙
4 人贊了文章
近年來,飛速發展的技術使得信息流量急劇增加。 我們的移動網路覆蓋範圍和數據吞吐量都逐步增加,固定電纜正在從銅線逐漸升級為光纖。
因此,越來越多的人通過使用各種不同服務的設備持續在線。 眾多低成本的信息感知物聯網設備收集到越來越多的數據集 - 航拍信息,圖像,聲音,RFID信息,天氣數據等。所有這些進展都會引發更多的數據在線共享。傳統的數據處理應用程序開始不足以應對數據集數量和複雜性的迅速上升。
大量數據在數據的捕獲,存儲,分析,搜索,共享,傳輸,可視化,查詢,更新和信息的隱私方面引入了全新的挑戰。這些挑戰不可避免地需要全新的架構設計和技術,這有助於我們存儲、分析並從這些大型複雜數據集中獲取洞察力。
本文將介紹Data Lake體系結構,及其中有關存儲和處理數據的有趣轉折。 Data Lake並不是大數據領域的革命或一種萬能的解決方案,而是數據處理中的一個簡單自然的演進步驟。
1.概念:什麼是 Data Lake?
「(Data Lake)是一個來自多個數據源的原始未建模且未經轉換的數據進行集中,整合和持久存儲,沒有明確的預定義模式,沒有外部定義的元數據,也沒有關於質量、出處和安全性的保證數據。」
這一定義顯示了Data Lake的一個關鍵概念 :它存儲原始的,未更改的數據。傳統上,我們會在數據進入數據倉庫之前嘗試過濾和構造數據。
由此產生兩個問題- 構造和轉換攝取數據會導致性能損失和潛在的數據丟失問題。如果嘗試對大量傳入數據進行複雜計算,我們很可能會遇到嚴重的性能問題。如果我們嘗試構造攝取數據,稍後可能需要在結構化過程中丟棄數據。
問題是,對於龐大而複雜的數據,我們很可能不知道可以從中提取出什麼觀點。我們不知道收集的數據會給我們的業務帶來什麼樣的價值。如果我們試圖猜測,那麼猜錯的可能性很大。
那我們能做什麼?我們存儲原始數據。現在,我們不想將它放在那裡,因為這會導致數據沼澤 - 一堆陳舊的數據,沒有任何關於它所代表的信息。應該使用元數據豐富數據,描述數據的起源,攝取時間等。我們還可以對數據進行分割,以提高後續處理的效率。如果我們在第一次嘗試時沒有得到正確的分區,我們仍然會擁有所有信息,並且可以對其進行重新分區而不會丟失任何數據。
以這種方式攝取數據根本沒有質量保證,並且沒有訪問控制。如果我們真的不知道數據中有什麼,我們不能圍繞它建立有效的安全性,所有這些都在數據處理完成後才會出現。每個訪問Data Lake的人都可能無限制地訪問原始數據。
通過啟用對數據分區的選擇性訪問,我們可以引入一個簡單的安全系統方案。這是一種相當簡陋的安全性措施,可能不會帶來任何價值。
2.數據湖泊的三層結構
之前的定義側重於Data Lake系統的核心概念,讓我們稍微擴展一下:
「Data Lake支持靈活的數據採集,複雜的多結構化數據的自然存儲模型,支持高效的非關係計算以及為經濟高效地存儲大型和嘈雜的數據集提供支持。」
除了我們的第一個定義之外,我們還可以更清楚地了解Data Lake應該是什麼。我們應該能夠從不同的來源收集數據,使用不同的協議來存儲關係數據和非關係數據,並提供用於分析和處理的API。所有這些應該足夠靈活,以便可以向上和向下縮放。
通常,Data Lake分為三層:攝取,緩存和處理。任何結構層都可以包含多種技術,每種技術都可以提供不同的API和功能。在這些層中的每個應用程序/技術都應該能夠受益於水平和垂直縮放,並且在一定程度上具有容錯能力。這些系統中的每一個都應該使用資源管理器進行編排,以提供成本、容量和容錯的彈性。
攝入層的作用是充當傳入Data Lake系統的原始數據的存儲層。該層不能強制用戶將模式應用於傳入數據,但可以將其作為選項提供。我們可能想要使用元數據豐富數據,因此可以構建一些數據。
傳入數據通常由時間序列、消息或事件組成。這些數據通常來自IOT設備,氣象站,工業系統,醫療設備,倉庫,社交網路,媒體,用戶門戶等感測器。
儘管不強制,我們強烈建議支持數據分區,因為我們可能會將數據分區分割,以便在處理數據時提高性能。
緩存層的目的是臨時或永久存儲處理(或預處理)關聯或非關聯的數據。這裡存儲的數據可以通過外部系統進行可視化,或者準備好進一步處理。
駐留在處理層中的應用程序將從攝取層獲取數據,對其進行處理,以某種方式對其進行結構化,並將其存儲在此處,並可以選擇性地對其進行分區。通常有一個由下游系統使用的數據集,散布在緩存層(關係資料庫,NoSQL,索引引擎等)內的不同存儲系統周圍。
處理層的目的是為大數據集提供一個或多個分散式處理和分析平台。它可以訪問存儲在攝入和緩存層中的數據。通常,此處的技術是使用主工作者體系結構實現的 - 主節點分析在提交給它的應用程序中編碼的數據處理演算法,創建執行策略,然後在多個工作器實例上分配工作負載,以便並行計算。通過這種架構,處理層可以輕鬆擴展以滿足特定用例所需的計算能力需求。
3.技術標準:數據湖泊如何實現
回顧之前所述的Data Lake特性,可定義技術棧用於實現它的標準需要滿足的條件。
- 可擴展性:技術需要能夠以高性能的方式接受海量數量不斷增加的數據。
- 耐久性:數據需要安全地存儲,並且需要支持數據丟失的防護機制(通過使用複製、備份或其他機制)。
- 支持攝取非結構化(無模式)數據。
- 支持高效處理類流數據(時間序列、事件/消息)。
- 由於隱私/法律方面的考慮,支持數據擦除,能夠刪除不需要的數據或不允許存在的數據。
- 支持數據更新。
- 支持不同的訪問模式 - 隨機訪問,搜索/查詢語言,批量讀取。不同的下游系統在訪問數據時可能有不同的要求,具體取決於它們的使用情況。
結論
在這一部分,我們探討了Data Lake背後的核心理念,架構以及它需要滿足的功能需求。
在本系列的下一部分中,我們將研究可以使用哪些技術來實現功能完備的Data Lake系統。
翻譯:惠惠Freya
審校:Sylvia王貝貝原文地址:https://www.kdnuggets.com/2018/06/data-lake-evolution-data-processing.html
關注集智AI學園公眾號
獲取更多更有趣的AI教程吧!
搜索微信公眾號:swarmAI
集智AI學園QQ群:426390994
學園網站:http://campus.swarma.org
商務合作和投稿轉載|swarma@swarma.org
推薦閱讀:
※AI英雄 | 圖森未來侯曉迪:自動駕駛改變世界?先賺到錢再說
※盤點2017年人工智慧行業大事件,你知道多少呢?
※這裡是強化學習入門……的入門
※數據專家閔萬里的第一個「難題」,如何讓 ET 做「送餐小哥」?
※詳解蒙特卡洛方法:這些數學你搞懂了嗎?