1.核心概念
broker: 進(jìn)程
producer: 生產(chǎn)者
consumer: 消費(fèi)者
topic: 主題
partitions: 分區(qū)? (副本數(shù))
consumergroup:
1.容錯(cuò)性的消費(fèi)機(jī)制
2.一個(gè)組內(nèi)姑荷,共享一個(gè)公共的ID groupid
3.組內(nèi)的所有消費(fèi)者協(xié)調(diào)在一起盒延,
去消費(fèi)topic的所有的分區(qū)
4.每個(gè)分區(qū)只能由同一個(gè)消費(fèi)組的一個(gè)消費(fèi)者來(lái)消費(fèi)
123--> 1:0分區(qū)? 0分區(qū)還坐落在2,3機(jī)器上面? ?
offset: 每個(gè)partition的數(shù)據(jù)的id
00000000000000000000.index
00000000000000000000.log
00000000000000002000.index?
00000000000000002000.log
a1? ? 00000000000000000001
a2? ? 00000000000000000002
a3
...
a2000
00000000000000000000.index
1,0? ? ? 1代表第一條消息 offset ,偏移量
4,55? ?
10,77
....
....
稀疏表 隔幾條記錄一次
拋出問(wèn)題:
1.消費(fèi)offset 4
2.消費(fèi)offset 7 -->4 按順序往后讀
3.offset 2700
00000000000000002000.index?
00000000000000002000.log
2001? ? 00000000000000002001
2002
segment:
1.log和index文件
2.
log.segment.bytes
log.roll.hours
3.命名規(guī)則: 上一個(gè)segment分組log文件的最大offset
2.消費(fèi)語(yǔ)義
at most once: 最多消費(fèi)一次? 消費(fèi)可能丟失? 但是不會(huì)重復(fù)消費(fèi) ?--》log
at least once: 至少消費(fèi)一次? 消費(fèi)不可能丟失 但是會(huì)重復(fù)消費(fèi) 鼠冕?--》我司
exactly once: 正好一次 消息不會(huì)丟失 也不會(huì)重復(fù)(這才是我們想要的)
? ? ? 0.10.0.1 不支持不能實(shí)現(xiàn) 0.11官方已支持
1.log允許丟? at most once
2.log不允許丟 at least once+ 去重 redis
3.MySQL SQL語(yǔ)句 at least once
insert into jepson1 12;? -->hbase ok? 重復(fù)了
insert into jepson2 13;? 掛了
insert into jepson3 14;?
選擇HBase? put: update insert
consumer offset:
1,2,3,4,5
1,2,3
offset沒(méi)有維護(hù) consumer掛了 是不是從上一次的更新的offset的位置去消費(fèi)
斷點(diǎn)還原
kafka自己本身
topic: test
內(nèi)嵌一個(gè)topic _consumer....
3.Flume-->Kafka-->Spark streaming 經(jīng)典案例
auto.offset.reset:
latest:
earliest:
none
enable.auto.commit: true
auto.commit.interval.ms:5000
1.....9 掛
offset....15
ConsumerRecord
(
topic = onlinelogs, partition = 0, offset = 2667075,
CreateTime = -1, checksum = 2396351077, serialized key size = -1,
serialized value size = 234,
key = null,
value =
{"hostname":"yws76","servicename":"namenode",
"time":"2018-03-19 15:23:30,028",
"logtype":"INFO",
"loginfo":"org.apache.hadoop.hdfs.server.namenode.FSEditLog:
logSyncAll toSyncToTxId=1377149 lastSyncedTxid=1377148 mostRecentTxid=1377149"}
)
生產(chǎn):斷批還原 +put 保證數(shù)據(jù)零丟失
批次10000? 2000
4.監(jiān)控 & 心得
1.Kafka
CDH TSQL
SELECT total_kafka_bytes_received_rate_across_kafka_broker_topics ,total_kafka_bytes_fetched_rate_across_kafka_broker_topics
WHERE entityName = "kafka:onlinelogs" AND category = KAFKA_TOPIC
SELECT total_kafka_bytes_fetched_rate_across_kafka_broker_topics
WHERE entityName = "kafka:onlinelogs" AND category = KAFKA_TOPIC
exec source
kafka sink
圖:
1.生產(chǎn)者和消費(fèi)者的速度是一樣嘛添寺?
由于趨勢(shì)度吻合,所以速度一樣的
2.為什么消費(fèi)者的曲線和生產(chǎn)者的曲線趨勢(shì)度 吻合懈费?
及時(shí)消費(fèi)
么有壓力
3.為什么消費(fèi)者的曲線和生產(chǎn)者的曲線要高计露?
生產(chǎn): value
消費(fèi):