真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【kafka-創(chuàng)新互聯(lián)

kafka_02_筆記

kafka核心概念:
1.producer
2.consumer
3.broker
4.topic
5.partition
6.repalication

成都創(chuàng)新互聯(lián)主營吉首網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),吉首h5重慶小程序開發(fā)搭建,吉首網(wǎng)站營銷推廣歡迎吉首等地區(qū)企業(yè)咨詢

1.消費(fèi)者與消費(fèi)者組

1.consumer:
consumer group:
consumers
“消費(fèi)者消費(fèi)kafka里面的數(shù)據(jù) 是以 消費(fèi)者組的方式進(jìn)行消費(fèi)”

對(duì)接kafka常見的消費(fèi)者:
1.ss、sss、flume、flink
2.java代碼:

consumer group: 消費(fèi)者組
1.一個(gè)組內(nèi) 共享一個(gè)消費(fèi)者組的id 【group id】
2.組內(nèi)的所有消費(fèi)者協(xié)調(diào)在一起去消費(fèi)指定的topic的所有分區(qū)數(shù)據(jù):
“每個(gè)分區(qū)只能由一個(gè)消費(fèi)者組的一個(gè)消費(fèi)者來消費(fèi)”
絕對(duì)不會(huì)出現(xiàn)一個(gè)分區(qū)被一個(gè)消費(fèi)者組的多個(gè)消費(fèi)者進(jìn)行重復(fù)消費(fèi)

補(bǔ)充:
生產(chǎn)上:
1.一般都是一個(gè)消費(fèi)者+一個(gè)消費(fèi)者組
即:
一個(gè)消費(fèi)者組 就一個(gè)消費(fèi)者 可以消費(fèi)全部分區(qū)數(shù)據(jù)

超大公司: 
	會(huì)用到消費(fèi)者組 不同消費(fèi)者 處理不同分區(qū)數(shù)據(jù) 【很少見】

2.kafka數(shù)據(jù)存儲(chǔ)
一個(gè)partition:下面存儲(chǔ)就是數(shù)據(jù),一段一段相同大小的segment文件

segment:邏輯概念
log文件 【kafka topic里面的數(shù)據(jù)+event 元數(shù)據(jù)】 默認(rèn)大小
:log.segment.bytes=1073741824 1G
index文件 【索引文件,維護(hù)是log文件內(nèi) 大部分?jǐn)?shù)據(jù)的位置信息】

kafka-topics.sh
–create
–zookeeper bigdata32:2181,bigdata33:2181,bigdata34:2181/kafka
–topic bigdata
–partitions 1
–replication-factor 1

kafka-topics.sh
–list
–zookeeper bigdata32:2181,bigdata33:2181,bigdata34:2181/kafka

修改:
log.segment.bytes=1048576 1m

offset:偏移量 =》 event 編號(hào) 存儲(chǔ)在topic下的編號(hào)

-rw-rw-r–. 1 hadoop hadoop 2008 Dec 22 03:12 00000000000000000000.index
-rw-rw-r–. 1 hadoop hadoop 1048550 Dec 22 03:12 00000000000000000000.log
offset=【0-11517】
11517-0+1 =11518條數(shù)據(jù)

-rw-rw-r–. 1 hadoop hadoop 2024 Dec 22 03:12 00000000000000011518.index
-rw-rw-r–. 1 hadoop hadoop 1048524 Dec 22 03:12 00000000000000011518.log
offset=【11518-22914】
22914 -11518 +1 =xxx條數(shù)據(jù)

-rw-rw-r–. 1 hadoop hadoop 10485760 Dec 22 03:12 00000000000000022915.index
-rw-rw-r–. 1 hadoop hadoop 651820 Dec 22 03:12 00000000000000022915.log

segment命令規(guī)則:
1.parititon的全局的第一個(gè)segment 編號(hào)從0開始的
2.后續(xù)的segment名稱 是上一個(gè)segment文件的最后一條消息的【offset值+1】 來表示

offset:偏移量 =》 event 編號(hào) 存儲(chǔ)在topic下的編號(hào)
指 該條數(shù)據(jù)在partition的位置 從0開始

log文件 【kafka topic里面的數(shù)據(jù)+event 元數(shù)據(jù)】 默認(rèn)大小

kafka-run-class.sh
kafka.tools.DumpLogSegments
–files /home/hadoop/data/kafka/bigdata-0/00000000000000000000.log
–print-data-log \

