瞭解 InfoSphere Streams,它是 IBM 大數據平臺的一部分。InfoSphere Streams 解決了針對可以實時處理生成的海量流數據的平臺和架構的一種迫切需求。瞭解該產品的設計目標,它適用於哪些時機,其工做原理,以及它如何爲 InfoSphere BigInsights 提供補充來執行高度複雜的分析。算法
來自多個來源的信息正在以難以置信的速度增加。互聯網用戶數量在 2015 年已經達到 22.7 億。每一天,Twitter 都會生成超過 12 TB 的 tweet,Facebook 生成超過 25 TB 日誌數據,紐約證券交易所採集 1 TB 交易信息。天天會建立大約 300 億個射頻識別 (RFID) 標記。此外,每一年銷售的數億臺 GPS 設備,目前正在使用的超過 3000 萬個連網的傳感器(並且每一年在以高於 30% 的速度增加),都在產生數據。這些數據量預計在將來 10 年中每 2 年就會翻一番。數據庫
一家公司在一年時間內可生成高達數 PB 的信息:網頁、博客、單擊流、搜索索引、社交媒體論壇、即時消息、文本消息、電子郵件、文檔、用戶人口統計數據、來自主動和被動系統的傳感器數據,等等。許多人估計,這些數據中高達 80% 都是半結構化或非結構化數據。公司一直在尋求更加敏捷地經營業務,以更加創新的方式執行數據分析和決策流程。並且他們認識到,這些流程中損失的時間可能致使錯失業務機會。大數據挑戰的核心是,公司掌握輕鬆地分析和理解互聯網級信息的能力,就像他們如今可分析和理解較少許結構化信息同樣。編程
IBM 正在幫助公司應對大數據挑戰,爲他們提供工具來集成和管理海量、高速產生的數據,應用原生格式的分析,可視化可用數據以進行專門分析,等等。本文將介紹 InfoSphere Streams,該技術支持您同時分析許多數據類型並實時執行復雜計算。您將瞭解 InfoSphere Streams 的工做原理,它的用途,以及如何結合使用它與另外一個用於大數據分析的 IBM 產品(IBM InfoSphere BigInsights)來執行高度複雜的分析。瀏覽器
MapReduce 框架(由 Google 引入)使得對商用計算機集羣的編程可一次性地執行大規模的數據處理。一個 MapReduce 集羣可以以容錯方式擴展到數千個節點,以高度並行且經濟高效的方式處理數 PB 數據。該框架的一個主要優勢是,它依賴於一種簡單而又強大的編程模型。此外,它將應用程序開發人員與運行一個分佈式程序的全部複雜細節相隔離,好比與數據分發、調度和容錯相關的問題。安全
理解 InfoSphere BigInsights 將會使您可以更全面地理解 InfoSphere Streams 的用途和價值。網絡
BigInsights 是一個分析平臺,可幫助公司將複雜的互聯網級信息集轉換爲洞察。它包含一個套裝的 Apache Hadoop 發行版(具備高度簡化的安裝流程)和用於應用程序開發、數據移動和集羣管理的關聯工具。得益於簡單性和可伸縮性,Hadoop(MapReduce 框架的一種開源實現)在行業和學術界得到的巨大的成功。除了 Hadoop 以外,BigInsights 中的其餘開源技術(除 Jaql 外的全部技術都屬於 Apache Software Foundation 項目)包括:數據結構
此外,BigInsights 發行版還包含如下 IBM 獨有的技術:架構
InfoSphere 是一個綜合性的信息集成平臺,包含數據倉庫和分析、信息集成、主數據管理、生命週期管理,以及數據安全和隱私。該平臺改進了應用程序開發流程,因此組織能夠加快價值實現速度,減小集成成本,並提升信息質量。框架
通常來說,BigInsights 的設計並非爲了取代一種傳統的關係數據庫管理系統 (DBMS) 或傳統的數據倉庫。具體來說,它沒有針對對錶列數據結構的交互式查詢、在線分析處理 (OLAP) 或在線事務處理 (OLTP) 應用程序而優化。可是,做爲 IBM 大數據平臺的組成部分,BigInsights 提供了與該平臺的其餘組件(包括數據倉庫、數據集成和治理引擎)和第三方數據分析工具的潛在集成點。在本文後面將會看到,它還可與 InfoSphere Streams 集成。機器學習
流計算是新的數據聲場場景所不可或缺的一種新計算模式,好比無處不在的移動設備、位置服務和遍及各處的傳感器。人們須要可伸縮的計算平臺和並行架構來處理生成的海量流數據。
BigInsights 技術不足以支持實時流處理任務,由於它們主要面向對靜態數據的批處理的支持。在處理靜態數據的過程當中,列出全部已連網的用戶這樣的查詢會獲得單一的結果集。藉助對流數據的實時處理,您可執行一種持續查詢,好比列出在過去 10 分鐘內連網的全部用戶。此查詢將返回持續更新的結果。在靜態數據領域中,用戶猶如在乾草堆中撈針;在流數據領域中,用戶可輕鬆地找到這顆針,由於乾草已被吹走。
InfoSphere Streams 平臺支持流數據的實時處理,支持不斷更新持續查詢的結果,可在仍在移動的數據流中檢測洞察。
InfoSphere Streams 旨在從一個幾分鐘到幾小時的窗口中的移動信息(數據流)中揭示有意義的模式。該平臺可以獲取低延遲洞察,併爲注重時效的應用程序(好比欺詐檢測或網絡管理)獲取更好的成果,從而提供業務價值。InfoSphere Streams 還可合併多個流,使您可以從多個流中獲取新洞察,如圖 3 所示。
圖 3. 合併的流處理
InfoSphere Streams 的主要設計目的是:
InfoSphere Streams 提供了一種編程模型和 IDE 來定義數據來源,還提供了已融合處處理執行單元中的稱爲運算符的軟件分析模塊。它還提供了基礎架構來支持從這些組件合成可擴展的流處理應用程序。主要平臺組件包括:
SPL,InfoSphere Streams 的編程語言,是一種分佈式數據流合成語言。它是一種相似 C++ 或 Java™ 的可擴展且全功能的語言,支持用戶定義的數據類型。您可使用 SPL 或原生語言(C++ 或 Java)編寫自定義函數。也可使用 C++ 或 Java 編寫用戶定義的運算符。
InfoSphere Streams 持續應用程序會描述一個導向圖,該圖由各個互聯且處理多個數據流的運算符組成。數據流可來自系統外部,或者在應用程序內部生成。SPL 程序的基本構建塊包括:
圖 4 演示了 SPL 程序的 InfoSphere Streams 運行時視圖:
圖 4. InfoSphere 運行時執行
一個運算符表示一個可重用的流轉換器,將一些輸入流轉換爲輸出流。在 SPL 程序中,運算符調用可實現預算法的特定用途,使用分配的特定的輸入和輸出流,以及在本地指定的參數和邏輯。每次運算符調用都會對輸入和輸出流命名。各類內置的 InfoSphere Streams 運算符提供了許多強大的功能:
Source
:讀取流格式的輸入數據。Sink
:將輸出流的數據寫入外部存儲或系統中。Functor
:過濾、轉換和對輸入流的數據執行各類功能。Sort
:對定義的鍵上的流數據排序。Split
:將輸入流數據拆分爲多個輸出流。Join
:合併定義的鍵上的輸入流數據。Aggregate
:聚合定義的鍵上的流數據。Barrier
:組合和匹配流數據。Delay
:演示一個流數據流。Punctor
:識別應一塊兒處理的數據分組。一個流鏈接到一個運算符的位置稱爲端口。許多運算符(例如 Functor
)有一個輸入端口和一個輸出端口,但運算符也能夠沒有輸入端口(好比 Source
)和沒有輸出端口(好比 Sink
),或者擁有多個輸入或輸出端口(好比 Split
和 Join
)。清單 1 給出了 Sink
的一個 SPL 示例,它有一個輸入端口並將輸出元組寫入到一個磁盤文件中。
清單 1. Sink
示例
() as Sink = FileSink(StreamIn) { param file : "/tmp/people.dat"; format : csv; flush : 20u; }
在 清單 1 中,file
是一個強制性參數,提供了輸出文件的路徑。flush
參數用於清除給定數量的元組後的輸出。format
參數指定了輸出文件的格式。
組合運算符是一個運算符集合。它表示對原始(非組合)運算符或組合(嵌套)運算符的一個子圖的一種封裝。它相似於過程語言中的宏。
一個應用程序由一個沒有輸入或輸出端口的主要組合運算符表示。數據可流入和流出,但不會流到一個圖表內的流上,並且流可導出到在同一個實例中運行的其餘應用程序和從這些應用程序導入。清單 2 中的代碼給出了主要組合運算符的框架。
清單 2. 主要組合運算符的結構
composite Main { graph stream ... { } stream ... { } ... }
做爲一個示例,咱們來看一個簡單的流應用程序 WordCount,它統計一個文件中的行數和字數。該程序由如下流圖組成:
Source
預算法調用,讀取一個文件並將各行發送給數據流。Functor
運算符調用,統計行數和每一個數據行的字數,將統計數據發送給它的輸出流。Counter
運算符調用,聚合文件中全部行的統計數據並打印在末尾。在介紹 WordCount 的主要組合運算符以前,我將定義一些幫助器。我將爲一行的統計數據使用 LineStat
類型。此外,我須要構建一個 countWords(rstring line)
函數來統計一行中的字數,須要使用一個 addM(mutable LineStat x, LineStat y)
函數來添加兩個 LineStat
值並存儲結果。清單 3 定義了這些幫助器。
清單 3. WordCount 幫助器定義
type LineStat = tuple<int32 lines, int32 words>; int32 countWords(rstring line) { return size(tokenize(line, " \t", false)); } void addM(mutable LineStat x, LineStat y) { x.lines += y.lines; x.words += y.words; }
如今能夠定義主要組合運算符了,如清單 4 所示。
清單 4. WordCount 的主要組合運算符
composite WordCount { graph stream<rstring line> Data = FileSource() { param file : getSubmissionTimeValue("file"); format : line; } stream<LineStat> OneLine = Functor(Data) { output OneLine : lines = 1, words = countWords(line); } () as Counter = Custom(OneLine) { logic state : mutable LineStat sum = { lines = 0, words = 0 }; onTuple OneLine : addM(sum, OneLine); onPunct OneLine : if (currentPunct() == Sys.FinalMarker) println(sum); } }
InfoSphere Streams 提供了一個敏捷開發環境,該環境由 Eclipse IDE、Streams Live Graph 視圖和一個流調試器組成。該平臺還包含用於加速和簡化特定功能或行業的解決方案開發的工具包:
Filter
、Sort
、Functor
、Join
、Punctor
和 Aggregate
FileSource
、FileSink
、DirectoryScan
和 Export
Custom Split
、DeDuplicate
、Throttle
、Union
、Delay
、ThreadedSplit
、Barrier
和 DynamicFilter
HTTP
、FTP
、HTTPS
、FTPS
和 RSS
等運算符。此外,您可定義您本身的工具包,提供可重用的運算符和函數集,並建立跨領域和特定於領域的加速器。它們可包含原始和組合運算符,也可同時使用原生和 SPL 函數。
不斷從系統中生成大量寶貴數據的公司正面臨爲如下兩個重要用途而分析數據的問題困擾:及時感知和響應當前事件,根據歷史知識進行預測,從而指導響應。這一情形產生了無縫運行移動數據(當前數據)和靜止數據(歷史數據)分析、處理海量、多樣性、高速產生的數據的需求。IBM 的移動數據 (InfoSphere Streams) 與靜止數據 (BigInsights) 平臺的集成解決了 3 個主要應用場景的需求:
IBM 大數據平臺的移動數據和靜止數據部分可經過 3 種主要的組件類型來集成:
Source
和 Sink
適配器可用於與 BigInsights 交換數據。幫助公司管理、分析和利用大數據是 IBM 大數據平臺的主要關注領域。本文介紹了 InfoSphere Streams,它是 IBM 用來存儲和分析移動數據(流數據)的軟件平臺。本文還概述瞭如何集成 InfoSphere Streams 與 BigInsights,它們是 IBM 用來存儲和分析靜止數據的軟件平臺,以便充實實現更復雜分析的能力。許多公司認識到,充分利用大數據是提供獨特的業務價值和優點的一個重要的信息管理手段。若是您已準備好使用 InfoSphere streams,請參見 參考資料,獲取免費的培訓材料和軟件。
更多大數據與分析相關行業資訊、解決方案、案例、教程等請點擊查看>>>
詳情請諮詢在線客服!
客服熱線:023-66090381