程子的博客

想得到从未得到的东西,就要去做从未做过的事

aaaaa
  menu
46 文章
23633 浏览
0 当前访客
ღゝ◡╹)ノ❤️

Linux 安装 kafka

kafka是一种高吞吐量的分布式发布订阅消息系统 , kafka 的运行依赖与 zookeeper , kafka 安装包中自带 zookeeper

1. 下载 kafka

地址: http://kafka.apache.org/downloads.html

 Source download: kafka-2.5.0-src.tgz (asc, sha512)  # 此为源代码, 需要自己编译
Binary downloads:
    Scala 2.12  - kafka_2.12-2.5.0.tgz (asc, sha512)  # 已编译好的, 前面的2.12为 Scala版本
    Scala 2.13  - kafka_2.13-2.5.0.tgz (asc, sha512)

2. 解压安装包

  • 解压: tar -zxvf kafka_2.13-2.5.0.tgz
  • 进入 config 目录
[root@bogon kafka]# ll
总用量 60020
drwxr-xr-x. 6 root root       89 4月   8 09:18 kafka_2.13-2.5.0
-rw-r--r--. 1 root root 61459093 4月  16 17:13 kafka_2.13-2.5.0.tgz
[root@bogon kafka]# cd kafka_2.13-2.5.0/config/
[root@bogon config]# ll
总用量 72
-rw-r--r--. 1 root root  906 4月   8 09:13 connect-console-sink.properties
-rw-r--r--. 1 root root  909 4月   8 09:13 connect-console-source.properties
-rw-r--r--. 1 root root 5321 4月   8 09:13 connect-distributed.properties
-rw-r--r--. 1 root root  883 4月   8 09:13 connect-file-sink.properties
-rw-r--r--. 1 root root  881 4月   8 09:13 connect-file-source.properties
-rw-r--r--. 1 root root 2247 4月   8 09:13 connect-log4j.properties
-rw-r--r--. 1 root root 2540 4月   8 09:13 connect-mirror-maker.properties
-rw-r--r--. 1 root root 2262 4月   8 09:13 connect-standalone.properties
-rw-r--r--. 1 root root 1221 4月   8 09:13 consumer.properties
-rw-r--r--. 1 root root 4675 4月   8 09:13 log4j.properties
-rw-r--r--. 1 root root 1925 4月   8 09:13 producer.properties
-rw-r--r--. 1 root root 6849 4月   8 09:13 server.properties
-rw-r--r--. 1 root root 1032 4月   8 09:13 tools-log4j.properties
-rw-r--r--. 1 root root 1169 4月   8 09:13 trogdor.conf
-rw-r--r--. 1 root root 1205 4月   8 09:13 zookeeper.properties
[root@bogon config]# 

3. 启动 zookeeper

  • 筛选备份 zookeeper.properties 配置文件信息, 此为 zookeeper 配置信息
# 复制非注释配置到新的文件中
cat zookeeper.properties | grep -v '#' >> zk.properties
# 配置如下
[root@bogon config]# cat zk.properties 
dataDir=/tmp/zookeeper
clientPort=2181
maxClientCnxns=0
admin.enableServer=false
  • 启动 zookeeper

nohup ./bin/zookeeper-server-start.sh config/zk.properties 1>/dev/null 2>&1 &

  • 查询 zookeeper 是否启动
[root@bogon kafka_2.13-2.5.0]# jps
4561 QuorumPeerMain
4913 Jps
# QuorumPeerMain 就是 zookeeper 的进程, 说明启动成功

4. 启动 kafka

  • 打开新的
  • 进入 config 目录
  • 筛选备份 server.properties 配置文件信息, 此为 kafka 配置文件
# 复制非注释配置到新的文件中
cat server.properties | grep -v '#' >> ka.properties
# 配置如下
[root@bogon config]# cat server.properties | grep -v '#' >> ka.properties
[root@bogon config]# cat ka.properties 
broker.id=0
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
[root@bogon config]# 
  • 启动 kafka

nohup ./bin/kafka-server-start.sh config/ka.properties 1>/dev/null 2>&1 &

  • 启动异常

启动 kafka 的时候经常会碰到 zookeeper 连接不上的问题:

[2020-04-16 15:59:14,909] INFO Session: 0x0 closed (org.apache.zookeeper.ZooKeeper)
[2020-04-16 15:59:14,910] INFO EventThread shut down for session: 0x0 (org.apache.zookeeper.ClientCnxn)
[2020-04-16 15:59:14,911] INFO [ZooKeeperClient Kafka server] Closed. (kafka.zookeeper.ZooKeeperClient)
[2020-04-16 15:59:14,915] ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
	at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:262)
	at kafka.zookeeper.ZooKeeperClient.<init>(ZooKeeperClient.scala:119)
	at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1863)
	at kafka.server.KafkaServer.createZkClient$1(KafkaServer.scala:378)
	at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:403)
	at kafka.server.KafkaServer.startup(KafkaServer.scala:210)
	at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)
	at kafka.Kafka$.main(Kafka.scala:82)
	at kafka.Kafka.main(Kafka.scala)
[2020-04-16 15:59:14,918] INFO shutting down (kafka.server.KafkaServer)
[2020-04-16 15:59:14,924] INFO shut down completed (kafka.server.KafkaServer)
[2020-04-16 15:59:14,925] ERROR Exiting Kafka. (kafka.server.KafkaServerStartable)
[2020-04-16 15:59:14,926] INFO shutting down (kafka.server.KafkaServer)

解决方法

    1. 检查 kafka 的配置文件中配置的 zookeeper 的 ip 和端口号是否正确
    2. zookeeper 没有使用守护进程运行, 直接运行的, 然后使用 ctrl + c 退出了, 或者命令窗口关闭了, 导致 zookeeper 并没有真的启动, 解决方法就是 zookeeper 和 kafka 都使用守护进程进行启动.

5. 创建 topic

# 创建 1个分区 1个副本的 topic
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic chengzi(主题名称)

# 打印
Created topic "chengzi".

6. 查看 topic

./bin/kafka-topics.sh --list --zookeeper localhost:2181

# 打印
chengzi

到此咱们的 topic 创建成功了

7. 发送消息

发送消息默认使用的是 9092 端口, kafka 链接 zookeeper 默认端口是 2181 这两个是不一样的, 要注意.

./bin/kafka-console-producer.sh --broker-list  localhost:9092 --topic  chengzi

# 打印
>
  • 此时可以进行输入消息发送了

8. 消费消息

  • 复制一个新的窗口进行消息消费
./bin/kafka-console-consumer.sh --bootstrap-server  localhost:9092 --topic chengzi

# 进入监听状态
  • 在消息发送窗口进行消息发送
>
>wosh^H^H^H
>我是鬼
>你是谁啊
>不要吓唬我啊
>
  • 查看消息消费窗口
[root@bogon kafka_2.13-2.5.0]# ./bin/kafka-console-consumer.sh --bootstrap-server  localhost:9092 --topic chengzi

wosh
我是鬼
你是谁啊
不要吓唬我啊
  • 消费以前的消息在刚才的命令中添加 --from-beginning 即可

9. 删除 topic

./bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic chengzi

删除 topic 端口号使用 2181,使用 9092 是不行的


标题:Linux 安装 kafka
作者:chengzime
地址:https://chengzime.com.cn/articles/2020/04/16/1587032781131.html