0.log

index文件 【索引文件,維護(hù)是log文件內(nèi) 大部分?jǐn)?shù)據(jù)的位置信息】
kafka-run-class.sh
kafka.tools.DumpLogSegments
–files /home/hadoop/data/kafka/bigdata-0/00000000000000000000.index
–print-data-log \

0.index

offset: 47 position: 4174
offset: 94 position: 8357
offset: 140 position: 12492
offset: 186 position: 16632
offset: 232 position: 20772

1.維護(hù)partition的消息對(duì)應(yīng)offset信息和物理地址
2.稀疏表的方式維護(hù)的,并不是每一個(gè)消息的offset和物理地址都維護(hù)

面試題:
看圖說話,如何查找 offset 為 11865的數(shù)據(jù) ,簡(jiǎn)述過程?
-rw-rw-r–. 1 hadoop hadoop 2008 Dec 22 03:12 00000000000000000000.index
-rw-rw-r–. 1 hadoop hadoop 1048550 Dec 22 03:12 00000000000000000000.log

-rw-rw-r–. 1 hadoop hadoop 2024 Dec 22 03:12 00000000000000011518.index
-rw-rw-r–. 1 hadoop hadoop 1048524 Dec 22 03:12 00000000000000011518.log

-rw-rw-r–. 1 hadoop hadoop 10485760 Dec 22 03:12 00000000000000022915.index
-rw-rw-r–. 1 hadoop hadoop 651820 Dec 22 03:12 00000000000000022915.log

11518.index:
offset: 11750 position: 158143
offset: 11796 position: 162329
offset: 11842 position: 166515
offset: 11900 position: 166515

1.【二分查找】<= offset 為 11865 的大segment文件組 =》11518組
2.去11518.index 文件 【二分查找】<= offset 為 11865 大的offset
=》offset: 11842 =>position: 166515 物理地址
3.根據(jù)166515 物理地址 去信息定位 這個(gè)位置,按順序查找 一直找到 offset為11865的數(shù)據(jù)

3.交付語義 : 生產(chǎn)者/消費(fèi)者
At most once: Messages may be lost but are never redelivered.
At least once:Messages are never lost but may be redelivered.
Exactly once:this is what people actually want, each message is delivered once and only once.

至多一次:消息會(huì)丟失,不會(huì)重復(fù)發(fā)送/消費(fèi)
至少一次:消息不會(huì)丟失 重復(fù)發(fā)送/消費(fèi)
精準(zhǔn)一次:消息不會(huì)丟失 不會(huì)重復(fù)發(fā)送/消費(fèi) 完美的

produder:
1.kafka 0.11.0之前版本 至少一次 會(huì)導(dǎo)致重復(fù)數(shù)據(jù)
2.kafka 0.11.0之后包括 采用精準(zhǔn)一次發(fā)送數(shù)據(jù)

0.11.0之前版本:
1 2 3 4 5
3 掛了

producer =》 kafka
0.發(fā)送1 2 數(shù)據(jù)ok offset信息 也ok 記錄到kafka
1.發(fā)送數(shù)據(jù)3 producer 程序掛了 offset信息 沒有記錄
2.程序重啟 :
producer 程序 會(huì)繼續(xù)從 3 這個(gè)數(shù)據(jù) 接著發(fā)送數(shù)據(jù) =》 導(dǎo)致 kafka 有重復(fù)數(shù)據(jù)

0.11.0之后版本:
1 2 3 4 5
3 掛了
精準(zhǔn)一次【事務(wù),數(shù)據(jù)+ offset】
0.發(fā)送1 2 數(shù)據(jù)ok offset信息 也ok 記錄到kafka
1.發(fā)送數(shù)據(jù)3 producer 程序掛了 offset信息 沒有記錄 事務(wù) 3寫入的數(shù)據(jù) 標(biāo)記清除
2.程序重啟 :
producer 程序 會(huì)繼續(xù)從 3 這個(gè)數(shù)據(jù) 接著發(fā)送數(shù)據(jù) =》kafka沒有重復(fù)數(shù)據(jù)

kafka版本: 
	選 kafka 版本 一定要大于等于0.11.0版本

重點(diǎn):
kafka =>consumer: 交付語義

1 2 3 4 5
3 掛了

consumer:
1.正常 【從掛的地方繼續(xù)消費(fèi)即可】

問題:如何存儲(chǔ)上次消費(fèi)的offset的位置

