java-kafka概述及zookeeper安装
本章目录
一 kafka简介
二 kafka安装
三 kafka测试
四 zk安装
一 kafka简介:
1、角色:
broker(一个kafka节点)
producers(生产者)
topic(主题)
consumers(消费者,消费者可以配置组,让这一组消费哪个主题,在一个分区中的生产与消费是有序的)
partition(topic的分区数,即代表这个topic数据分成几份)
副本(topic的副本数,万一有的节点挂掉了,可以保证数据不丢失)
offset(消费的偏移量,保证消费的有序性)
2、需要zk集群,为什么?(zk在kafka中占据核心地位的)
2.1 管理着所有 broker 节点。
2.2 主题管理:topic怎么创建,分区,副本怎么放,消费者如何消费,由zk管理。
2.3 记录offset。
2.4 管理者消费者组:一个消费者组创建之后,来消费一个topic(消费者组是为了提高对topic的消费速度)
3、优势
高吞吐量:零拷贝,Netty的网络传输。
数据保存:数据默认保存7天。
偏移量管理:offset会更新到一个kafka自带的topic【__consumer_offsets】
二 kafka安装:
解压:
tar gz -C 目录
配置:
config/server.properties:
broker.id(broker集群中唯一标识id,0、1、2、3依次增长(broker即Kafka集群中的一台服务器))
log.dirs=真实数据存储路径
zookeeper.connect=node01:2181,node02:2181,node03:2181(需要zk集群)
启动:
bin/kafka-server-start.sh config/server.properties //启动kafka,且指定要读取哪个配置文件
三 kafka测试:(一般的使用都是整合其他中间件使用,比如filebeat,flume等)
查看帮助手册:
bin/kafka-console-consumer.sh help
查看topic列表:
bin/kafka-topics.sh --zookeeper node06:2181,node07:2181,node08:2181 --list
查看“test”topic描述:
bin/kafka-topics.sh --zookeeper node06:2181,node07:2181,node08:2181 --describe --topic test
Topic创建
bin/kafka-topics.sh --zookeeper node06:2181,node07:2181,node08:2181 --create --replication-factor 2 --partitions 3 --topic test
(参数说明:
--replication-factor:副本个数,默认1个
--partitions:指定当前创建的topic分区数量,默认1个(向几个分区中分发数据,此时一个分区有序,整体无序)
--topic:指定新建topic的名称
)
Producer创建(往主题中生产数据)
bin/kafka-console-producer.sh --broker-list node06:9092,node07:9092,node08:9092 --topic test
Consumer创建(消费某主题的数据)
bin/kafka-console-consumer.sh --zookeeper node06:2181,node07:2181,node08:2181 --from-beginning --topic test
(参数说明:
--from-beginning 从头消费
)
四 zk安装:
1:解压 tar -zxvf zookeeper.tar.gz
2:修改 zoo.cfg 配置文件
cp zooo_sample.cfg zoo.cfg
vi zoo.cfg
dataDir= /opt/zk/data //修改dataDir的目录,用户数据持久化的,这个目录自定义位置 #在zoo.cfg末尾添加以下内容 #2888 集群内机器通讯使用 #3888 选举leader使用 #2181 这个端口号是供外部客户端使用的,配置文件中的clientport
#使用node01 node02 node03是配置了hosts文件,做了ip与名称的映射 server.1=node01:2888:3888 server.2=node02:2888:3888 server.3=node03:2888:3888
3:myid(在dataDir目录下)
echo 1 > /opt/zk/data/myid(上面配置的三个服务器对应的myid是1 2 3)
4:启动(每个节点都启动)
zkServer.sh start