19-Kafka02

字数 714阅读 50

1.核心概念

broker: 进程

producer: 生产者

consumer: 消费者

topic: 主题

partitions: 分区  (副本数)

consumergroup:

1.容错性的消费机制

2.一个组内,共享一个公共的ID groupid

3.组内的所有消费者协调在一起,

去消费topic的所有的分区

4.每个分区只能由同一个消费组的一个消费者来消费

123--> 1:0分区  0分区还坐落在2,3机器上面   

offset: 每个partition的数据的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

....

....

稀疏表 隔几条记录一次

抛出问题:

1.消费offset 4

2.消费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.命名规则: 上一个segment分组log文件的最大offset

2.消费语义

at most once: 最多消费一次  消费可能丢失  但是不会重复消费 ?--》log

at least once: 至少消费一次  消费不可能丢失 但是会重复消费 ?--》我司

exactly once: 正好一次 消息不会丢失 也不会重复(这才是我们想要的)

      0.10.0.1 不支持不能实现 0.11官方已支持

1.log允许丢  at most once

2.log不允许丢 at least once+ 去重 redis

3.MySQL SQL语句 at least once

insert into jepson1 12;  -->hbase ok  重复了

insert into jepson2 13;  挂了

insert into jepson3 14; 

选择HBase  put: update insert

consumer offset:

1,2,3,4,5

1,2,3

offset没有维护 consumer挂了 是不是从上一次的更新的offset的位置去消费

断点还原

kafka自己本身

topic: test

内嵌一个topic _consumer....

3.Flume-->Kafka-->Spark streaming 经典案例

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"}

)

生产:断批还原 +put 保证数据零丢失

批次10000  2000

4.监控 & 心得

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.生产者和消费者的速度是一样嘛?

由于趋势度吻合,所以速度一样的

2.为什么消费者的曲线和生产者的曲线趋势度 吻合?

及时消费

么有压力

3.为什么消费者的曲线和生产者的曲线要高?

生产: value

消费:

推荐阅读更多精彩内容