20210118_kafka学习笔记

一、部分理论
kafka:分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域
topics:主题,生产者生产主题信息提供给消费者消费
producer:生产者,生产消息到主题
consumer:消费者,自己从主题拉取消息。   分区数一定要大于消费者数量
partitions:kafka分区是为了做负载均衡。 一个主题的分区数只能给一个消费者,如果消费者数量大于主题的分区数就会有消费者消费不到数据
replication:副本数是为了高可用
kafka controller:类似zookeeper选leader(Isr),和zookeeper数据交流。
ack:0 不管反馈值,1 只管leader反馈值 ,-1 leader及所有ISR里面的follower都同步数据后才反馈值
Isr:(In-Sync Replica set)是一个副本的列表,里面存储的都是能跟leader 数据一致的副本,为下次选择出新leader做的排序,follower 主动拉取leader 的数据
HW:(high water) 所有消息队列中最小的位置
LEO:(log end offset) 每个消息队列中最大位置
roundRobin:多个分区对应多个消费者时如何对应分配,轮询方式分配,面向组
range:多个分区对应多个消费者时如何对应分配,按一定范围分配。 kafak默认此方式,面向主题

二、安装与配置
1.官网下载bin包
2.sftp上传到linux,tar -xzvf kafka_2.13-2.7.0.tgz 解压
3.创建目录
mkdir /root/kafka_2.13-2.7.0/logs
4.修改配置文件
vim /root/kafka_2.13-2.7.0/config/server.properties
broker.id=101  #每台机器都要修改此文件,建议给每台机器的ip地址
log.dirs=/root/kafka_2.13-2.7.0/logs  #日志目录修改
zookeeper.connect=master:2181,s1:2181,s2:2181  #zookeeper集群地址
5.分发到其它机器
scp -r /root/kafka_2.13-2.7.0 root@192.168.100.102:/root/
scp -r /root/kafka_2.13-2.7.0 root@192.168.100.103:/root/
6.修改s1,s2机器得 server.properties
vi /root/kafka_2.13-2.7.0/config/server.properties
broker.id=102  #每台机器都要修改此文件,建议给每台机器的ip地址
7.启动kafka服务,只能每个节点单独启动。 启动前先启动zookeeper; zkServer.sh start
/root/kafka_2.13-2.7.0/bin/kafka-server-start.sh /root/kafka_2.13-2.7.0/config/server.properties  #此进程为阻塞进程
/root/kafka_2.13-2.7.0/bin/kafka-server-start.sh -daemon /root/kafka_2.13-2.7.0/config/server.properties  #此进程可在后台执行
/root/kafka_2.13-2.7.0/bin/kafka-server-stop.sh /root/kafka_2.13-2.7.0/config/server.properties  #停止kafka进程

创建主题
/root/kafka_2.13-2.7.0/bin/kafka-topics.sh --list --zookeeper master:2181
/root/kafka_2.13-2.7.0/bin/kafka-topics.sh --create --zookeeper master:2181 --topic first --partitions 4 --replication-factor 3
/root/kafka_2.13-2.7.0/bin/kafka-topics.sh --delete --zookeeper master:2181 --topic first
/root/kafka_2.13-2.7.0/bin/kafka-topics.sh --describe --topic first --zookeeper master:2181
Topic: second   PartitionCount: 4       ReplicationFactor: 3    Configs:    
        Topic: second   Partition: 0    Leader: 103     Replicas: 103,102,101   Isr: 103,102,101
        Topic: second   Partition: 1    Leader: 101     Replicas: 101,103,102   Isr: 101,103,102
        Topic: second   Partition: 2    Leader: 102     Replicas: 102,101,103   Isr: 102,101,103
        Topic: second   Partition: 3    Leader: 103     Replicas: 103,101,102   Isr: 103,101,102

开启生产者
/root/kafka_2.13-2.7.0/bin/kafka-console-producer.sh --topic first --broker-list master:9092

开启消费者
/root/kafka_2.13-2.7.0/bin/kafka-console-consumer.sh --topic first --bootstrap-server master:9092
/root/kafka_2.13-2.7.0/bin/kafka-console-consumer.sh --topic first --bootstrap-server master:9092 --from-beginning  #从最早开始消费,最早7天内
vim /root/kafka_2.13-2.7.0/config/consumer.properties  #修改group.id=mygroup  可以改组名。如果group.id不改,生产者发送的消息,在同一个组里面的消费者只能一个(轮询机制)接收到。
不同组将都接收到生产者发送的消息
/root/kafka_2.13-2.7.0/bin/kafka-console-consumer.sh --topic first --bootstrap-server master:9092 --consumer.config /root/kafka_2.13-2.7.0/config/consumer.properties  #修改配置文件consumer.properties后可以按照新模式启动

三、高级理论
-rw-r--r--. 1 root root 0 1月  19 17:34 00000000000000000000.index  #存放消息队列的索引<第几条消息,消息偏移量>
-rw-r--r--. 1 root root 0 1月  19 16:35 00000000000000000000.log  #存放具体信息,当文件大小达到(log.segment.bytes=1073741824  默认1G)设置大小,将产生一个新文件

kafka可以自定义 生产者,消费者,和拦截器。 都需要在java中开发。

四、kafka-eagle安装与配置,具体百度 。 其实还有三种监控工具 Kafka Web Conslole、Kafka Manager、KafkaOffsetMonitor 。但eagle应该是最好使用的


五、kafka对接flume测试案例。 flume安装配置具体参考flume学习笔记
vim /root/flume-1.9.0/job/kafka.conf
# Name the components on this agent
a1.sources = r1
a1.channels = c1
a1.sinks = k1

# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost  #可以是本机也可以是其它机器
a1.sources.r1.port = 44444

# Describe the channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Describe the sink
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = first
a1.sinks.k1.kafka.bootstrap.servers = master:9092,s1:9092,s2:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值