kafka基本概念
1、kafka是一个分布式的消息缓存系统
2、kafka集群中的服务器都叫做broker
3、kafka有两类客户端,一类叫producer(消息生产者),一类叫做consumer(消息消费者),客户端和broker服务器之间采用tcp协议连接
4、kafka中不同业务系统的消息可以通过topic进行区分,而且每一个消息topic都会被分区,以分担消息读写的负载
5、每一个分区都可以有多个副本,以防止数据的丢失
6、某一个分区中的数据如果需要更新,都必须通过该分区所有副本中的leader来更新
7、消费者可以分组,比如有两个消费者组A和B,共同消费一个topic:order_info,A和B所消费的消息不会重复
比如 order_info 中有100个消息,每个消息有一个id,编号从0-99,那么,如果A组消费0-49号,B组就消费50-99号
8、消费者在具体消费某个topic中的消息时,可以指定起始偏移量
###############单节点启动######################
1、解压安装
2、启动zookeeper
使用自带的zookeeper,启动:bin/zookeeper-server-start.sh conf/zookeeper.properties
启动报错:UseCompressedOops找不到
修改文件:kafka-run-class.sh中,
KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"
删掉 -XX:+UseCompressedOops
3、启动kafka
bin/kafka-server-start.sh config/server.properties
4、create a topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test_name
bin/kafka-topics.sh --list --zookeeper localhost:2181
5、send some message (生产者)
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_name
xiaomi
iphone
huawei
6、start a consumer(消费者)
#接收所有的消息
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic test_name
#只接收consumer启动后发送的消息
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test_name
############################集群安装(3台机子)########################################
集群安装
1、解压
2、配置zookeeper集群,修改config/server.properties
broker.id=0
port=9092
log.dir=/home/admin/app/kafka_2.10-0.8.1.1/tmplogs/kafka-logs
zookeeper.connect=weekend05:2181,weekend06:2181,weekend07:2181
注意:broker.id必须唯一,port,log.dir可以不修改
3、copy到其他服务中
scp -r kafka_2.10-0.8.1.1 weekend06:/home/admin/app/
scp -r kafka_2.10-0.8.1.1 weekend07:/home/admin/app/
weekend06 config/server.properties
broker.id=1
log.dir=/home/admin/app/kafka_2.10-0.8.1.1/tmplogs/kafka-logs-1
weekend07 config/server.properties
broker.id=2
log.dir=/home/admin/app/kafka_2.10-0.8.1.1/tmplogs/kafka-logs-2
4、将zookeeper集群启动
5、在每一台节点上启动broker
前台启动:启动后,关闭连接,则服务关闭,操作其他需要克隆会话,比较繁琐
命令:bin/kafka-server-start.sh config/server.properties
后台启动:显示进程,继续可以操作其他,比较方便
命令:bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
1>/dev/null 标准输出定向到一个文件中,2>&1,错误输出是标准输出打印出来,最后一个& 后台运行
6、在kafka集群中创建一个topic
bin/kafka-topics.sh --create --zookeeper weekend05:2181 --replication-factor 3 --partitions 1 --topic order
7、查看话题
bin/kafka-topics.sh --list --zookeeper weekend05:2181
8、用一个producer向某一个topic中写入消息
bin/kafka-console-producer.sh --broker-list weekend05:9092 --topic order
9、用一个comsumer从某一个topic中读取信息
bin/kafka-console-consumer.sh --zookeeper weekend05:2181 --from-beginning --topic order
10、查看一个topic的分区及副本状态信息
bin/kafka-topics.sh --describe --zookeeper weekend05:2181 --topic order