主要取決于 你的消費(fèi)者組件:flume、spark、flink

sparkstreaming 對(duì)接kafka:交付語義選擇
1.至多一次:消息會(huì)丟失 不會(huì)有重復(fù)數(shù)據(jù)
2.至少一次:消息不會(huì)丟失 重復(fù)消費(fèi)
3.精準(zhǔn)一次:消息不會(huì)丟失 不會(huì)重復(fù)消費(fèi) 【完美】

至多一次:
1 2 3 4 5
1.offset 存儲(chǔ) 3
2. 3 數(shù)據(jù) 還沒有開始消費(fèi)
3. consumer 程序掛了
=》 重新啟動(dòng)
接著消費(fèi)
4
=》 數(shù)據(jù)丟失

至少一次:
1 2 3 4 5
1.consumer 消費(fèi) 3 offset 信息也提交了
consumser掛了
啟動(dòng)consumer
從4繼續(xù)消費(fèi)=》

消費(fèi)5 處理完了  offset 沒有提交 
	程序掛了=》 
	重啟程序=》 
		從5開始消費(fèi)數(shù)據(jù) 
		數(shù)據(jù)重復(fù)消費(fèi) 重復(fù)處理

精準(zhǔn)一次:
事務(wù)
數(shù)據(jù)消費(fèi) + offset提交

sparkstreaming/struedstreaming/flink : 消費(fèi) 交付語義選擇:
1.至少一次 =》 可能有數(shù)據(jù)消費(fèi)重復(fù)問題 [90%] code 簡(jiǎn)單
2.精準(zhǔn)一次 =》 完美的 【開發(fā)起來太麻煩了 】

sparkstreaming:【了解】
offset信息如何維護(hù)?
1.Checkpoints 【生產(chǎn)上,不能用 問題】
1.offset 信息 =》 hdfs 會(huì)有小文件問題
2.代碼發(fā)生變更 spark項(xiàng)目就不能用了 之前記錄的Checkpoints 信息就失效了
2.Kafka itself 【推薦】
【至少一次】 代碼簡(jiǎn)單 不需要用戶自己開發(fā) 維護(hù)offset信息的代碼

3.Your own data store 【外部數(shù)據(jù)源存儲(chǔ) offset】 
	redis、mysql、hbase 事務(wù)的
	10s發(fā)送一次請(qǐng)求 存儲(chǔ)數(shù)據(jù)
	【精準(zhǔn)一次】 
		code

4.副本與數(shù)據(jù)同步

8個(gè)節(jié)點(diǎn)
1個(gè)分區(qū) 1個(gè)副本
8個(gè)分區(qū) 1副本

leader 與 foller:
leader: 該分區(qū)負(fù)責(zé)對(duì)外讀寫的節(jié)點(diǎn)
foller:負(fù)責(zé)拉取leader分區(qū)數(shù)據(jù) 進(jìn)行數(shù)據(jù)備份

機(jī)制:
ack 消息發(fā)送確認(rèn)機(jī)制 【producer】

all, -1, 0, 1 

1.ack =1  producer 發(fā)送數(shù)據(jù) 只要一個(gè)分區(qū)副本成功寫入的通知 就認(rèn)為推送消息成功
2.ack =-1 producer 發(fā)送數(shù)據(jù) producer收到所有分區(qū)副本寫入成功的通知才任務(wù)推送消息成功 
3.ack=0 producer 發(fā)送一次數(shù)據(jù)即可 不管是否發(fā)送成功 

all =>-1 

選擇: 
	1. 0  不要選擇
	2. 1   選擇這個(gè)【其次】
	3. all 建議【安全】

consumerapi :

1.earliest
2.latest

kafka-console-consumer.sh
–bootstrap-server bigdata33:9092,bigdata34:9092
–topic bigdata
–from-beginning

flume :
1.flume =>kafka
2. kafka =>flume =>hdfs

kafka監(jiān)控:
1.kafka manager [選 ]: 二開 【了解】
https://github.com/yahoo/CMAK
按量計(jì)費(fèi)
2.kafka eagle =》 也好用 【low 一點(diǎn)點(diǎn) 】 用起來簡(jiǎn)單
部署簡(jiǎn)單 簡(jiǎn)單好用
http://www.kafka-eagle.org/
https://github.com/smartloli/EFAK

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)頁名稱:【kafka-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://weahome.cn/article/phigh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部