什麼是串流資料?
串流資料是以低延遲處理為目標,以連續、遞增方式大量傳送的資料。組織有數千個資料來源,其通常同時發出訊息、記錄或資料,大小從幾位元組到幾兆位元組 (MB) 不等。串流資料包括位置、事件和感應器資料,公司使用這些資料進行即時分析並了解其業務的許多方面。例如,公司可以持續分析社交媒體串流中的點擊流和客戶文章,然後根據需要及時做出回應,以便追蹤公眾對其品牌和產品的情緒變化。
串流資料有哪些特性?
資料串流具有以下對其進行定義的特定特性。
具有時間重要性
資料串流中的每個元素都包含時間戳記。資料串流本身可能對時間敏感,在特定時間間隔之後重要性降低。例如,您的應用程式根據其使用者的當前位置進行餐廳推薦。您必須即時處理使用者地理位置資料,否則資料會失去意義。
持續流動
資料串流沒有開始或結束。其根據需要不斷且連續收集資料。例如,只要伺服器在執行,伺服器活動日誌就會累積。
唯一
由於時間敏感性,資料串流的重複傳輸具有挑戰性。因此,準確的即時資料處理至關重要。不幸的是,在大多數串流資料來源中,重新傳輸的佈建是有限的。
不均勻
一些來源可能以多種格式來串流資料,這些格式採用結構化格式,例如 JSON、Avro 和逗號分隔值 (CSV),資料類型包括字串、數字、日期和二進位類型。您的串流處理系統應該具有處理此類資料變體的能力。
不完美
來源的臨時錯誤可能會導致串流資料中的元素損壞或遺失。由於串流的連續性,保證資料一致性具有挑戰性。串流處理和分析系統通常包括資料驗證邏輯,以減輕或最小化這些錯誤。
為什麼串流資料很重要?
傳統資料處理系統在中央資料倉儲中擷取资料,並分組或分批處理。建置這些系統是為了在分析之前擷取和建構資料。然而,企業資料的性質和底層資料處理系統在最近幾年發生了重大變化。
無限資料量
串流來源產生的資料量可能非常大,導致進行即時分析以便規範串流資料的完整性 (驗證)、結構 (演進) 或速度 (輸送量和延遲) 成為一個挑戰。
進階資料處理系統
同時,雲端基礎設施讓運算資源的規模和用量有了靈活性。您使用剛好滿足您需要的服務,並按使用量付費。在存放串流資料之前和之後,您均可選擇即時篩選或彙總。串流資料架構使用雲端技術,根據需要來取用、豐富、分析和永久存放串流資料。
串流資料有哪些使用案例?
對於持續產生全新和動態資料的大多數情形,串流處理系統非常有幫助。其適用於大部分產業領域及大數據使用案例。
公司通常會從簡單的應用程式 (如收集系統日誌) 和基本的處理 (執行最小和最大運算) 開始。然後逐漸將這些應用程式納入更複雜且近乎即時的處理。
以下是串流資料的更多範例。
資料分析
應用程式會處理資料串流以產生報告,然後執行動作來進行回應,例如當關鍵測量超出特定閾值時發出警示。更複雜的串流處理應用程式會將機器學習演算法套用至業務和客戶活動資料,從而取得更深入的洞察。
IoT 應用程式
物聯網 (IoT) 裝置是串流資料的另一個使用案例。車輛、工業設備和農業機械中的感應器會將資料傳送到串流應用程式。該應用程式會監控效能、預先偵測可能的故障,以及自動訂購零件以避免設備停機時間。
財務分析
金融機構使用串流資料追蹤股市的即時變動、計算風險值,並根據股價波動來自動重新平衡投資組合。另一個財務使用案例是使用串流交易資料的即時推論來偵測信用卡交易的詐騙行為。
即時推薦
房地產應用程式追蹤消費者行動裝置的地理位置資料,並即時推薦可造訪的房產。同樣,廣告、食品、零售和消費者應用程式可以整合即時推薦,為客戶提供更多價值。
服務保證
您可以實作資料串流處理,以追蹤和維護應用程式和設備中的服務級別。例如,太陽能公司需要維持客戶的電力輸送量,否則要支付罰款。其實作了一個串流資料應用程式,可以監控現場的所有面板,並即時排程服務。因此,其可以最小化每個面板的低輸送量週期和相關罰款支出。
媒體和遊戲
媒體發行者從其線上内容中串流數十億條點擊流記錄,利用使用者人口統計資訊來整合和豐富資料,並優化內容放置。這有助於發行者向受眾提供更好、更相關的體驗。同樣,線上遊戲公司使用事件串流處理來分析玩家遊戲互動,並提供動態體驗以吸引玩家。
風險控制
即時串流和社交平台可即時擷取使用者行為資料,對使用者的財務活動進行風險控制,如充值、退款和獎勵。他們會檢視即時儀表板,以靈活調整風險策略。
批次資料與串流資料有什麼區別?
批次處理是電腦用於定期完成大量、重複性資料任務的方法。您可以用其來運算不同資料集的任意查詢。這通常會使用內含的所有資料得出運算結果,以針對大數據集進行更深入的分析。以 MapReduce 為基礎的系統 (如 Amazon EMR) 是支援批次任務的平台範例。
相比之下,串流處理需要擷取一個資料序列,並用遞增的方式來更新指標、報告和摘要統計資料,以回應每個抵達的資料記錄。這最適用於即時分析和回應功能。
批次處理 | 串流處理 |
|||
資料範圍 |
查詢或處理資料集中的所有或大部分資料。 | 查詢或處理滾動式時窗內的資料或僅限最新的資料記錄。 |
||
資料大小 |
大型資料批次。 |
個別記錄或包含幾筆記錄的微型批次。 |
||
效能 |
|
需要幾秒或幾毫秒的延遲。 |
||
分析 |
複雜分析。 | 簡易回應功能、彙總和累積指標。 |
許多組織正透過結合這兩種方式來建立混合模式,以維持即時層和批次層。例如,您可以首先在諸如 Amazon Kinesis 等串流資料平台中處理資料,以取得即時洞察。然後,可將其保留在諸如 Amazon Simple Storage Service (Amazon S3) 等存放區。可在那裡進行轉換和載入,以用於各種批次處理使用案例。
Amazon Redshift Streaming Ingestion 允許使用者從 Amazon Kinesis Data Streams 中直接擷取資料,而無需在 Amazon S3 中準備資料。該服務還可將資料從 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 擷取到 Amazon Redshift。
如何處理串流資料?
串流資料架構包含兩種主要的元件類型。
串流生產程式
串流生產程式是應用程式和物聯網系統中收集資料的軟體元件。其將包含串流名稱、資料值和序號的記錄傳輸到串流處理器。處理器根據串流名稱,對資料記錄進行緩衝或臨時分組。其使用序號追蹤每個記錄的唯一位置,並按時間順序處理資料。
串流取用程式
串流取用程式是處理和分析處理器中緩衝之資料串流的軟體元件。每個取用程式都擁有相關性、彙總、篩選、取樣或機器學習等分析功能。每個串流可以有多個取用程式,每個取用程式可以處理很多串流。取用程式還可以將變更後的資料傳送回處理器,為其他取用程式建立新串流。
架構實作
若要實作串流資料架構,您需要儲存層和處理層。儲存層必須支援記錄排序和極高的一致性,以提供快速、經濟實惠且可重複的大型資料串流讀取和寫入。處理層負責取用來自儲存層的資料、在該資料執行運算,然後通知儲存層刪除不再需要的資料。
使用串流資料有哪些挑戰?
由於資料的性質和數量,串流資料架構需要特殊考量。
可用性
串流資料應用程式需要一致性、低延遲和高可用性。取用者不斷地從串流中擷取新資料以進行處理。生產者的延遲可能會備份系統並導致錯誤。
可擴展性
原始資料串流可能會快速且意外地激增。例如,社交媒體文章在大型體育賽事期間激增。因此,即使在尖峰負載期間,系統也應優先考慮適當的資料排序、可用性和一致性。
耐久性
由於資料的時間敏感性,串流處理系統必須具有容錯性。否則,資料將在停機或故障時永久遺失。
AWS 如何支援您的串流資料要求?
AWS 提供多種使用串流資料的選項。
Amazon Kinesis
Kinesis 是 AWS 上的串流資料平台。其可提供強大的服務,從而輕鬆載入和分析串流資料,還允許您針對特殊需求建置自訂的串流資料應用程式。
Kinesis 提供三項服務︰Amazon Kinesis Data Firehose、Amazon Kinesis Data Streams 和 Amazon Managed Streaming for Apache Kafka (Amazon MSK)。
Kinesis Data Firehose
Kinesis Data Firehose 可擷取串流資料並自動載入到 Amazon Simple Storage Service (Amazon S3) 和 Amazon Redshift 中。這允許您使用目前已在使用的現有商業智慧工具和儀表板,執行即時分析。
Kinesis Data Streams
Kinesis Data Streams 可以每小時持續從成千上萬個來源擷取和存放數 TB 的資料。其支援您所選擇的串流處理架構,包含 Amazon Kinesis Client Library (KCL)、Apache Storm 以及 Apache Spark Streaming。
Amazon MSK
Amazon MSK 是一項全受管服務,可讓您輕鬆建置和執行使用 Apache Kafka 處理串流資料的應用程式。Apache Kafka 是開放原始碼平台,用於建立即時串流資料管道和應用程式。
Amazon Redshift
Amazon Redshift Streaming Ingestion 允許使用者將串流資料擷取到資料倉儲中,以便從多個 Kinesis 資料串流中進行即時分析。您可以使用熟悉的 SQL 執行豐富的分析,並輕鬆建立和管理 ELT 管道。其還允許您使用低延遲和高輸送量處理大量串流資料,以在幾秒鐘內取得洞察。
Amazon EC2 上的其他串流解決方案
您可以在 Amazon Elastic Compute Cloud (Amazon EC2) 和 Amazon EMR 上安裝自行選擇的串流資料平台,並建立自訂串流儲存層和處理層。因此,您可以避免基礎設施佈建的衝突,並可以存取各種串流儲存架構和處理架構。資料儲存層選項包含 Amazon MSK 和 Apache Flume。串流處理層選項包含 Apache Spark Streaming 和 Apache Storm。
立即建立免費的 AWS 帳戶,開始使用 AWS 上的串流資料!