第209期 / March 5, 2015

分享到臉書!分享到維特!分享到噗浪!分享到Google+!分享到微博!轉寄友人友善列印

資料流(Streaming Data)技術於大數據(Big Data)之應用淺析

作者/王宜倫

[發表日期:2015/3/5]



前言

今日,我們生活在一個數位世界中,資訊通訊技術(ICT)不僅隨時圍繞著我們的生活,也對我們的生活品質發揮重要的影響力。當我們深入研究這個數位世界會發現,藉由網際網路傳輸的推波助瀾下,資料的多樣性、產生的速度和量,正進行爆炸性的增長,IDC預測在2015年,我們的數位世界產生的資料量將暴增到8 zettabytes (註1)。資料爆炸(Data Explosion)的議題又被稱為Big Data Problem,實務上困難點在於要如何收集過於龐大且複雜的資料,並將其過濾、彙總、傳遞至Big Data處理平台,現有分析及解讀Big Data的應用系統面對愈趨如此龐大的資料量也愈顯困難。

今日的政府和商業組織的資訊科技面對的挑戰是處理Terabytes甚至Petabytes的資料量,IDC估算全球的資訊量每兩年會成長一倍,10年後全球伺服器數量將成長10x,企業Data Center管理的資訊將成長50x、處理的檔案將成長75x;這些資料主要來自網路搜尋、社群媒體、行動裝置、物聯網(Internet of Thing, IoT)、商業交易、科學實驗數據以及內容傳播。面對資料來源的多樣性、產生速度和量的變化,對動態即時資料流(Streaming Data)的收集和整合需求將日益成長,尤其是在物聯網這殺手級應用的加持下,Streaming Data的處理更是一個重要課題。

大數據資料流(Streaming Big Data)

在Big Data領域,大數據資料流(Streaming Big Data)是由大量不同的即時資料源持續不間斷的製造大量的訊息(Message)和事件(Event)所產生,並進而持續累積為龐大的資料。雖然以Streaming Data型態收集和整合Message和Event是較佳的方式,但是主要挑戰在如何持續不斷的處理大量噴出的資料?如何有效率和有成本效益的收集不同資料源產出的資料、並迅速穩定的傳送給不同技術的處理平台?要能處理Streaming BIG Data的解決方案應該要能滿足到下列考量:
  • 即時高效能處理能力,能處理大量的資料流。
  • 高擴充性,滿足未來資料爆炸性成長需求。
  • 資料收集須滿足各種資料格式,支援多樣的資料源和目的端平台。
  • 高可用性,異常可自動切換且切換時間要趨近於零,要具備保證送達(Guaranteed Delivery)的能力。
  • 高傳輸效率,資料在傳輸過程(In-Flight)避免不必要的資料複製和保存。
  • 簡單的設定、佈署、管理和監控機制,配置圖形化介面。

現行實務上Streaming Big Data解決方案簡述如下:

    Apache Chukwa
    Chukwa是Hadoop的一個子計畫,專注於大量log收集和分析應用。Chukwa為WAL (Write Ahead Log)架構,基於於HDFS (Hadoop Distributed File System)和MapReduce框架開發,並繼承Hadoop既有擴充性和穩定性;同時,為了要能對收集到的資料做最佳的使用,Chukwa也具備功能強大的工具可進行分析和監控。

    Apache Flume
    Flume用於收集與彙總來自不同資料源的大量log資料,並可將這些log資料集中到同一Data Store。Flume為WAL (Write Ahead Log)架構,為分散式系統,具備高可靠性與高可用性特性。

    Apache Kafka

    Kafka最初由LinkedIn公司所開發,後續成為Apache其中一個子專案,其為分散式系統設計,具有高擴充性;採用Broker-Based與Store-And-Forward設計,支援發布/訂閱(pub/sub)機制,提供高處理容量、支援多Subscriber,並可自動平衡Consumer。Kafka支援Persistence功能,可將Data保存在Disk,並利用Persistence功能支援批次作業。

    Facebook Scribe
    Scribe用於彙總大量伺服器即時產生的log資料,為Broker-Based與Store-And-Borward設計,具備高擴充性,且擴充時不會影響Client端,具備高可用性,運作上不會受到網路或是設備故障影響。

    Fluentd
    Fluentd是一個開放原始碼的Data Collector,可收集和處理組織中log資料,Fluentd將log以JSON (JavaScript Object Notation)方式處哩。其主要特點為使用者可依自己需求進行客製化修改。

在商業軟體產業,包含IBM、Informatica、SAP、Splunk、Tibco等多家廠商在big data領域深耕streaming data解決方案多年;相較於其他解決方案較專注於log資料(例如Kafka、Flume、Scribe),商用軟體產品支援的資料來源與格式更為廣泛、功能與傳輸效率更為強大。其中Informatica VDS是基於其低延遲訊息交換軟體Ultra Messaging產品所設計,在傳輸效能與可用性上有其優勢。

結論

採用Streaming Data技術之解決方案主要效益在可取得最新、最即時的資料,並立即採取相對應的措施以獲取最大營運效益並降低營運風險,例如金融業可利用加值後的即時行情資料進行下單和風險控管;運輸業可了解目前的運輸網路效能和異常事件,並做適當的調配,航空公司可了解目前所有在天上飛的飛機運作狀態,達到即時的預防性預警,飛機一落地可立即進行維修和保養;電信業可即時獲取關於顧客、帳務、網路、服務等可操作的情報;製造業可對遠地工廠設備進行更細緻的調配以維持最佳化的生產效率;能源業可藉由智慧電表即時的監控電力使用趨勢、異常和警戒型態。

(註1)1 zettabyte = 1 billion terabytes;
1 zettabyte = 1,000 exabytes;1 exabyte = 1,000 petabytes;1 petabyte = 1,000 terabytes。


參考資料

1、R. Ranjan, “Streaming Big Data Processing in Datacenter Clouds”. IEEE Cloud Computing 1(1): 78-83 (2014)
2、2011 IDC Digital Universe Study
3、http://rajivranjan.net/research-directory/big-data-management-and-processing-data-centre-clouds/
4、https://chukwa.apache.org/
5、http://flume.apache.org/
6、http://www.fluentd.org/architecture
7、http://kafka.apache.org/
8、http://en.wikipedia.org/wiki/Scribe_(log_server)
9、http://www.informatica.com