近實時分析方案中的組件介紹

Cloudera技術堆棧中構建近實時系統的組件

五種最經常使用的組件使得這一技術成文可能 web

• Apache Kafka 算法

• Apache Flume 數據庫

• Apache Spark 安全

• Apache Kudu 架構

• Apache Impala 工具

Apache Kafka

  • 每一個節點成爲Broker
  • 數據的topics方式寫入kafka
  • 每個topic均可以被分片
  • 分片分佈在broker上
  • 分片能夠有多個副本,其中一個爲leader
  • Producer,Consumer都與partition直接進行數據交換

     

Kafka應用場景

  • Kafka具備消息持久化、高吞吐、分佈

    式、多客戶端支持、實時等特性 oop

  • 適用於離線和在線的消息消費,如:

    • 常規的消息收集 性能

    • 網站活性跟蹤 大數據

    • 聚合統計系統運營數據(監控數據) 優化

    • 日誌收集

    • 其它大量數據的互聯網服務的數據收集場景

     

Apache Flume

實現Log & Event 的聚合

  •  高效的注入海量streaming/log 數據

    從多種系統(sources)獲取數據,並寫入到多種目標系統

    內建 sources, sinks, channels,開發集成簡單

    定製化的工做流能夠用來快速轉換數據

  • 可靠的、高效的、可擴展的能用於生產系統的工具

    可使用Cloudera Manager進行集中的管理和監控

     

Flume應用場景

   

• 日誌採集室Flume的主要應用場景,和其餘日誌採集工具相比,Flume最大的優點是?供了大量現成的Source和Sink,用戶只須要簡單的配置便可實現日誌採集和加載的工做

   

   

Kafka + Apache Flume

   

• Kafka 能夠被配置爲 Flume 的Channel

• Flume Sources 和 Sinks 能夠配置成Kafka的Consumer和Producer

   

Flume Sources Consume fromKafka:Write data to HDFS, HBase, or Search

   

   

Flume Sinks 把書架寫入Kafka:讀取logs, files, jms, http, rpc, thrift 等數據源並把事件數據寫入到Kafka

   

   

   

Spark Streaming

   

   

   

• Spark Streaming接收實時的輸入數據流,而後將這些數據切分爲批數據供Spark引擎處理,Spark引擎將數據生成最終的結果數據。

   

   

• 使用DStream從Kafka和HDFS等源獲取連續的數據流,Dstreams由一系列連續的RDD組成,每一個RDD包含肯定時間間隔的數據,任何對Dstreams的操做都轉換成對RDD的操做

   

   

Spark streaming容錯性以及可靠性

Spark streaming 依賴spark的調度架構

• Task失敗以後能夠從新運行

• 數據源接收以後會多備份一份

• 實現exactly-once

• 不能確保順序執行

 

Spark Streaming優點

Spark Streaming的優點在於:

• 能運行在100+的結點上,並達到秒級延遲。

• 使用基於內存的Spark做爲執行引擎,具備高效和容錯的特性。

• 能集成Spark的批處理和交互查詢。

• 爲實現複雜的算法提供和批處理相似的簡單接口。

 

Spark Streaming 支持的業務場景

目前而言SparkStreaming 主要支持如下三種業務場景無狀態操做:

• 只關注當前的DStream中的實時數據,例如 只對當前DStream中的數據作正確性校驗

• 有狀態操做:對有狀態的DStream進行操做時,須要依賴以前的數據 例如 統計網站各個模塊總的訪問量

• 窗口操做:對指定時間段範圍內的DStream數據進行操做,例如 須要統計一天以內網站各個模塊的訪問數量

   

Apache Kudu

kudu是高效分析快數據的存儲格式

• Hadoop平臺支持數據修改的新的列式存儲格式

• Apache許可,100%開源

• 當前爲Beta版本,2016年一季度GA

 

硬件行業的進展

   

機械硬盤 -> 固態硬盤

NAND 閃 存:讀數據時IOPS達到45萬個,寫數據時IOPS達到25萬個,讀數據的吞吐率約爲每秒2GB,寫數據的吞吐率達到每秒1.5GB, 存儲成本低於每GB3美圓而且持續降低

3D XPoint memory (比NAND快1000倍, 比RAM更有成本優點)

內存成本更低,單機內存量更大 :

• 過去幾年64->128->256GB

• 啓示 1: CPU 將成爲性能瓶頸,當前的存儲系統設計時並無考慮高效使用

CPU.

• 啓示 2: 列式存儲也能夠用於隨機訪問

   

Kudu的設計目標


 掃描大數據量時吞吐率高(列式存儲和多副本機制)

目標 : 相對Parquet的掃?性能差距在2x以內

訪問少許數據時延時低(主鍵索引和多數佔優複製機制)

目標 : SSD上讀寫延時不超過1毫秒

相似的數據庫語義(初期支持單行記錄的ACID)

關係數據模型

• SQL查詢

• "NoSQL"風格的掃?/插入/更新(Java客戶端)

 

Kudu的使用

  1. 相似SQL 模式的表

    • 有限的列數 (不一樣於HBase/Cassandra)

    • 數據類型: BOOL, INT8, INT16, INT32, INT64, FLOAT, DOUBLE, STRING, BINARY,TIMESTAMP

    • 一部分列構成聯合主鍵

    • ALTER TABLE快速返回

  2. "NoSQL" 風格的 Java和C++ APIs

    • Insert(), Update(), Delete(), Scan()

  3. 與MapReduce, Spark 和Impala 的無縫對接

    • 將對接更多處理引擎!

Impala簡介

  • Impala是高性能的MPP SQL引擎,支持超大數據集
    • 大規模並行處理架構(MPP)
    • 秒級低延遲查詢響應速度
  • Impala運行在Hadoop集羣之上
    • 直接寫入/查詢存放在HDFS或者HBase中的數據
    • 支持通用的Hadoop文件格式
  • 由Cloudera公司開發
    • Apache子項目,100%開源

   

Impala特色

  1. Impala SQL直接在Hadoop集羣上執行,不依賴底層的通用計算引擎,例如MapReduce
  2. 針對查詢進行優化,基於成本的執行優化器支持多用戶並行訪問,以及多種不一樣類型的工做負載
  3. 支持通用的Hadoop文件格式,包括Parquet, ORC, Sequence File等
  4. 和Hadoop管理模塊有很好的集成,包括元數據管理,安全整合等

 

Impala主要應用場景

主要適用於分析型應用,數據探索以及交互式自助查詢/分析

運營KPI 儀表盤

案例: 醫療保險

業務場景:

• 可視化展示當前醫院各項話費指標以及歷史趨勢

• 集成並整合了1000+醫院的系統數據

效益:

• 支持大規模數據處理,容許用戶查詢歷史數

據以及下鑽到更細粒度數據

• 節省了傳統數據庫許可證的費用

• 更好的查詢性能

   

實時SQL 數據探索

案例: 銀行

業務場景:

• 發現內部/外部的欺詐行爲

• 分析內外部系統的應用/web日誌

效益:

• 支持對非結構化數據的分析

• 使用現有的BI工具

• 使用現有Hadoop繼續,無需搬遷數據到外部的數據庫系統

相關文章
相關標籤/搜索