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相关推荐

  1. mac安装Kafka启动 模拟生产者消费者

    安装kafka brew install kafka 启动Kafka brew services start zookeeper brew services start kafka 如果不懂 可以查看 ...

  2. mac 搭建kafka系列教程

    新入手mac,当然是装各种软件啦 下面来记录一下使用mac安装kafka的过程,mac上面的homebrew是真的好用 下面我们来开始进入安装吧 安装环境基础 # jdk1.8 并且配置好环境变量 1 ...

  3. mac包安装kafka

    安装 kafka (安装kafka前应在本地先安装java的jdk,因为zookeeper需要依赖java虚拟机) 下载地址:https://kafka.apache.org/down- wget h ...

  4. Mac使用Homebrew安装Kafka

    1.使用brew install命令安装Kafka $ brew install kafka 安装过程将依赖安装 zookeeper 软件位置 /usr/local/Cellar/zookeeper ...

  5. MAC搭建kafka客户端以及实现生产消费

    Kafka 部分参数说明 (1)max.in.flight.requests.per.connection Kafka 可以保证同一个分区里的消息是有序的.也就是说,如果生产者按照一定的顺序发送消息, ...

  6. Docker for mac安装

    Mac安装Docker docker下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-mac docker for m ...

  7. mac 安装mqtt

    2019独角兽企业重金招聘Python工程师标准>>> mac 安装mqtt Mosquitto是一个开源的mqtt规则的具体实现库,mosquitto是一个轻量级的lightwei ...

  8. 从安装Kafka服务到运行WordCount程序

    之所以写这篇文章,是因为Kafka初学的同学在了解了Kafka的基本原理之后,希望在自己的机器上面运行最简单的wordCount的时候,从开始安装Kafka到找到合适的example源码最后到成功运行 ...

  9. mac mysql 链接_Mysql mac安装以及navicat链接

    安装mysql 系统版本:macOS Mojave 10.14.6 安装的方式是使用Homebrew 包管理工具. # 安装命令 brew install mysql 安装完成之后会有相应的提示,开启 ...

最新文章

  1. 2022-2028年中国DMF行业市场研究及前瞻分析报告
  2. CA验证数字证书的有效性
  3. Python 3 os.walk使用详解
  4. 台式计算机机箱的作用,如何选择台式电脑机箱?小白安装电脑机箱常识指南
  5. matlab表白_表白 | 北航男生想找个女朋友,我身高179,希望女生体贴一点
  6. 基于注解进行bean的装配
  7. 面试必会系列 - 1.3 Java 多线程
  8. 大数据的说法 正确的是_前端测试题:(解析)用于播放音频文件的正确HTML5元素是?...
  9. python中排序的函数_Python中sorted()排序函数
  10. 福建水院计算机一级清考,取消毕业“清考”大学生还敢混日子吗
  11. 做了一天的程序,很困啊,明天还要赶着去上课
  12. redis源码编译和调试
  13. java拦截器放行_java拦截器放行某些请求
  14. 郝斌老师 c语言学习笔记
  15. java成语填充,java - 什么是“执行”这个成语?
  16. 基于STM32的简易数码相册
  17. Arcgis 10.2坡度分析
  18. 微信小程序云开发授权登录的简易制作
  19. HTML 学习总结2 框架 表单
  20. Linux下ffmpeg的完整安装

热门文章

  1. windows重启WSL
  2. svn update报no such revision * 的解决方法
  3. 月薪5000以下,不该吃西贝?
  4. 拒绝“内卷”跃迁软件测试最大门槛,我是如何从月薪8K到15K的?
  5. 零基础微信落地页小程序实战项目
  6. 收发一体超声波测距离传感器模块_超声波模块HC-SR04简介以及编程
  7. MySQL查询视图View报错
  8. SQL语句中的“@”符号的作用
  9. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(持续更新...)...
  10. ubuntu-突然停电后-进入不了系统-GPU显卡驱动损坏