1.核心概念:
bin/kafka-topics.sh --create \
--zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka \
--replication-factor 3 --partitions 3 --topic ruozedata
Topic: ruozedata 主题 1----10
partitions: 3个分区 下标是从0开始的 物理上的分区
replication: 3个副本 指的是一个分区被复制3份
3台机器:
hadoop001 hadoop002 hadoop003
0分区: ruozedata-0 ruozedata-0 ruozedata-0
1分区: ruozedata-1 ruozedata-1 ruozedata-1
2分区: ruozedata-2 ruozedata-2 ruozedata-2
HDFS 一个文件比如130M BLOCKSIZE:128M 两个块,每个块复制3份
[root@hadoop001 bin]# kafka-topics.sh --describe \
--zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181 \
> --zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181 \
> --topic ruozedata
Topic:ruozedata PartitionCount:3 ReplicationFactor:3 Configs:
第一行列举这个topic的名称,分区数,副本数
Topic: ruozedata Partition: 0 Leader: 1 Replicas: 1,3,2 Isr: 1,3,2
Topic: ruozedata Partition: 1 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3
Topic: ruozedata Partition: 2 Leader: 3 Replicas: 3,2,1 Isr: 3,2,1
kill hadoop003的kafka
Topic: ruozedata Partition: 0 Leader: 1 Replicas: 1,3,2 Isr: 1,2
Topic: ruozedata Partition: 1 Leader: 2 Replicas: 2,1,3 Isr: 2,1
Topic: ruozedata Partition: 2 Leader: 2 Replicas: 3,2,1 Isr: 2,1
[root@hadoop001 bin]#
Partition: 0
Leader: 1 指的是broker.id=1 读写
Replicas: 复制该分区数据的节点列表,第一位代表leader 静态表述
Isr: in-sync Replicas 正在复制的副本节点列表 动态表述
当leader挂了,会从这个列表选举出leader
broker:Kafka实例的节点
producer: 生产者 flume/maxwell
consumer: 消费者 spark streaming/flink
producer ---> broker ---> consumer
一般生产上:
--replication-factor 3 --partitions 3
--partitions 取决于你的broker数量
--replication-factor 3 --partitions 3
kafka机器8个
It provides simple parallelism, 1:1 correspondence between Kafka partitions
and Spark partitions, and access to offsets and metadata.
虽然我们增加了分区数,提高kafka的写和读的吞吐量,但是假如一个集群多个topic,多个分区,
必然一台机器上有多个 ruozedata-0 test-0 jepson-0 ,就需要更多的文件数(进程数),那就要调优
consumer group:
一个消费组可以包含一个或多个消费者,分区只能被一个消费组的其中一个消费者去消费
正常在企业开发使用多分区方式去提高计算的能力
offset:偏移量
消费时读取一个分区的文件的数据,数据所在的下标
分区: 有序
多个分区: 无序 (困扰) 无序改怎样解决? 生产上没有解决 坑
0: 1,2,3
1: 7,8,9
3: 4,5,6
1,2,3 7,8,9 4,5,6
record:key、 value(业务数据cretime字段)、 timestamp(生产者向broker的插入时间) ,offset json格式
1.按timestamp(生产者向broker的插入时间) 排序
2.业务数据cretime字段 排序
spark不支持 DF排序会丢失一些信息offset 会导致一连串的无法做到 断点还原
apache jira
2.常用命令
2.1创建
bin/kafka-topics.sh --create \
--zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka \
--replication-factor 3 --partitions 3 --topic test
2.2查看
bin/kafka-topics.sh --list \
--zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka
2.3查看某个具体的topic
kafka-topics.sh --describe \
--zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka \
--topic test
2.4删除topic
[root@hadoop002 kafka]# bin/kafka-topics.sh --delete \
> --zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181 \
> --topic ruozedata
Topic ruozedata is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
1.发送和接受数据的实验是否成功? 能
假删除:
2.delete.topic.enable=true
不生效
2.5 调大
bin/kafka-topics.sh --alter \
--zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181 \
--partitions 2 --topic zp
bin/kafka-topics.sh --alter \
--zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181 \
--partitions 4 --topic zp
kafka-topics.sh --describe \
--zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181 \
--topic zp
3.监控
1.kafka eagle
https://github.com/smartloli/kafka-eagle
Version 1.2.1
*******************************************************************
* Kafka Eagle Service has started success!
* Welcome, Now you can visit 'http://<your_host_or_ip>:port/ke'
* Account:admin ,Password:123456
*******************************************************************
* <Usage> ke.sh [start|status|stop|restart|stats] </Usage>
* <Usage> http://ke.smartloli.org/ </Usage>
*******************************************************************
2.Grafana kafka0.10不成功的 kafka0.8
prometheus kubernetes
kafka
采集--》存储--》可视化
ES/INFLUXDB
数据采集: Metricbeat
数据存储: ES/INFLUXDB
数据可视化 Grafana: web dashborad