InfoSphere Streams——實時大數據分析平臺

瞭解 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% 都是半結構化或非結構化數據。公司一直在尋求更加敏捷地經營業務,以更加創新的方式執行數據分析和決策流程。並且他們認識到,這些流程中損失的時間可能致使錯失業務機會。大數據挑戰的核心是,公司掌握輕鬆地分析和理解互聯網級信息的能力,就像他們如今可分析和理解較少許結構化信息同樣。編程

streams

IBM 正在幫助公司應對大數據挑戰,爲他們提供工具來集成和管理海量、高速產生的數據,應用原生格式的分析,可視化可用數據以進行專門分析,等等。本文將介紹 InfoSphere Streams,該技術支持您同時分析許多數據類型並實時執行復雜計算。您將瞭解 InfoSphere Streams 的工做原理,它的用途,以及如何結合使用它與另外一個用於大數據分析的 IBM 產品(IBM InfoSphere BigInsights)來執行高度複雜的分析。瀏覽器

InfoSphere BigInsights:概述

MapReduce

MapReduce 框架(由 Google 引入)使得對商用計算機集羣的編程可一次性地執行大規模的數據處理。一個 MapReduce 集羣可以以容錯方式擴展到數千個節點,以高度並行且經濟高效的方式處理數 PB 數據。該框架的一個主要優勢是,它依賴於一種簡單而又強大的編程模型。此外,它將應用程序開發人員與運行一個分佈式程序的全部複雜細節相隔離,好比與數據分發、調度和容錯相關的問題。安全

理解 InfoSphere BigInsights 將會使您可以更全面地理解 InfoSphere Streams 的用途和價值。網絡

BigInsights 是一個分析平臺,可幫助公司將複雜的互聯網級信息集轉換爲洞察。它包含一個套裝的 Apache Hadoop 發行版(具備高度簡化的安裝流程)和用於應用程序開發、數據移動和集羣管理的關聯工具。得益於簡單性和可伸縮性,Hadoop(MapReduce 框架的一種開源實現)在行業和學術界得到的巨大的成功。除了 Hadoop 以外,BigInsights 中的其餘開源技術(除 Jaql 外的全部技術都屬於 Apache Software Foundation 項目)包括:數據結構

  • Pig:該平臺提供了一種高級語言來表達分析大數據集的程序。Pig 配備了一個編譯器,可將 Pig 程序轉換爲 Hadoop 框架執行的 MapReduce 做業序列。
  • Hive:一個構建於 Hadoop 環境之上的數據倉庫解決方案。它爲 Hadoop 的非結構化世界帶來了人們熟悉的關係數據庫概念,好比表、列和分區,以及 SQL 的一個子集 (HiveQL)。Hive 查詢被編譯爲使用 Hadoop 執行的 MapReduce 做業。
  • Jaql:IBM 專爲 JSON(JavaScript Object Notation,JavaScript 對象表示法)開發的一種查詢語言,提供了一種相似 SQL 的接口。Jaql 適度地處理嵌套,高度面向函數,並且很是靈活。它適用於鬆散的結構化數據,是 HBase 列存儲和文本分析的接口。
  • HBase:一個面向列的 NoSQL 數據存儲環境,旨在支持 Hadoop 中大型、稀疏填充的表。
  • Flume:一種分佈式、可靠且可用的服務,用於高效地移動生成的大量數據。Flume 很是適合從多個系統中收集生成的日誌,在它們插入 HDFS(Hadoop Distributed File System,Hadoop 分佈式文件系統)。
  • Lucene:一個搜索引擎庫,提供了高性能的、全功能的文本搜索。
  • Avro:一種數據序列化技術,使用 JSON 來定義數據類型和協議,以一種緊湊的二進制格式對數據執行序列化。
  • ZooKeeper:一種維護配置信息和命名,提供分佈式同步和分組服務的集中化服務。
  • Oozie:一個工做流調度程序系統,用於管理和編排 Apache Hadoop 做業的執行過程。

