卡夫卡的藏书阁【Book5】- Kafka 安装与基本设定

“I am a cage, in search of a bird.”
― Franz Kafka


Kafka 安装与基本设定

Kafka 适合的作业系统是 Linux 和 Solaris,并且在这两个作业系统有过很多测试,在 Windows 上目前仍然有部分功能未支援。

今天的范例是在 mac os Catalina v10.15.4环境下安装 Kafka

  • 环境会需要有Java8+
  • 我们将会安装
    • Kafka 2.8
    • zookeeper
      • Kafka版本3.0後未来不需要安装zookeeper,改用Kafka内部的Quorum,

Step 1: 安装 Kafka

linux 环境安装 Kafka、Zookeeper,到官网下载 Kafka官方载点Zookeeper官方载点

$ wget https://dlcdn.apache.org/kafka/2.8.0/kafka-2.8.0-src.tgz
$ tar -zxf kafka-2.8.0-src.tgz

$ wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
$ tar -zxf apache-zookeeper-3.7.0-bin.tar.gz

mac 环境快速安装首选是用 Homebrew

  • 首先,下指令更新Homebrew跟套件清单
    • brew update
  • 用brew安装Kafka,会一并安装依赖套件 openjdk 和 zookeeper
    • brew install kafka
      • 预设会安装在路径:/usr/local/Cellar/kafka/2.8.0
  • 可以用 brew info kafka 查看版本号、安装路径、如何启动
$ brew info kafka
kafka: stable 2.8.0 (bottled)
Open-source distributed event streaming platform
https://kafka.apache.org/
/usr/local/Cellar/kafka/2.8.0 (884 files, 82.4MB) *
  Poured from bottle on 2021-05-31 at 17:53:04
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/kafka.rb
License: Apache-2.0
==> Dependencies
Required: openjdk ✘, zookeeper ✔
==> Caveats
To have launchd start kafka now and restart at login:
  brew services start kafka
Or, if you don't want/need a background service you can just run:
  zookeeper-server-start -daemon /usr/local/etc/kafka/zookeeper.properties & kafka-server-start /usr/local/etc/kafka/server.properties
==> Analytics
install: 4,832 (30 days), 15,882 (90 days), 67,331 (365 days)
install-on-request: 4,829 (30 days), 15,876 (90 days), 67,114 (365 days)
build-error: 0 (30 days)

这边可以蛮多资讯看到安装的路径/usr/local/Cellar/kafka/2.8.0,以及启动 zookeeper 和 kafka 的指令 zookeeper-server-start -daemon /usr/local/etc/kafka/zookeeper.properties & kafka-server-start /usr/local/etc/kafka/server.properties,最後可以看到安装的数量,近一年有六万多次,比预期的少一些。

  • brew services list => 会列出已安装的清单,可以查看到目前 kafka 和 zookeeper 是停止状态
$ brew services list
Name      Status  User      Plist
kafka     stopped
zookeeper stopped

Step 2. 查看修改设定档

  • zookeeper 设定档,这边不用作修改
    • 档案路径:/usr/local/etc/kafka/zookeeper.properties
dataDir=/usr/local/var/lib/zookeeper
# zookeeper 开放给 zookeeper 连结的 port
clientPort=2181
# 因为不是 production 这边将每个 IP 可以连结数量限制先关闭
maxClientCnxns=0
# 预设是将 adminserver 关闭,为的是避免 port 重复的冲突
admin.enableServer=false
# admin.serverPort=8080
  • Kafka 设定档
    • 档案路径:/usr/local/etc/kafka/server.properties
    • 把以下这行的注解拿掉,并修改成如下
      • listeners=PLAINTEXT://localhost:9092
# broker 的 ID,每一个 broker 的 ID 必须是唯一的、不能和其他重复。
broker.id=0

# broker 监听的 host 和 port
listeners=PLAINTEXT://localhost:9092

