大資料(Kafka) 原理

2021-08-19 23:25:29 字數 2206 閱讀 6564

在kafka中向topic傳送訊息者稱為producer,從topic獲取資料者稱為consumer,consumer被定義到乙個consumer group中,整個kafka集群通過zookeeper進行協調

kafka集群由多個broker例項組成,訊息按照topic進行分類儲存,每個topic被分為多個分割槽,每個分割槽又存在多個副本,保證資料對可用性

partition內順序儲存,寫入對訊息採用追加的方式,消費者採用fifo的方式進行拉去,乙個topic由多個分割槽組成,分區內的資料有序,但kafka並不保證topic中的資料整體有序。

為了加快讀取,多個consumer被劃分為乙個consumer group並行的消費topic中的資料,乙個topic可以由多個consumer group訂閱,多個conser group之間互補影響,可以同時消費同一條資料,但組內但consumer ,同一條訊息只能被乙個consumer處理,

topic的每個partition副本對應乙個物理上的目錄,儲存當前partition資料,partition中的資料以segment為單位儲存,每個segment儲存一段資料。

kafka為了提高讀取效率,為每個segment建立乙個兩個索引檔案,乙個以訊息偏移量為依據,以.index結尾,以偏移量為名稱,另乙個是以訊息被寫入的時間戳為依據,以.timeindex結尾,以時間偏移量為名稱。偏移量索引檔案中稀疏儲存來偏移量既索引位置,而時間索引檔案中儲存來時間戳偏移量和索引位置,這樣可以以logn的時間複雜度快速定位到segment中的資料。

偏移量索引檔案

1)以偏移量作為名稱,index作為字尾

2)索引內容格式:offset,position

3)採用稀疏的儲存方式

4)通過log.index.interval.bytes設定索引跨度

時間錯索引檔案

1)以時間戳作為名稱,以timeindex為字尾

2)索引內容格式:timestame,offset

3)採用稀疏儲存方式

4)通過log.index.interval.bytes設定索引跨度

資料高可用

1)乙個topic可以又多個分割槽,每個分割槽多個副本

2)0.8版本以前分割槽沒有副本(replication),一旦某個broker宕機,其上的partition資料便丟失

3)乙個分割槽的多個副本選舉乙個leader,由leader負責讀寫,其他副本作為follower從leader同步資料

4)同乙個partition的不同副本分布到不同的broker上

集群高可用

1)從集群中的broker選舉乙個broker作為controller控制節點

2)controller負責整個集群的管理,如broker管理,topic管理,partition leader選舉

3)選舉過程通過想zookeeper建立臨時的znode節點實現,為選中的broker監聽controller的znode,等待下次選舉

partition leader高可用

1)controller負責分割槽leader的選舉

2)follower批量從leader拉取資料

3)leader跟蹤與其保持同步的flower列表isr,isr作為下次選主的時候列表

4)follower心跳超時時或者訊息落後太多,將被移除isr列表

5)leader失敗後,由controller從isr列表中選擇乙個follower作為新的leader

大資料開發 Kafka工作原理入門

kafka在大資料技術生態當中,以作為訊息系統而聞名,面對活躍的流式資料,提供高吞吐量的服務,在實時大資料處理場景下,可以說是一大利器,國內外大廠都有應用。今天的大資料開發分享,我們就主要來講講kafka框架的工作原理。官方定義,kakfa是乙個分布式的基於發布 訂閱模式的訊息佇列,主要應用於大資料...

大資料架構 Kafka

kafka 分布式的發布 訂閱訊息系統,主要用於處理活躍的資料 特點 高吞吐量 每秒百萬級別的生產消費 生產消費 永續性 由完善的訊息儲存機制,確保資料的高效安全的持久化 中間儲存 分布式 基於分布式的儲存和容錯機制 整體的健壯性 kafka的元件 kafka服務 topic 主題 kafka處理的...

部署 kafka 大資料Kafka集群部署

2 kafka集群部署 1 解壓安裝包 atguigu hadoop102 software tar zxvf kafka 2.11 0.11.0.0.tgz c opt module 2 修改解壓後的檔名稱 atguigu hadoop102 module mv kafka 2.11 0.11.0...