巨量數據架構的設計目的是要處理對傳統資料庫系統而言太大或太複雜的數據擷取、處理和分析。
巨量數據解決方案通常包含下列一或多個工作負載類型:
- 巨量數據源靜態狀態的批處理
- 即時處理移動中的巨量數據
- 巨量數據的互動式探索
- 預測性分析和機器學習
大部分的巨量數據架構都包含下列部分或所有元件:
數據源: 巨量數據解決方案可以從一或多個數據源開始。
數據存放區,例如關係資料庫
應用程式產生的檔案,例如 Web 伺服器記錄檔和 API 回應
實時數據源,例如串流裝置、Webhook 或關係資料庫上游的應用程式
數據記憶體: 批處理作業的數據通常會儲存在分散式檔案存放區中,而分散式檔案存放區可包含大量各種格式的大型檔案。 這種存放區通常稱為 數據湖。 實作此記憶體的選項包括 Azure Data Lake Storage 或 Microsoft Fabric OneLake。
批處理: 當數據需要準備好進行分析,並可供反映過去事件或趨勢的報表使用時,批處理很有用。 這些作業通常涉及讀取來源檔案、處理來源檔案,以及將輸出寫入新檔案。 選項包括在 Fabric 中使用數據流或數據管線。
實時處理: 如果解決方案包含即時來源,架構必須包含擷取和儲存即時訊息以進行串流處理的方法。 數據可以從其清理、轉換,以及最終用於作或分析動作的那一刻起繼續運作。 許多解決方案都需要支援向外延展處理、可靠的傳遞,以及其他消息佇列語意。 選項包括 Fabric Real-Time Intelligence 事件串流、Azure 事件中樞、Azure IoT 中樞和 Apache Kafka。
分析數據存放區: 許多巨量數據解決方案會準備數據以供分析,然後使用分析工具以結構化格式提供已處理的數據。 根據您的案例,用來處理這些查詢的分析數據存放區可以是Microsoft Fabric 中的事件存放區,以在移動中處理數據,而且數據流會在正式發行前小眾測試中處理。 或者,它可以是一個維度數據倉儲,如大多數傳統的商業智慧(BI)解決方案或 Lakehouse(銅級、銀級和黃金版)所示。 Microsoft Fabric 提供數個選項,例如 eventhouse、warehouses 和 lakehouses。 每個選項都可以使用 SQL 或 Spark 來查詢,視使用案例而定。 使用 網狀架構數據存放區決策指南 來協助引導您的決策。
分析和報告: 數據解決方案的其中一個目標應該是透過分析和報告來提供數據的深入解析。 為了讓用戶能夠分析數據,架構可能包含數據模型層,例如 Azure Analysis Services 中的多維度在線分析處理 (OLAP) Cube 或表格式數據模型。 它也可以使用Power BI或Excel中的模型化和視覺效果技術來支援自助BI。 分析與報告也可以採用數據科學家或數據分析師的互動式數據探索形式。 在這些案例中,Microsoft Fabric 提供筆記本之類的工具,用戶可以選擇 SQL 或他們所選擇的程式設計語言。
動作和警示: 巨量數據解決方案的另一個目標是提供商務程式目前狀態的作見解。 架構應包含動作系統層,此層會在處理數據時採用即時數據流,並偵測組織內發生的例外狀況和異常狀況。 您可以使用這些警示系統,主動通知使用者和領導異常活動,而不是檢查報告的使用者。 Real-Time 智慧啟動器警示提供這種主動式監視。
配器: 巨量數據解決方案可以包含工作流程中封裝的重複數據處理作業。 這些工作流程會轉換源數據、在多個來源和接收之間移動數據、將數據載入分析數據存放區,或將結果直接推送至報表或儀錶板。 若要將這些工作流程自動化,您可以使用協調流程技術,例如 Azure Data Factory 或Microsoft網狀架構管線。
Microsoft為巨量數據架構提供許多服務,這些服務大致分為下列類別:
軟體即服務 (SaaS) 解決方案,例如 Microsoft Fabric
Data Lake Storage、Azure 串流分析、事件中樞、IoT 中樞、Azure Data Factory、Azure SQL Database 和 Azure Cosmos DB 等受控服務
使用此架構的時機
當您需要採取下列動作時,請考慮此架構樣式:
- 在產生數據時即時處理數據。
- 儲存和處理磁碟區中的數據對於傳統資料庫而言太大。
- 轉換非結構化數據以進行分析和報告。
- 使用 Azure Machine Learning 或 Azure AI 服務。
優點
技術選擇: Microsoft Fabric 透過 SaaS 介面提供其中許多服務,並事先連接各種元件。 此方法可簡化建置端對端數據解決方案的程式。 您也可以混合和比對 Azure 受控服務,以利用現有的技能或技術投資。
透過平行處理原則的效能: 巨量數據解決方案會利用平行處理原則,以達到大量數據的高效能解決方案。
彈性調整: 巨量數據架構中的所有元件都支援向外延展布建。 因此,您可以針對小型或大型工作負載調整解決方案,並只針對您使用的資源付費。
與現有解決方案的互作性: 巨量數據架構的元件也用於物聯網 (IoT) 處理和企業 BI 解決方案。 這種多功能性可讓您跨數據工作負載建立整合式解決方案。
挑戰
技能集: 某些巨量數據技術具有高度特製化,並依賴與一般應用程式架構中使用的架構和語言不同。 或者,較新的 API 正以更成熟的語言為基礎而出現。
安全: 巨量數據解決方案通常依賴將所有靜態數據儲存在集中式數據湖中。 保護此數據的存取可能會很困難,特別是當多個應用程式和平台必須內嵌及取用數據時。
最佳做法
使用並行性。 大部分的巨量數據處理技術會將工作負載分散到多個處理單位。 此散發套件需要建立靜態數據檔,並以可分割的格式儲存。 Hadoop 分散式文件系統 (HDFS) 等分散式文件系統可以優化讀取和寫入效能。 多個叢集節點會平行執行實際處理,以減少整體作業時間。 建議您使用可分割的數據格式,例如 Parquet。
數據分割數據。 批處理通常會以週期性排程發生,例如每周或每月。 根據與處理排程一致的時態期間,分割數據文件和數據結構,例如數據表。 此策略可簡化數據擷取和作業排程、更輕鬆地進行疑難解答,並可大幅改善查詢效能。
套用讀取架構語意。 使用 Data Lake 可讓您結合多種格式檔案的記憶體,無論是結構化、半結構化還是非結構化。 在 讀取架構時 套用架構語意,其會在處理期間將架構投影到數據上,而不是在記憶體期間。 此方法可增加解決方案的彈性,並協助防止數據擷取期間導致數據驗證和類型檢查所造成的瓶頸。
在抵達時處理批次數據。 傳統的 BI 解決方案通常會使用擷取、轉換和載入 (ETL) 程式將資料移至數據倉儲。 然而,隨著資料量增加且格式更廣泛,大數據解決方案通常會採用 ETL 的變體,如擷取、載入與轉換(ELT)。
在正式發行前小眾測試版中處理串流數據。 針對串流解決方案,在傳輸數據時轉換承載。 因為您正在透過網路處理較小的封包,所以在產生期間轉換這些較小的數據列集會更容易。 將已轉換的數據流放在已針對事件型數據優化的引擎中,例如 Real-Time Intelligence eventhouse,讓數據立即可供動作使用。
平衡使用量和時間成本。 對於批處理作業,請務必考慮計算節點的每單位成本,以及使用這些節點完成作業的每分鐘成本。 例如,批次作業可能需要八個小時,且有四個叢集節點。 不過,作業可能只會在前兩個小時內使用這四個節點,之後只需要兩個節點。 在此情況下,在兩個節點上執行整個作業會增加作業總時間,但不會加倍,因此總成本會降低。 在某些商務案例中,較久的處理時間可能會比使用使用量過低的叢集資源成本更高。
分隔資源。 可能的話,請根據工作負載來分隔資源,以避免在等候另一個資源時,使用一個工作負載等案例。
協調數據擷取。 在某些情況下,現有的商務應用程式可能會將數據檔直接寫入 Azure 記憶體 Blob 容器中,其中Microsoft Fabric 等下游服務可以使用它們。 不過,您通常需要將內部部署或外部數據源的數據擷取協調到 Data Lake。 使用協調流程工作流程或管線,例如 Azure Data Factory 或 Microsoft Fabric 所支援的工作流程或管線,以達成可預測且集中管理的數據移動。
提早清除敏感數據。 數據擷取工作流程應該會在程式初期清除敏感數據,以避免將數據儲存在 Data Lake 中。
IoT 架構
IoT 是巨量數據解決方案的特殊子集。 下圖顯示IoT的可能邏輯架構。 此圖表強調架構的事件串流元件。
雲端閘道會在雲端界限內嵌裝置事件。 它會使用可靠、低延遲的傳訊系統來確保有效率的數據傳輸。
裝置可能會直接將事件傳送至雲端閘道或透過 現場閘道。 現場閘道是特製化裝置或軟體,通常與裝置共置,可接收事件,並將其轉送至雲端網關。 現場閘道也可以藉由執行篩選、匯總或通訊協議轉換等功能,預先處理原始裝置事件。
擷取之後,事件會經過一或多個 數據流處理器 ,以路由傳送數據或執行分析和其他處理。
請考慮下列常見的處理類型:
數據會載入事件型數據存放區,例如 Real-Time Intelligence 中的 eventhouse,以元數據將IoT裝置內容化,例如建置位置和裝置資訊。
即時分析事件串流以偵測異常、辨識滾動時間範圍中的模式,或在數據流中發生特定狀況時觸發警示。
處理來自裝置的特殊非對稱訊息類型,例如通知和警示。
使用機器學習模型來偵測異常、預測失敗或分類裝置行為來評分事件。
灰色方塊會顯示與事件串流不直接相關的IoT系統元件。 如需完整性,請參閱這裡。
裝置登錄是已布建裝置的資料庫。 它包含裝置識別碼,通常包含位置等元數據。
佈署 API 是用來佈署和註冊新裝置的常用外部介面。
某些IoT解決方案允許 將命令和控制訊息 傳送至裝置。