此外,BigInsights 發行版還包含如下 IBM 獨有的技術:架構

  • BigSheets:一種基於瀏覽器、相似電子表格的查詢和探索接口,使業務用戶可以輕鬆地收集和分析數據,利用 Hadoop 的強大功能。它提供了內置的閱讀器,可處理多種常見格式的數據,包括 JSON、逗號分隔值 (CSV) 和製表符分隔值 (TSV)。
  • Text analytics:常見業務實體的文本註釋符的一個預先構建的庫。它提供了豐富的語言和工具來構建自定義位置註釋符。
  • Adaptive MapReduce:一個 IBM Research 解決方案,經過更改 MapReduce 任務的處理方式來加速小型 MapReduce 做業的執行。

關於biginsights免費試用版請聯繫咱們>>>

InfoSphere 平臺

InfoSphere 是一個綜合性的信息集成平臺,包含數據倉庫和分析、信息集成、主數據管理、生命週期管理,以及數據安全和隱私。該平臺改進了應用程序開發流程,因此組織能夠加快價值實現速度,減小集成成本,並提升信息質量。框架

通常來說,BigInsights 的設計並非爲了取代一種傳統的關係數據庫管理系統 (DBMS) 或傳統的數據倉庫。具體來說,它沒有針對對錶列數據結構的交互式查詢、在線分析處理 (OLAP) 或在線事務處理 (OLTP) 應用程序而優化。可是,做爲 IBM 大數據平臺的組成部分,BigInsights 提供了與該平臺的其餘組件(包括數據倉庫、數據集成和治理引擎)和第三方數據分析工具的潛在集成點。在本文後面將會看到,它還可與 InfoSphere Streams 集成。機器學習

流計算:一種新的計算模式

流計算是新的數據聲場場景所不可或缺的一種新計算模式,好比無處不在的移動設備、位置服務和遍及各處的傳感器。人們須要可伸縮的計算平臺和並行架構來處理生成的海量流數據。

BigInsights 技術不足以支持實時流處理任務,由於它們主要面向對靜態數據的批處理的支持。在處理靜態數據的過程當中,列出全部已連網的用戶這樣的查詢會獲得單一的結果集。藉助對流數據的實時處理,您可執行一種持續查詢,好比列出在過去 10 分鐘內連網的全部用戶。此查詢將返回持續更新的結果。在靜態數據領域中,用戶猶如在乾草堆中撈針;在流數據領域中,用戶可輕鬆地找到這顆針,由於乾草已被吹走。

streams

InfoSphere Streams 平臺支持流數據的實時處理,支持不斷更新持續查詢的結果,可在仍在移動的數據流中檢測洞察。

InfoSphere Streams 概述

InfoSphere Streams 旨在從一個幾分鐘到幾小時的窗口中的移動信息(數據流)中揭示有意義的模式。該平臺可以獲取低延遲洞察,併爲注重時效的應用程序(好比欺詐檢測或網絡管理)獲取更好的成果,從而提供業務價值。InfoSphere Streams 還可合併多個流,使您可以從多個流中獲取新洞察,如圖 3 所示。

streams

圖 3. 合併的流處理

InfoSphere Streams 的主要設計目的是:

  • 快速響應事件和不斷變化的業務條件與需求。
  • 支持以比現有系統快幾個數量級的速度對數據執行持續分析。
  • 快速適應不斷變化的數據形式和類型。
  • 管理新的流模式的高可用性、異構性和分佈。
  • 爲共享的信息提供安全性和信息機密性。