# 提供给 producers 和 consumers 的 hostname 和 port,这边如果没有设定会直接读取上面的 listeners,如果 listeners 也没有设定会取用 java.net.InetAddress.getCanonicalHostName() 的回传值
#advertised.listeners=PLAINTEXT://your.host.name:9092

# broker server 接收 requests 和传送 responses 的 threads 数量
num.network.threads=3

# broker server 处理 requests 的 threads 数量(包含磁碟I/O)
num.io.threads=8

# 指定 Socket 服务器所使用的传送缓冲区
socket.send.buffer.bytes=102400

# 指定 Socket 服务器所使用的接收缓冲区
socket.receive.buffer.bytes=102400

# 指定 Socket 服务器所接受的要求大小上限
socket.request.max.bytes=104857600


############################# Log Basics #############################

# 资料存放路径,可存放到多个位置,将路径用逗号分开即可
log.dirs=/usr/local/var/lib/kafka-logs

# 预设新建主题时会创建几个分区
num.partitions=1

# 复原资料用的 thread 数量
num.recovery.threads.per.data.dir=1

# 预设保存资料一周
log.retention.hours=168

# 每个 log segment 档案的大小上限
log.segment.bytes=1073741824

# 多久检查一次 log segment 需不需要被删除
log.retention.check.interval.ms=300000

# zookeeper 的 port
zookeeper.connect=localhost:2181

Step 3: 启动 Kafka

  • 进入路径: cd /usr/local/Cellar/kafka/2.8.0/libexec
  • 用Kafka脚本启动: kafka-server-start /usr/local/etc/kafka/server.properties
  • 想要在背景启动,加上参数daemon即可
    • kafka-server-start -daemon /usr/local/etc/kafka/server-1.properties
  • 查看是否启动成功:ps aux | grep kafka
  • 关闭的话直接ctrl+c即可
    • 背景启动的话,ps -eaf | grep kafka/server-1.properties,找到PID後
    • 下指令 kill 就可以关闭 Kafka

Step 4: 启动 zookeeper

  • 进入路径: cd /usr/local/Cellar/kafka/2.8.0/libexec
  • 用Kafka脚本启动: zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties
    • 想要在背景启动,一样加上参数daemon即可
  • 查看是否启动成功:ps aux | grep zookeeper
  • 关闭的话直接ctrl+c即可

Step 5: 查看 port 的使用状况

zookeeper预设会占用2183,kafka占用9092

$ lsof -n -i:9092 | grep LISTEN
java    13682 username  182u  IPv6 0x6b8b3949168d06d5      0t0  TCP 127.0.0.1:XmlIpcRegSvc (LISTEN)
$ lsof -n -i:2183 | grep LISTEN
java    19634 username  119u  IPv6 0xf4aea82af835c653      0t0  TCP *:eforward (LISTEN)

<<:  没钱就跟别人要钱,别人的钱就是我的钱,但我的钱还是我的钱

>>:  Day4 - LINE 官方帐号自动回应

Day1: 开始学习演算法和资料结构的契机

近期面试掀起了一波考演算法的风气,就好像回到大学指考那样,老师说这题会考一定要记起来,因此掀起了一...

Day 4: 人工智慧在音乐领域的应用 (AI发展史与简介 - 第一次寒冬)

到底什麽是AI? 我想大部份的人应该都对AI/人工智慧/人工智能这些字眼不陌生,尤其是在AlphaG...

冲动购物真的是潜意识害的?

透过感觉将外在刺激带给大脑的过程中, 感知系统的敏感程度可以用绝对阀值显示, 代表着能感受到刺激的最...

Day-23 你没想到的Excel average知识

今日练习档 ԅ( ¯་། ¯ԅ) 经过昨天详细的介绍SUM家族後,今天理所当然要介绍与其相似的AVE...

网路是怎样连接的(二) 网路分层架构

思考重点 组织垂直分层的好处是什麽 网路自上而下的流程与分层的关联 核心知识 什麽是网路分层 网路分...