kafka的性质
kafka是一个消息中间件,可以动态的接收数据,主要用于实时数据处理的中转站
kafka的特征
分布式,高容量,高吞吐,可扩展,编程api丰富,可以保证Exactly Once(执行且只执行一次)
kafka角色
producer:生产者,消息的生产者,发布消息到kafka终端
consumer:消费者,消费数据到终端,
broker:经纪人,就相当于kafka本身,kafka集群就是broker集群
topic:话题,如果把kafka当成一个数据库,topic就相当于数据库的表名
partition:分区,每一个topic都有一个或者多个分区
kafka的安装
下载,上传,解压,修改配置文件:
vi servier.properties
#指定broker的id
broker.id=1
#数据存储的目录
log.dirs=/data/kafka
#指定zk地址
zookeeper.connect=doit01:2181,doit02:2181,doit03:2181
#可以删除topic的数据(生成环境不用配置)
delete.topic.enable=true
将配置好的kafka拷贝的其他节点
修改其他节点Kafka的broker.id
kafka常用命令
启动kafka必须先起动zookeeper启动zookeeper之前必须前启动hdfs,前面博客很详细,
启动kafka命令
[root@doit01 kafka_2.11-2.2.2]# /bin/kafka-server-start.sh -daemon /usr/apps/kafka_2.11-2.2.2/config/server.properties
也可以自己写一个群起脚本
#!/bin/bash
for i in 1 2 3
do
ssh doit0${i} "source /etc/profile;/usr/apps/kafka_2.11-2.2.2/bin/kafka-server-start.sh -daemon /usr/apps/kafka_2.11-2.2.2/config/server.properties"
done
查看kafka的所有topic
[root@doit01 kafka_2.11-2.2.2]# bin/kafka-topics.sh --list --zookeeper localhost:2181
创建一个topic
replication(副本), partitions(分区)
[root@doit01 kafka_2.11-2.2.2]# bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic wordcount2 --replication-factor 2 --partitions 4
启动一个生产者的命令
[root@doit01 kafka_2.11-2.2.2]# bin/kafka-console-producer.sh --broker-list doit01:9092, doit02:9092,doit03:9092, doit04:9092 --topic wordcount
启动一个消费者
Bootstrap(辅助程序) Beginning(开始)
–from-beginning 消费以前产生的所有数据,如果不加,就是消费消费者启动后产生的数据
[root@doit01 kafka_2.11-2.2.2]# bin/kafka-console-consumer.sh --bootstrap-server doit01:9092, doit02:9092, doit03:9092 --topic wordcount2 --from-beginning
删除topic
[root@doit01 kafka_2.11-2.2.2]# bin/kafka-topics.sh --delete -topic test --zookeeper localhost:2181
查看topic详细信息
[root@doit01 kafka_2.11-2.2.2]# bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic wordcount
查看topic的偏移量
[root@doit01 kafka_2.11-2.2.2]# bin/kafka-console-consumer.sh --topic __consumer_offsets --bootstrap-server doit01:9092,doit02:9092,doit03:9092 --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter" --consumer.config /usr/apps/kafka_2.11-2.2.2/config/consumer.properties --from-beginning | grep abcd