InfoSphere Streams 提供了一種編程模型和 IDE 來定義數據來源,還提供了已融合處處理執行單元中的稱爲運算符的軟件分析模塊。它還提供了基礎架構來支持從這些組件合成可擴展的流處理應用程序。主要平臺組件包括:

  • 運行時環境:這包括平臺服務,以及一個用於在單個主機或一組集成的主機上部署和監視 Streams 應用程序的調度程序。
  • 編程模型:您可以使用 SPL(Streams Processing Language,流處理語言,一種聲明性語言)來編寫 Streams 應用程序。可以使用該語言陳述您的需求,運行時環境會承擔肯定如何最佳地服務該請求的責任。在此模型中,一個 Streams 應用程序表示爲一個由運算符和鏈接它們的流組成的圖表。
  • 監視工具和管理接口:Streams 應用程序處理數據的速度比普通的操做系統監視實用程序快得多。InfoSphere Streams 提供了可處理此環境的工具。

關於Streams免費試用版請聯繫咱們>>>

流處理語言

SPL,InfoSphere Streams 的編程語言,是一種分佈式數據流合成語言。它是一種相似 C++ 或 Java™ 的可擴展且全功能的語言,支持用戶定義的數據類型。您可使用 SPL 或原生語言(C++ 或 Java)編寫自定義函數。也可使用 C++ 或 Java 編寫用戶定義的運算符。

InfoSphere Streams 持續應用程序會描述一個導向圖,該圖由各個互聯且處理多個數據流的運算符組成。數據流可來自系統外部,或者在應用程序內部生成。SPL 程序的基本構建塊包括:

  • :一個無限的結構化元組序列。它可逐個元組地由運算符使用或經過一個窗口的定義來使用。
  • 元組:屬性及其類型的一個結構化列表。流上的每一個元組擁有由其流類型指定的形式。
  • 流類型:指定元組中每一個屬性的名稱和數據類型。
  • 窗口:一個有限、有序的元組分組。它能夠基於計數、時間、屬性值或標點符號。
  • 運算符:SPL 的基礎構建塊,它的運算符會處理來自流的數據並可生成新流。
  • 處理元素 (PE):基礎執行單元。一個 PE 可封裝單個運算符或多個合併的運算符。
  • 做業:一個已部署好的用來執行的 Streams 應用程序。它由一個或多個 PE 組成。除了一組 PE 以外,SPL 編譯器還會生成一個 ADL(Application Description Language,應用程序描述語言)文件來描述應用程序的結構。該 ADL 文件包含每一個 PE 的詳細信息,好比要加載和執行哪一個二進制文件,調度限制、流格式和一個內部運算符數據流圖。

圖 4 演示了 SPL 程序的 InfoSphere Streams 運行時視圖:

streams

圖 4. InfoSphere 運行時執行

一個運算符表示一個可重用的流轉換器,將一些輸入流轉換爲輸出流。在 SPL 程序中,運算符調用可實現預算法的特定用途,使用分配的特定的輸入和輸出流,以及在本地指定的參數和邏輯。每次運算符調用都會對輸入和輸出流命名。各類內置的 InfoSphere Streams 運算符提供了許多強大的功能:

  • Source:讀取流格式的輸入數據。
  • Sink:將輸出流的數據寫入外部存儲或系統中。
  • Functor:過濾、轉換和對輸入流的數據執行各類功能。
  • Sort:對定義的鍵上的流數據排序。
  • Split:將輸入流數據拆分爲多個輸出流。
  • Join:合併定義的鍵上的輸入流數據。
  • Aggregate:聚合定義的鍵上的流數據。
  • Barrier:組合和匹配流數據。
  • Delay:演示一個流數據流。
  • Punctor:識別應一塊兒處理的數據分組。

