mac安装kafka
1.使用brew工具来安装,只需要一条命令就完成了下载和安装的过程,包含zookeeper默认安装
brew install kafka
安装完成后可以看到Kafka安装的路径和配置文件路径
/usr/local/Cellar/zookeeper
/usr/local/Cellar/kafka
配置文件位置
/usr/local/etc/kafka/server.properties
/usr/local/etc/kafka/zookeeper.properties
2 启动Kafka依赖zookeeper,而Kafka中默认有一个单机版的zookeeper。实际生产部署中不推荐使用默认的zookeeper2.1 启动zookeeper在kafka的安装目录下,执行脚本启动zookeepercd /usr/local/Cellar/kafka/3.1.0mac最好用这个命令: 执行脚本启动zookeeper: bin/zookeeper-server-start /usr/local/etc/kafka/zookeeper.propertiesliunx 在zk的bin路径下执行:zkServer.sh start 1、启动zkServer start2、停止zkServer stop3、查看状态zkServer status2.2 启动Kafka 新开一个控制窗口,在Kafka安装目录下,执行脚本启动kafka cd /usr/local/Cellar/kafka/3.1.0mac最好用这个命令: bin/kafka-server-start /usr/local/etc/kafka/server.properties liunx 在kafka路径下启动执行:/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties & liunx 在kafka路径下关闭执行:/usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties &
3.测试新建两个窗口发送和接收
3.1新建topic
#创建topic
bin/kafka-topics --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic wanggf-test
3.2查询创建topic
#查看创建的topic
bin/kafka-topics --list --bootstrap-server localhost:9092
3.3 终端1发送消息
bin/kafka-console-producer --broker-list localhost:9092 --topic wanggf-test
3.4终端2接受消息
kafka-console-consumer --bootstrap-server localhost:9092 --topic wanggf-test --from-beginning
7.扩展
#指定分区消费消息
kafka-console-consumer --bootstrap-server localhost:9092 --topic test --partition 1 --from-beginning
#添加分区
kafka-topics --alter --zookeeper localhost:2181 --partitions 10 --topic test //添加10个
#启动kafka,指定配置文件,后台启动并打印日志到 /usr/local/etc/kafka/kafka.log
nohup kafka-server-start /usr/local/etc/kafka/server.properties > /usr/local/etc/kafka/kafka.log 2>&1 &
8.资料小扩展,本段为本人学习kafka时学到的小知识,不是很深但是很实用,经验不多,小弟也是刚入门,先分享为快
8.1 topic
# topic:
1.kafka集群会将每个topic进行分区,每个分区都是一个排序且不可改变的队列,新的消息会进入队尾并分配一个唯一ID,官方称之为偏移量(offset)
2.无论消息是否被消费,集群都会保留消息,有一个配置的时间(过期时间),超过这个时间后,消息会被清除
3.消费端唯一记录的元信息就是自己在topic中的位置(offset),
4.分布式的原因:第一集群可以容纳大量的数据 第二:可以并行的处理
8.2 消费语义的理解
at last once:至少消费一次(对一条消息有可能多次消费,有可能会造成重复消费数据)
原因:Proudcer产生数据的时候,已经写入在broker中,但是由于broker的网络异常,没有返回ACK,这时Producer,认为数据没有写入成功,此时producer会再次写入,相当于一条数据,被写入了多次。
at most once:最多消费一次,对于消息,有可能消费一次,有可能一次也消费不了
原因:producer在产生数据的时候,有可能写数据的时候不成功,此时broker就跳过这个消息,那么这条数据就会丢失,导致consumer无法消费。
exactly once:有且仅有一次。这种情况是我们所需要的,也就是精准消费一次。
kafka中消费语义的场景
at last once:可以先读取数据,处理数据,最后记录offset,当然如果在记录offset之前就crash,新的consumer会重复的来消费这条数据,导致了”最少一次“
at most once:可以先读取数据,然后记录offset,最后在处理数据,这个方式,就有可能在offset后,还没有及时的处理数据,就crash了,导致了新的consumer继续从这个offset处理,那么刚刚还没来得及处理的数据,就永远不会被处理,导致了”最多消费一次“
exactly once:可以通过将提交分成两个阶段来解决:保存了offset后提交一次,消息处理成功后,再提交一次。
8.3 消息一致性
kafka中如何实现精准写入数据?
A:Producer 端写入数据的时候保证幂等性操作:
幂等性:对于同一个数据无论操作多少次都只写入一条数据,如果重复写入,则执行不成功
B:broker写入数据的时候,保证原子性操作, 要么写入成功,要么写入失败。(不成功不断进行重试)
8.4 AckMode
先放上源码
/**
* The offset commit behavior enumeration.
*/
public enum AckMode {
/**
* Commit after each record is processed by the listener.
*/
RECORD,
/**
* Commit whatever has already been processed before the next poll.
*/
BATCH,
/**
* Commit pending updates after
* {@link ContainerProperties#setAckTime(long) ackTime} has elapsed.
*/
TIME,
/**
* Commit pending updates after
* {@link ContainerProperties#setAckCount(int) ackCount} has been
* exceeded.
*/
COUNT,
/**
* Commit pending updates after
* {@link ContainerProperties#setAckCount(int) ackCount} has been
* exceeded or after {@link ContainerProperties#setAckTime(long)
* ackTime} has elapsed.
*/
COUNT_TIME,
/**
* User takes responsibility for acks using an
* {@link AcknowledgingMessageListener}.
*/
MANUAL,
/**
* User takes responsibility for acks using an
* {@link AcknowledgingMessageListener}. The consumer is woken to
* immediately process the commit.
*/
MANUAL_IMMEDIATE,
}
源码解读
RECORD
每处理一条commit一次
BATCH(默认)
每次poll的时候批量提交一次,频率取决于每次poll的调用频率
TIME
每次间隔ackTime的时间去commit(跟auto commit interval有什么区别呢?)
COUNT
累积达到ackCount次的ack去commit
COUNT_TIME
ackTime或ackCount哪个条件先满足,就commit
MANUAL
listener负责ack,但是背后也是批量上去
MANUAL_IMMEDIATE
listner负责ack,每调用一次,就立即commit
mac安装kafka相关推荐
- mac安装Kafka启动 模拟生产者消费者
安装kafka brew install kafka 启动Kafka brew services start zookeeper brew services start kafka 如果不懂 可以查看 ...
- mac 搭建kafka系列教程
新入手mac,当然是装各种软件啦 下面来记录一下使用mac安装kafka的过程,mac上面的homebrew是真的好用 下面我们来开始进入安装吧 安装环境基础 # jdk1.8 并且配置好环境变量 1 ...
- mac包安装kafka
安装 kafka (安装kafka前应在本地先安装java的jdk,因为zookeeper需要依赖java虚拟机) 下载地址:https://kafka.apache.org/down- wget h ...
- Mac使用Homebrew安装Kafka
1.使用brew install命令安装Kafka $ brew install kafka 安装过程将依赖安装 zookeeper 软件位置 /usr/local/Cellar/zookeeper ...
- MAC搭建kafka客户端以及实现生产消费
Kafka 部分参数说明 (1)max.in.flight.requests.per.connection Kafka 可以保证同一个分区里的消息是有序的.也就是说,如果生产者按照一定的顺序发送消息, ...
- Docker for mac安装
Mac安装Docker docker下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-mac docker for m ...
- mac 安装mqtt
2019独角兽企业重金招聘Python工程师标准>>> mac 安装mqtt Mosquitto是一个开源的mqtt规则的具体实现库,mosquitto是一个轻量级的lightwei ...
- 从安装Kafka服务到运行WordCount程序
之所以写这篇文章,是因为Kafka初学的同学在了解了Kafka的基本原理之后,希望在自己的机器上面运行最简单的wordCount的时候,从开始安装Kafka到找到合适的example源码最后到成功运行 ...
- mac mysql 链接_Mysql mac安装以及navicat链接
安装mysql 系统版本:macOS Mojave 10.14.6 安装的方式是使用Homebrew 包管理工具. # 安装命令 brew install mysql 安装完成之后会有相应的提示,开启 ...
最新文章
- 2022-2028年中国DMF行业市场研究及前瞻分析报告
- CA验证数字证书的有效性
- Python 3 os.walk使用详解
- 台式计算机机箱的作用,如何选择台式电脑机箱?小白安装电脑机箱常识指南
- matlab表白_表白 | 北航男生想找个女朋友,我身高179,希望女生体贴一点
- 基于注解进行bean的装配
- 面试必会系列 - 1.3 Java 多线程
- 大数据的说法 正确的是_前端测试题:(解析)用于播放音频文件的正确HTML5元素是?...
- python中排序的函数_Python中sorted()排序函数
- 福建水院计算机一级清考,取消毕业“清考”大学生还敢混日子吗
- 做了一天的程序,很困啊,明天还要赶着去上课
- redis源码编译和调试
- java拦截器放行_java拦截器放行某些请求
- 郝斌老师 c语言学习笔记
- java成语填充,java - 什么是“执行”这个成语?
- 基于STM32的简易数码相册
- Arcgis 10.2坡度分析
- 微信小程序云开发授权登录的简易制作
- HTML 学习总结2 框架 表单
- Linux下ffmpeg的完整安装
热门文章
- windows重启WSL
- svn update报no such revision * 的解决方法
- 月薪5000以下,不该吃西贝?
- 拒绝“内卷”跃迁软件测试最大门槛,我是如何从月薪8K到15K的?
- 零基础微信落地页小程序实战项目
- 收发一体超声波测距离传感器模块_超声波模块HC-SR04简介以及编程
- MySQL查询视图View报错
- SQL语句中的“@”符号的作用
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(持续更新...)...
- ubuntu-突然停电后-进入不了系统-GPU显卡驱动损坏