大數據學習筆記(二)--實時處理架構


一、大數據實時處理有什么意義呢?

我們得到數據可以進行數據分析,利用數據統計方法,從錯綜復雜的數據關系中梳理出事物的聯系,建立一些BI(Business Intelligence)報表,對一些數據的有用信息進行可視化呈現,供我們進行分析和決策。

 

二、數據實時處理能做什么?

1)實時計算
我們從數據源端拿到的數據,很多時候復雜並且很不直觀,我們想對得到的數據進行 ETL 操作、或者進行關聯等等,那么我們就會用到數據的實時計算。

目前主流的實時計算框架有 Spark,Storm,Flink 等。現在還有阿里的開源產品:Blink

2)實時落地
數據的實時落地,意思是將我們的源數據或者計算好的數據進行實時的存儲。在大數據領域,推薦使用 HDFS,HBASE,ES(ElasticSearch) 等進行存儲。

3)實時展示與分析
我們拿到了數據,要會用數據的價值。數據的價值體現在數據中相互關聯關系,或與歷史關聯,或能預測未來。我們實時得到數據,不僅能夠利用前端框架進行實時展示,還可以對其中的一些數據進行算法訓練,預測未來走勢等。

三、數據實時處理框架介紹

1)數據采集端: flume

flume 是一個分布式的數據收集系統,具有高可靠、高可用、事務管理、失敗重啟、聚合和傳輸等功能。數據處理速度快, 完全可以用於生產環境。

flume 的核心概念有:event,agent,source,channel,sink

event

flume 的數據流由事件 (event) 貫穿始終。event 是 flume 的基本數據單位,它攜帶日志數據並且攜帶數據的頭信息,這些 event 由 agent 外部的 source 生成,當 source 捕獲事件后會進行特定的格式化,然后 source 會把事件推入 channel 中。可以把 channel 看作是一個緩沖區,它將保存事件直到 sink 處理完該事件。sink 負責持久化日志或者把事件推向另一個 source。

agent

flume 的核心是 agent。agent 是一個 java 進程,運行在日志收集端,通過 agent 接收日志,然后暫存起來,再發送到目的地。 每台機器運行一個 agent。 agent 里面可以包含多個 source,channel,sink。

source

source 是數據的收集端,負責將數據捕獲后進行特殊的格式化,將數據封裝到 event 里,然后將事件推入 channel 中。flume 提供了很多內置的 source,支持 avro,log4j,syslog 等等。如果內置的 source 無法滿足環境的需求,flume 還支持自定義 source。

channel

channel 是連接 source 和 sink 的組件,大家可以將它看做一個數據的緩沖區(數據隊列),它可以將事件暫存到內存中也可以持久化到本地磁盤上, 直到 sink 處理完該事件。兩個較為常用的 channel,MemoryChannel 和 FileChannel。

sink

sink 從 channel 中取出事件,然后將數據發到別處,可以向文件系統、數據庫、hadoop、kafka,也可以是其他 agent 的 source。

flume 的可靠性與可恢復性
flume 的可靠性:當節點出現故障時,日志能夠被傳送到其他節點上而不會丟失。Flume 提供了可靠性保障,收到數據首先寫到磁盤上,當數據傳送成功后,再刪除;如果數據發送失敗,可以重新發送。
flume 的可恢復性:可恢復性是靠 channel。
flume框架圖:

2)數據緩沖緩存: Kafka

Kafka 是一個高吞吐量的分布式發布-訂閱消息系統。企業中一般使用 kafka 做消息中間件,做緩沖緩存處理。需要 zookeeper 分布式協調組件管理。

kafka 的設計目標:

提供優秀的消息持久化能力,對 TB 級以上數據也能保證常數時間的訪問性能。
高吞吐率。即使在非常廉價的機器上也能做到每台機每秒 100000 條消息的傳輸。
支持 kafka server 間的消息分區,及分布式消費,同時保證每個 partition 內的消息順序傳輸。
同時支持離線數據處理和實時數據處理。

kafka 核心概念

broker:消息中間件處理結點,一個 kafka 節點就是一個 broker,多個 broker 可以組成一個 kafka 集群。
topic:主題,kafka 集群能夠同時負責多個 topic 的分發。
partition:topic 物理上的分組,一個 topic 可以分為多個 partition,每個 partition 是一個有序的隊列。
offset:每個 partition 都由一系列有序的、不可變的消息組成,這些消息被連續的追加到 partition 中。partition 中的每個消息都有一個連續的序列號叫做 offset,用於 partition 唯一標識一條消息。
producer:負責發布消息到 kafka broker。
consumer:消息消費者,向 kafka broker讀取消息的客戶端。
consumer group:每個 consumer 屬於一個特定的 consumer group。

 

kafka架構圖:

 

下圖展示了Kafka的相關術語以及之間的關系:

 

下面是2種消息傳遞方式:

 

實時處理框架下篇再講

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM