【Kafka】MacOS入门安装使用 (一)

文章目录

  • 一、安装Brew
  • 二、kafka的安装
    • 2.1 brew安装
    • 2.2 查看安装 Kafka 目录
    • 2.3 maven repository查看kafka版本
      • 2.3.1 Maven仓库
      • 2.3.2 Scale版本与 Kafka版本
  • 三、启动服务
    • 3.1 临时启动
    • 3.2 使用 brew 开机自启动
  • 四、create 创建topic
  • 五、list 查看创建的topic
  • 六、Producer 发送消息
  • 七、Consumer 消费消息
    • 7.1 单消费者消费
    • 7.2 指定消费者组消费
  • 八、关闭服务
  • == 番外篇 ==

一、安装Brew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 查看帮助文档
man brew
  • 卸载brew命令 (暂时用不到,先mark一下)
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

二、kafka的安装

2.1 brew安装

brew install kafka

由于kafka依赖zookeeper,所以安装的时候会安装zookeeper

====== 对目录不感兴趣的直接跳到启动zk ======

2.2 查看安装 Kafka 目录

brew list kafka

默认在/usr/local/Cellar/kafka/ 下面,可以看到zk和kafka的各个start和stop命令都在这里面。

localhost:kafka mtdp$ brew list kafka
/usr/local/Cellar/kafka/2.3.1/.bottle/etc/ (14 files)
/usr/local/Cellar/kafka/2.3.1/bin/connect-distributed
/usr/local/Cellar/kafka/2.3.1/bin/connect-standalone
/usr/local/Cellar/kafka/2.3.1/bin/kafka-acls
/usr/local/Cellar/kafka/2.3.1/bin/kafka-broker-api-versions
/usr/local/Cellar/kafka/2.3.1/bin/kafka-configs
/usr/local/Cellar/kafka/2.3.1/bin/kafka-console-consumer
/usr/local/Cellar/kafka/2.3.1/bin/kafka-console-producer
/usr/local/Cellar/kafka/2.3.1/bin/kafka-consumer-groups
/usr/local/Cellar/kafka/2.3.1/bin/kafka-consumer-perf-test
/usr/local/Cellar/kafka/2.3.1/bin/kafka-delegation-tokens
/usr/local/Cellar/kafka/2.3.1/bin/kafka-delete-records
/usr/local/Cellar/kafka/2.3.1/bin/kafka-dump-log
/usr/local/Cellar/kafka/2.3.1/bin/kafka-log-dirs
/usr/local/Cellar/kafka/2.3.1/bin/kafka-mirror-maker
/usr/local/Cellar/kafka/2.3.1/bin/kafka-preferred-replica-election
/usr/local/Cellar/kafka/2.3.1/bin/kafka-producer-perf-test
/usr/local/Cellar/kafka/2.3.1/bin/kafka-reassign-partitions
/usr/local/Cellar/kafka/2.3.1/bin/kafka-replica-verification
/usr/local/Cellar/kafka/2.3.1/bin/kafka-run-class
/usr/local/Cellar/kafka/2.3.1/bin/kafka-server-start
/usr/local/Cellar/kafka/2.3.1/bin/kafka-server-stop
/usr/local/Cellar/kafka/2.3.1/bin/kafka-streams-application-reset
/usr/local/Cellar/kafka/2.3.1/bin/kafka-topics
/usr/local/Cellar/kafka/2.3.1/bin/kafka-verifiable-consumer
/usr/local/Cellar/kafka/2.3.1/bin/kafka-verifiable-producer
/usr/local/Cellar/kafka/2.3.1/bin/trogdor
/usr/local/Cellar/kafka/2.3.1/bin/zookeeper-security-migration
/usr/local/Cellar/kafka/2.3.1/bin/zookeeper-server-start
/usr/local/Cellar/kafka/2.3.1/bin/zookeeper-server-stop
/usr/local/Cellar/kafka/2.3.1/bin/zookeeper-shell
/usr/local/Cellar/kafka/2.3.1/homebrew.mxcl.kafka.plist
/usr/local/Cellar/kafka/2.3.1/libexec/bin/ (30 files)
/usr/local/Cellar/kafka/2.3.1/libexec/libs/ (92 files)
/usr/local/Cellar/kafka/2.3.1/libexec/logs/ (23 files)

2.3 maven repository查看kafka版本

  • 进入 /usr/local/Cellar/kafka/2.3.1/libexec/libs 进行ls
localhost:libs mtdp$ pwd
/usr/local/Cellar/kafka/2.3.1/libexec/libs
localhost:libs mtdp$ ls
kafka_2.12-2.3.1.jar  ...

可以看到 kafka_2.12-2.3.1.jar

2.3.1 Maven仓库

  • 关于 kafka_2.12-2.3.1.jar
    maven repository
    可以在仓库内找到 https://mvnrepository.com/artifact/org.apache.kafka/kafka_2.12/2.3.1


    org.apache.kafka
    kafka_2.12
    2.3.1

2.3.2 Scale版本与 Kafka版本

  • 关于kafka后面的 2.11/2.12 (Scala编译器版本)
2.11/2.12代表着Kafka源代码的Scala编译器版本,Kafka服务器端代码完全由Scala语音编写,说到Scala就提两句,Scala与Java相同都是JVM系的语言,它同时支持面向对象和函数式编程。

Java的新功能, 也在慢慢的向着Scala进行靠近,例如Lambda表达式,函数式接口,val变量等

但Kafka新版客户端代码完全由Java语言编写,当然,不是Scala不行了,而是社区找来了一批Java程序员而已,而之前的Scala程序员隐退罢了
  • Kafka真正的版本号 2.3.0
其中2代表着大版本号,即Major Version

中间的3代表着小版本号或次版本号,即Minor Version

最后的0代表着修订版本号或补丁,也就是Patch号

Kafka社区在发不了1.0.0版本后,特意写了一篇文章,宣布Kafka版本命名规则从4位演进到3位,比如0.11.0.0版本就是4位版本号

三、启动服务

3.1 临时启动

  • 先启动 ZK
zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties &
  • 再启动kafka
kafka-server-start /usr/local/etc/kafka/server.properties &

3.2 使用 brew 开机自启动

  • 先启动 ZK
brew services start zookeeper
  • 再启动kafka
brew services start kafka

如果出现报错

 Error: Unknown command: services

使用 services 指令,请先安装

> brew tap gapple/services

> curl -o /usr/local/bin/brew-services.rb https://gist.githubusercontent.com/lwe/766293/raw/75a7907004bbff0eb3b072d1d951be2cfe7e5020/brew-services.rb
> chmod +x /usr/local/bin/brew-services.rb
> brew services help

但是当安装完之后使用如果出现下面的问题:

$ brew services start zookeeper
Error: undefined method `resolve_alias' for Formula:Class
/usr/local/bin/brew-services.rb:154:in `service'
/usr/local/bin/brew-services.rb:203:in `check'
/usr/local/bin/brew-services.rb:193:in `run!'
/usr/local/bin/brew-services.rb:397:in `'
/usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.6.3/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.6.3/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/usr/local/Homebrew/Library/Homebrew/utils.rb:82:in `require?'
/usr/local/Homebrew/Library/Homebrew/brew.rb:108:in `
'

请尝试下面的方法:

1.删除/usr/local/bin/brew-services.rb文件
2.执行 brew update 和 brew upgrade 命令
3.brew services list 查看是否可以正确使用

检测 brew service是否正常,下面这显示表示正常了

$ brew services list
Name      Status  User Plist
kafka     stopped
[email protected] stopped
redis     stopped
zookeeper stopped

四、create 创建topic

单个分区 Partition 和只有一个副本 Replica 创建一个名为“test”的主题Topic

kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

容易出现单点故障,这个后续文章会讲解。

五、list 查看创建的topic

kafka-topics --list --zookeeper localhost:2181

六、Producer 发送消息

Kafka提供了一个命令行客户端,它将从文件或标准输入接收输入,并将其作为消息发送到Kafka集群。默认情况下,每行都将作为单独的消息发送。
运行生产者,然后在控制台中键入一些消息发送到服务器。

kafka-console-producer --broker-list localhost:9092 --topic test 

七、Consumer 消费消息

7.1 单消费者消费

kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning

【Kafka】MacOS入门安装使用 (一)_第1张图片

  • 解释一下参数 --from-beginning
    新加入的消费者可以选择的消费起始点offset :
  1. 从最开始,也就是from-beginning (消费存量 + 增量)
  2. 从此刻。(消费增量)

7.2 指定消费者组消费

  • 解释一下消费者组:
    一个组group下面可以挂多个消费者,然后进行抢占式消费,比如group-A下挂了 Consumer1 + Consumer2 + Consumer3,那么生产者Producer生产一条消息,只有会被一个消费者消费到,这样的好处是,当生产的消息量增大时,可以通过扩容增加组内Consumer的数量来增加吞吐量,等消息量过少时,可以通过缩容减少组内Consumer数量来减少资源浪费。
kafka-console-consumer --bootstrap-server localhost:9092 --topic testCluster --group test-group

其他关于消费者组的设置,在第三章会具体讲解。

八、关闭服务

服务关闭的顺序是先kafka,然后zookeeper

  • brew形式关闭
# kafka关闭
brew services stop kafka

# zk关闭
brew services stop zookeeper
  • 命令行关闭
# kafka关闭
/usr/local/Cellar/kafka/2.3.1/bin/kafka-server-stop

# zk关闭
/usr/local/Cellar/kafka/2.3.1/bin/zookeeper-server-stop

== 番外篇 ==

下一章节:【Kafka】图解概念 (二)

你可能感兴趣的:(Kafka,kafka)