一個流鏈接到一個運算符的位置稱爲端口。許多運算符(例如 Functor)有一個輸入端口和一個輸出端口,但運算符也能夠沒有輸入端口(好比 Source)和沒有輸出端口(好比 Sink),或者擁有多個輸入或輸出端口(好比 SplitJoin)。清單 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 視圖和一個流調試器組成。該平臺還包含用於加速和簡化特定功能或行業的解決方案開發的工具包:

  • 標準工具包:包含隨產品發佈的默認運算符:
    • 關係運算符,好比 FilterSortFunctorJoinPunctorAggregate
    • 適配器 運算符,好比 FileSourceFileSinkDirectoryScanExport
    • 實用程序運算符,好比 Custom SplitDeDuplicateThrottleUnionDelayThreadedSplitBarrierDynamicFilter
  • 互聯網工具包:包括 HTTPFTPHTTPSFTPSRSS 等運算符。
  • 數據庫工具包:支持 DBMS,包括 DB2®、Netezza、Oracle Database、SQL Server 和 MySQL。
  • 其餘內置工具包:金融、數據挖掘、大數據和文本工具包。

此外,您可定義您本身的工具包,提供可重用的運算符和函數集,並建立跨領域和特定於領域的加速器。它們可包含原始和組合運算符,也可同時使用原生和 SPL 函數。

BigInsights 和 InfoSphere Streams 之間的集成和交互

不斷從系統中生成大量寶貴數據的公司正面臨爲如下兩個重要用途而分析數據的問題困擾:及時感知和響應當前事件,根據歷史知識進行預測,從而指導響應。這一情形產生了無縫運行移動數據(當前數據)和靜止數據(歷史數據)分析、處理海量、多樣性、高速產生的數據的需求。IBM 的移動數據 (InfoSphere Streams) 與靜止數據 (BigInsights) 平臺的集成解決了 3 個主要應用場景的需求:

  • 可伸縮的數據獲取:經過 Streams 持續將數據獲取到 BigInsights 中。例如,一般須要獲取來自社交媒體來源(好比 Twitter 和 Facebook)的非結構化文本數據,以提取各類類型的態度和線索。在這種狀況下,若是文本提取在獲取數據時執行,那麼儘早消除垃圾郵件等無關數據會讓效率高不少。這種集成使公司可以避免鉅額的非必要存儲成本。
  • 加速和充實:從 BigInsights 生辰歷史上下文來加速分析和充實傳入的 Streams 數據。BigInsights 可用於分析在較長的時間窗口內從各類連續和靜態的數據來源吸取和集成的數據。此分析的結果爲各類在線分析提供了上下文,可用於將它們引導至一種已知狀態。回到社交媒體應用程序的場景,一條傳入的 Twitter 消息僅擁有發佈該消息的人的 ID。可是,歷史數據可經過屬性(好比影響者)充實該信息,爲執行下游分析以適當應對此用戶所表達的態度提供機會。
  • 自適應分析模型:BigInsights 上的分析操做(好比數據挖掘、機器學習或統計建模)所生成的模型。這些可用做分析 Streams 上的傳入數據的基礎,基於實時觀察結果而更新。

IBM 大數據平臺的移動數據和靜止數據部分可經過 3 種主要的組件類型來集成:

  • 通用分析:相同的分析功能可用在 Streams 和 BigInsights 上。
  • 通用數據格式:Streams 格式運算符可在 Streams 元組格式和 BigInsights 使用的數據格式之間轉換數據。
  • 數據交換適配器:Streams SourceSink 適配器可用於與 BigInsights 交換數據。

結束語

幫助公司管理、分析和利用大數據是 IBM 大數據平臺的主要關注領域。本文介紹了 InfoSphere Streams,它是 IBM 用來存儲和分析移動數據(流數據)的軟件平臺。本文還概述瞭如何集成 InfoSphere Streams 與 BigInsights,它們是 IBM 用來存儲和分析靜止數據的軟件平臺,以便充實實現更復雜分析的能力。許多公司認識到,充分利用大數據是提供獨特的業務價值和優點的一個重要的信息管理手段。若是您已準備好使用 InfoSphere streams,請參見 參考資料,獲取免費的培訓材料和軟件。

關於Streams免費試用版請聯繫咱們>>>

更多大數據與分析相關行業資訊、解決方案、案例、教程等請點擊查看>>>

詳情請諮詢在線客服

客服熱線:023-66090381

相關文章
相關標籤/搜索