文中介紹的模式有助于定義大數據解決方案的參數。本文將介紹最常見的和經常發生的大數據問題以及它們的解決方案。原子模式描述了使用、處理、訪問和存儲大數據的典型方法。復合模式由原子模式組成,并根據大數據解決方案的范圍進行分類。由于每個復合模式都有若干個維度,所以每個模式都有許多變化。復合模式使得業務和技術用戶可以應用一個結構化方法為大數據問題建立范圍,并定義高級的解決方案。
簡介
本系列的 第 3 部分 介紹了大數據解決方案的邏輯層。這些層定義了各種組件,并對它們進行分類,這些組件必須處理某個給定業務用例的功能性和非功能性需求。本文基于層和組件的概念,介紹了解決方案中所用的典型原子模式和復合模式。通過將所提出的解決方案映射到此處提供的模式,讓用戶了解需要如何設計組件,以及從功能角度考慮,應該將它們放置在何處。模式有助于定義大數據解決方案的架構。利用原子模式和復合模式可以幫助進一步完善大數據解決方案的每個組件的角色和責任。
本文介紹原子模式和復合模式。本系列的最后一篇文章將介紹解決方案模式。
圖 1. 模式的類別
原子模式
對于大數據上下文中經常出現的問題,原子模式 有助于識別數據如何是被使用、處理、存儲和訪問的。它們還有助于識別所需的組件。訪問、存儲和處理來自不同數據源的多種數據需要不同的方法。每種模式都用于滿足特定的需求:例如,可視化、歷史數據分析、社交媒體數據和非結構化數據的存儲。可以將多種原子模式結合使用,組成一個復合模式。這些原子模式沒有進行分層或排序。例如,可視化模式可以與社交媒體的數據訪問模式直接交互,可視化模式還可以與高級分析處理模式進行交互。
圖 2. 用于數據使用、處理、數據訪問和存儲的原子模式的示例
數據使用模式
這種類型的模式處理使用數據分析結果的各種方式。本節包括的數據使用模式可以滿足幾個需求。
可視化模式
可視化數據的傳統方式以圖表、儀表板和摘要報告為基礎。這些傳統的方法并不總是用來可視化數據的最佳方式。
大數據可視化的典型需求(包括新出現的需求)如下所示:
執行流數據的實時分析和顯示基于上下文,以交互方式挖掘數據執行高級搜索,并獲得建議并行可視化信息獲得先進的硬件,支持未來的可視化需求正在進行研究,以確定人類和機器如何使用大數據洞察。這些挑戰包括所涉及的數據量,并且需要將數據與上下文相關聯。必須在適當的上下文中顯示洞察。
可視化數據的目的是為了更容易、更直觀地使用數據,因此報告和儀表板可能提供全高清的觀看效果和 3-D 互動視頻,并且可以為用戶提供使用應用程序控制業務活動和結果的能力。
即席發現模式
創建滿足所有業務需求的標準報告往往是不可行的,因為企業的業務數據查詢會有不同的需求。用戶在查找特定信息時,可能需要獲得根據問題的上下文執行即席查詢的能力。
即席分析可以幫助數據科學家和關鍵業務用戶了解業務數據的行為。即席處理中涉及的復雜性來自多種因素:
多個數據源可用于相同的域。單一的查詢可以有多個結果。輸出可以是靜態的,并具有多種格式(視頻、音頻、圖形和文本)。輸出可以是動態和交互式的。加強傳統的數據存儲
在大數據的初步探索中,許多企業選擇使用現有的分析平臺來降低成本,并依賴于現有的技能。加強現有的數據存儲有助于拓寬可用于現有分析的數據的范圍,包括駐留在組織邊界內外的數據,比如社交媒體數據,它可以豐富主數據。通過拓寬數據范圍,使之包含現有存儲中的新事實表、維度和主數據,并從社交媒體獲取客戶數據,組織可以獲得更深入的客戶洞察。
但要牢記的是,新的數據集通常比較大,而現有的提取、轉換和加載工具可能不足以處理它。您可能需要使用具有大規模并行處理能力的高級工具來解決數據的數量、多樣性、真實性和速度特征。
通知模式
大數據洞察使人類、企業和機器可以通過使用事件通知而立即采取行動。通知平臺必須能夠處理及時發送出去的預計數量的通知。這些通知與大量郵件或群發短信不同,因為內容一般是特定于使用者的。例如,推薦引擎可以提供有關世界各地的龐大客戶群的洞察,而且可以將通知發送給這樣的客戶。
啟動一個自動響應模式
從大數據獲得的業務洞察,可用于觸發或啟動其他業務流程或事務。
處理模式
無論數據是處于靜止狀態還是在運動中,都可以處理大數據。具體情況取決于分析的復雜性,有可能不需要對數據進行實時處理。這種模式解決了對大數據進行實時、近實時或批量處理的方式。
以下高級的大數據處理類別適用于大多數分析。這些類別通常也適用于基于 RDBMS 的傳統系統。惟一的區別是龐大規模的數據、多樣性和速度。在處理大數據時,要使用機器學習、復雜事件處理、事件流處理、決策管理和統計模型管理等技術。
歷史數據分析模式
傳統的歷史數據分析僅限于預定義的數據時間段,這通常取決于數據保留策略。由于處理和存儲的限制,超出此時間段的數據通常會被歸檔或清除。基于 Hadoop 的系統和其他等效的系統可以克服這些限制,因為它們具有豐富的存儲以及分布式大規模并行處理能力。運營、業務和數據倉庫的數據被移動到大數據存儲,您通過使用大數據平臺功能對它們進行處理。
歷史分析包括分析給定時間段、季節組合和產品的歷史趨勢,并與最新的可用數據進行比較。為了能夠存儲和處理如此龐大的數據,您可以使用 HDFS、NoSQL、SPSS? 和 InfoSphere? BigInsights?。
高級分析模式
大數據提供了很多實現創意洞察的機會。不同的數據集可以在多種上下文中存在關聯。發現這些關系需要創新的復雜算法和技術。
高級分析包括預測、決策、推理過程、模擬、上下文信息標識和實體解析。高級分析的應用包括生物統計數據分析(例如,DNA 分析)、空間分析、基于位置的分析、科學分析、研究,等等。高級分析要求大量的計算來管理大量的數據。
數據科學家可以指導您識別合適的技術、算法和數據集,以及在給定上下文中解決問題所需的數據源。比如 SPSS、InfoSphere Streams 和 InfoSphere BigInsights 等工具提供了這類功能。這些工具訪問存儲在大數據存儲系統(比如 BigTable、HBase,等等)中的非結構化數據和結構化數據(例如,JSON 數據)。
預處理原始數據模式
大數據解決方案主要由基于 MapReduce 的 Hadoop 系統和技術組成,MapReduce 是開箱即用的分布式存儲和處理解決方案。然而,從非結構化數據提取數據(例如,圖像、音頻、視頻、二進制提要,甚至是文本)是一項復雜的任務,需要具有機器學習能力并掌握自然語言處理等技術。另一個主要挑戰是如何驗證這些技術和算法的輸出的準確度和正確性。
要對任何數據執行分析,數據都必須是某種結構化格式。從多個數據源訪問的非結構化數據可以按原樣存儲,然后被轉化成結構化數據(例如 JSON),并被再次存儲到大數據存儲系統中。非結構化文本可以轉換成半結構化或結構化數據。同樣,圖像、音頻和視頻數據需要轉換成可用于分析的格式。此外,使用預測和統計算法的高級分析的準確性和正確性取決于用來訓練其模型的數據和算法的數量。
下面的列表顯示了將非結構化數據轉換成結構化數據所需的算法和活動:
文檔和文本分類特征提取圖像和文本分割關聯特征、變量和時間,然后提取包含時間的值輸出的準確度檢查使用了混淆矩陣(confusion matrix)等技術和其他手動活動數據科學家可以幫助用戶選擇合適的技術和算法。
即席分析模式
處理大數據的即席查詢所帶來的挑戰不同于對結構化數據執行即席查詢時所面臨的挑戰,由于數據源和數據格式不是固定的,所以需要使用不同的機制來檢索和處理數據。
雖然大數據供應商可以處理簡單的即席查詢,但在大多數情況下,查詢是復雜的,因為必須在運行時動態地發現數據、算法、格式和實體解析。所以需要利用數據科學家和業務用戶的專業知識來定義下列任務所需的分析:
識別并發現計算和算法識別并發現數據源定義所需的可以由計算使用的格式對數據執行并行計算訪問模式
在大數據解決方案中,有許多數據源,還有很多訪問數據的方式,本節將介紹最常見的幾種。
Web 和社交媒體訪問模式
Internet 是提供許多目前可以獲得的洞察的數據源。在幾乎所有分析中,都會用到 Web 和社交媒體,但獲得這種數據需要不同的訪問機制。
在所有數據源中,因為 Web 和社交媒體的多樣性、速度和數量,所以 Web 和社交媒體是最為復雜的。網站大約有 40-50 個類別,每一個類別都需要使用不同的方式來訪問數據。本節將列出這些類別,并介紹一些訪問機制。從大數據的角度講,高級的類別是商業站點、社交媒體站點,以及具有特定和通用組件的站點。有關的訪問機制見圖 3。如果需要的話,在完成預處理后,可將所訪問的數據存儲在數據存儲中。
圖 3. Web 和社交媒體訪問
需要執行以下步驟來訪問 Web 媒體信息。
圖 4. 大數據訪問步驟
非結構化數據存儲中的 Web 媒體訪問
步驟 A-1. 爬網程序讀取原始數據。
步驟 A-2. 數據被存儲在非結構化存儲中。
Web 媒體訪問為結構化存儲預處理數據
步驟 B-1. 爬網程序讀取原始數據。
步驟 B-2. 對數據進行預處理。
步驟 B-3. 數據被存儲在結構化存儲中。
Web 媒體訪問預處理非結構化數據
步驟 C-1. 在極少數情況下,來自供應商的數據可以是非結構化數據。
步驟 C-2. 對數據進行預處理。
步驟 C-3. 數據被存儲在結構化存儲中。
非結構化或結構化數據的 Web 媒體訪問
步驟 D-1. 數據供應商提供結構化或非結構化數據。
步驟 D-2. 數據被存儲在結構化或非結構化存儲中。
Web 媒體訪問預處理非結構化數據
步驟 E-1. 不能使用在存儲時未經過預處理的非結構化數據,除非它是結構化格式的數據。
步驟 E-2. 對數據進行預處理。
步驟 E-3. 經過預處理的結構化數據被存儲在結構化存儲中。
如圖所示,數據可以直接存儲在存儲器中,或者可以對它們進行預處理,并將它們轉換成一個中間格式或標準格式,然后再存儲它們。
在可以分析數據之前,數據格式必須可用于實體解析或用于查詢所需數據。這種經過預處理的數據可以存儲在一個存儲系統中。
雖然預處理通常被認為是微不足道的,但這項處理可能非常復雜和耗時。
設備生成的數據模式
設備生成的內容包括來自傳感器的數據數據是從天氣信息、電氣儀表和污染數據等數據來源檢測到的,并且由傳感器捕獲。這些數據可以是照片、視頻、文本和其他二進制格式。
下圖說明了處理機器生成的數據的典型過程。
圖 5. 設備生成的數據訪問
圖 5 說明了訪問來自傳感器的數據的過程。由傳感器捕獲的數據可以發送到設備網關,設備網關會對數據執行一些初始預處理,并緩沖高速數據。機器生成的數據大多為二進制格式(音頻、視頻和傳感器讀數)或文本格式。這樣的數據最初可以存儲在存儲系統中,也可以對它們進行預處理,然后再存儲它們。對于分析來說,要求執行預處理。
事務、運營和倉庫數據模式
可以存儲現有的事務、運營和倉庫數據,避免清除或歸檔數據(因為存儲和處理的限制),或減少在數據被其他使用者訪問時對傳統存儲的負載。
對于大多數企業而言,事務、運營、主數據和倉庫信息都是所有分析的核心。如果用在 Internet 上,或者通過傳感器和智能設備提供的非結構化數據以及外部數據來增強此數據,那么可以幫助組織獲得準確的洞察,并執行高級分析。
使用由多個數據庫廠商提供的標準連接器,事務和倉庫數據可以被推入存儲。預處理事務性數據要容易得多,因為數據大多是結構化的。可以使用簡單的提取、轉換和加載流程將事務數據移動到存儲中。事務數據可以很容易地轉換成 JSON 和 CSV 等格式。使用 Sqoop 等工具可以更容易將事務數據推入存儲系統,如 HBase 和 HDFS。
存儲模式
存儲模式有助于確定適當的存儲各種數據的類型和格式。數據可以按原樣存儲,根據鍵值對存儲,或者以預定義的格式存儲。
分布式文件系統(如 GFS 和 HDFS)都能夠存儲任何類型的數據。但是,高效地檢索或查詢數據的能力會影響性能。技術的選擇很重要。
分布式非結構化數據的存儲模式
大部分大數據是非結構化數據,而且可以通過不同的方式針對不同的上下文提取它所擁有的信息。大多數時候,非結構化數據必須按原樣并以其原始格式進行存儲。
這樣的數據可以存儲在分布式文件系統(如 HDFS)和 NoSQL 文檔存儲(如 MongoDB)中。這些系統提供了檢索非結構化數據的有效方法。
分布式結構化數據的存儲模式
結構化數據包括從數據源到達的已經是結構化格式的數據,以及經過預處理,被轉換為 JSON 數據等格式的非結構化數據。必須存儲已經過轉換的數據,避免從原始數據到結構化數據的頻繁數據轉換。
可以使用 Google 的 BigTable 等技術來存儲結構化數據。BigTable 是一個大規模容錯式自我管理系統,包括 TB 級的內存和 PB 級的存儲。
Hadoop 中的 HBase 可媲美 BigTable。它使用了 HDFS 作為底層存儲。
傳統數據存儲的存儲模式
對于存儲大數據而言,傳統的數據存儲并不是最佳選擇,但在企業執行初步數據探索的情況下,企業可能會選擇使用現有的數據倉庫、RDBMS 系統和其他內容存儲。這些現有的存??儲系統可用來存儲使用大數據平臺消化和過濾的數據。不要認為傳統的數據存儲系統適用于大數據。
云存儲的存儲模式
許多云計算基礎架構供應商都有分布式結構化、非結構化的存儲能力。從傳統的配置、維護、系統管理、編程和建模角度講,大數據技術有點不同。此外,實現大數據解決方案所需的技能既罕見又昂貴。探索大數據技術的企業可以使用云解決方案來提供大數據的存儲、維護和系統管理。
要存儲的數據往往是敏感數據,這些數據包括醫療記錄和生物特征數據。您需要考慮數據安全性、數據共享、數據治理,以及有關數據的其他政策,在考慮將云作為大數據存儲庫的時候尤其如此。傳輸大量數據的能力也是云存儲的另一個重要考慮因素。
復合模式
原子模式 側重于提供執行各項功能所需的能力。但是,復合模式 是基于端到端的解決方案進行分類的。每個復合模式都要考慮一個或多個維度。在將復合模式應用到每個模式時,會有許多變化。可以將復合模式映射到一個或多個原子模式,以解決某個給定的業務問題。本文所述的復合模式列表是基于經常發生的典型業務問題,但這不是復合模式的完整列表。
存儲和探索模式
如果業務問題需要存儲大量新數據和現有數據,而且先前由于缺乏足夠的存儲和分析能力而一直未使用這些數據,那么這種模式就非常有用。該模式旨在緩解對現有數據存儲的負載。所存儲的數據可用于初始勘探和即席發現。用戶可以推演報告,通過進一步的處理來分析數據的質量和價值。您可以使用 ETL 工具來預處理和凈化原始數據,然后再進行任何類型的分析。
圖 6. 存儲和探索復合模式
圖 6 說明了這種模式的多個維度。數據的使用目的可能只是存儲它,或處理和使用它。
僅存儲的示例是,數據的獲取和存儲只是為了將來能夠滿足合規性或法律的要求。在處理和使用的情況下,分析的結果可以被處理和使用。可以從最近發現的來源或從現有的數據存儲訪問數據。
專用和可預測的分析復合模式
使用此模式的情況是,使用多種處理技術執行分析,因此,可以用新洞察豐富現有數據,或創建可由各種用戶使用的輸出。該分析可以在事件發生的同時實時發生,或使用批量模式,根據收集到的數據獲得洞察。作為可以分析的靜態數據的示例,某電信公司可能構建客戶流失模型,包括分析呼叫數據記錄、社交數據和事務數據。作為分析運動數據的示例,預測某個給定事務正在經歷欺詐的需求必須實時或近實時地發生。
圖 7. 專用和預測分析復合模式
圖 7 說明了這種模式的多個維度。所執行的處理可以是標準的或預測性的,并且可以包括決策。
此外,可以將通知發送給與特定任務或消息有關的系統或用戶。該通知可以使用可視化功能。該處理可實時發生或以批量模式發生。
可操作的分析模式
大數據解決方案的最高級形式是,對數據集執行分析,并且基于可重復的過去的行動或行動矩陣來暗示行動。該操作可以是手動、半自動或全自動的。基礎分析需要高度準確。行動是預定義的,分析的結果被映射到行動。可操作分析中所涉及的典型步驟是:
分析數據以獲得洞察。制定決策。激活相應的渠道,對正確的使用者采取行動。
圖 8. 可操作的分析復合模式
圖 8 說明該分析可以是手動、半自動或全自動的。如圖中的說明所示,它使用了原子模式。
手動操作 意味著系統基于分析的結果來提供建議操作,并由人類決定和執行操作。半自動 意味著,分析建議操作,但不需要通過人類干預來啟動操作,或從一組建議的操作中進行選擇。全自動 表示在決策之后,系統立即執行操作。例如,在設備被預測會發生故障之后,系統可以自動創建一個工作訂單。
下面的矩陣顯示了如何將原子模式映射到復合模式,復合模式是原子模式的組合。每個復合模式都被設計為針對具有一組特定特征的數據在特定情況下使用。矩陣顯示了模式的典型組合。必須對模式進行調整,以滿足特定的情況和需求。在矩陣中,按照從最簡單到最復雜的順序列出了復合模式。“store and explore(存儲和探索)”模式是最簡單的。
圖 9. 復合模式對原子模式的映射
結束語
采用基于模式的方法可以幫助業務團隊和技術團隊在解決方案的首要目標上達成一致意見。技術團隊可以使用模式定義架構性原則,并制定一些關鍵架構決策。技術團隊可以將這些模式應用到架構層,并導出實現解決方案所需的組件集。通常情況下,解決方案從有限的范圍開始,然后企業會變得越來越有信心,相信解決方案會帶來價值。隨著演變的發生,與解決方案一致的復合模式與原子模式將會得到細化。在初始階段,可以使用模式來定義一個基于模式的架構,并映射出在該架構中如何逐步設計組件。
圖 10. 將原子模式映射到架構層
在本系列的 第 2 部分 中,我們描述了與大數據有關的復雜性,以及如何確定是否應實現或更新您的大數據解決方案。在本文中,我們討論了原子模式和復合模式,并解釋了一個解決方案可以由多種模式組成。給定一個特定的上下文,您可能會發現某些模式是比其他模式更合適。我們建議您采用端到端的解決方案視圖,并考慮所涉及的模式,然后定義大數據解決方案的架構。
對于架構師和設計師,映射到模式可以支持對架構中各組件的責任進一步細化。對于業務用戶而言,它通常有助于更好地理解大數據問題的業務范圍,從而獲得有價值的洞察,讓解決方案滿足所期望的結果。
此外,解決方案模式有助于定義最優的組件集,根據業務問題是否需要使用數據發現和探索功能、專用和可預測的分析或者可操作的分析。請記住,在實現一個解決方案時,并沒有建議的原子、復合或解決方案模式的順序或次序。在本系列的下一篇文章中,將針對此用途介紹解決方案模式。