一、引言
最近正在学习 Kafka,选择了《Kafka 权威指南》这本书进行自学。这本书相对新手来说,还是有一定的阅读难度的,像我连着序言、前言和第一章拢共读了三遍才渐渐理解了 Kafka 的相关大概概念,这还是边读边百度帮助理解的结果。
作为一个初学者,在了解了 Kafka 的入门介绍之后,就应该要着手在本地搭建一个 kafka 环境了,这里我按照书上的介绍,参考了网上的几篇博客,终于在本地虚拟机上安装上了 Kafka 的环境。这篇博客旨在记录在这一过程,以飨遇到同样问题的读者。
ps:
1. 本篇博客选择了虚拟机下的 Ubuntu18.04 系统进行 Kafka 环境的搭建,建议尽量选择 Linux 系统进行 Kafka 环境的搭建,这也是《Kafka 权威指南》作者所极力推荐的
2. 本博客中使用到的 Java、Zookeeper 和 Kafka 安装包我都放到了百度云上,供去官网下载不方便的朋友下载使用
Kafka 环境搭建 https://pan.baidu.com/s/1RAJLXAKOnry6r93jQ65-XQ 提取码:r7dt
二、安装 Java
虽然按道理说 Zookeeper 和 Kafka 只需要一个 Java 的运行环境,但是安装一个 JDK 也是比较推荐的。
1. 获取 JDK 安装包
点击 Java SE Downloads 选择自己系统适合的版本下载,或者直接使用我上传到百度云的安装包 jdk-11.0.2_linux-x64_bin.tar.gz
。
2. 解压安装包
创建安装目录 /usr/java
$ sudo mkdir /usr/java
上传 JDK 安装包,将其移动到 /usr/java 目录下,并解压
$ sudo chmod 775 jdk-11.0.2_linux-x64_bin.tar.gz
$ sudo tar -zxf jdk-11.0.2_linux-x64_bin.tar.gz
$ sudo mv jdk-11.0.2 /usr/java
3. 配置 Java
上一步中自动解压出来的 JDK 目录是 /usr/java/jdk-11.0.2,我们将其配置到 Linux 系统环境变量中去,方便全局访问
$ sudo vi /etc/profile
往文件里添加以下内容
# java
export JAVA_HOME=/usr/java/jdk-11.0.2
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
4. 验证
使 Linux 系统环境变量立即生效并验证
$ source /etc/profile
$ java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
$ javac -version
javac 11.0.2
这一步并非是必须的,只需要你的环境里面有 Java 运行环境即可,JDK 安不安装都是可以的,当然,安装上了有备无患自然是更好的。
三、安装 Zookeeper
根据《Kafka 权威指南》作者的说法:
Kafka 使用 Zookeeper 保存集群的元数据信息和消费者信息。
其中集群的元信息包括消息的键值、偏移值等等。同样的,虽然 Kafka 发行版会自带一个 Zookeeper,但是安装一个完整的 Zookeeper 同样是有备无患的。
1. 获取 Zookeeper 安装包
点击 Apache Zookeeper Download 进行下载,或者直接使用我上传到百度云的安装包 zookeeper-3.4.13.tar.gz
。
2. 解压安装包
这里设定安装目录为 /usr/local/zookeeper,数据目录为 /var/lib/zookeeper
$ sudo tar -zxf zookeeper-3.4.13.tar.gz
$ sudo mv zookeeper-3.4.13 /usr/local/zookeeper
$ sudo mkdir -p /var/lib/zookeeper
3. 配置 zookeeper
有关 cat > file << EOF 命令形式的分析,我专门写了另外一篇博客,感兴趣的朋友可以点击这里 Linux小技巧:cat > file 和 EOF 的妙用。简单来说,这里就是手动创建了一个配置文件,并且在标准输入中输入配置信息,最后以 EOF 标识文件内容末尾
$ cat > /usr/loca/zookeeper/conf/zoo.cfg << EOF
> tickTime=2000
> dataDir=/var/lib/zookeeper
> clientPort=2181
> EOF
4. 验证
启动 zookeeper 服务,并使用 srvr 命令验证,这里 telnet 的 2181 端口就是上一步中配置的 clientPort 端口号
$ sudo /usr/local/zookeeper/bin/zkServer.sh start
$ telnet localhost 2181
$ srvr
四、安装 Kafka
安装 Kafka 的过程依然是比较简单的。
1. 获取 Kafka
点击 Apache Kafka Download 下载,或者或者直接使用我上传到百度云的安装包 kafka_2.12-2.1.1.tgz
。
2. 解压安装包
安装目录 /usr/loal/kafka,消息日志目录 /tmp/kafka-logs
$ sudo tar -zxf kafka_2.12-2.1.1.tgz
$ sudo mv kafka_2.12-2.1.1 /usr/local/kafka
$ sudo mkdir /tmp/kafka-logs
3. 验证
启动服务
$ sudo /usr/local/kafka/bin/kafka-server-start.sh -daemon
/usr/local/kafka/config/server.properties
创建 test 主题
$ sudo /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper
localhost:2181 --replication-factor 1 --partitions 1 --topic test
往主题上发布消息
$ sudo /usr/local/kafka/bin/kafka-console-producer.sh --broker-list
localhost:9092 --topic test
这里需要注意的是,虽然《Kafka 权威指南》上从主题上读取消息使用的是如下的指令代码
$ sudo /usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper
localhost:2181--topic test --from-beginning
但是在新的 Kafka 版本(0.90版本之后)上,这样用会报错:
zookeeper is not a recognized option
通过参考网上的博客,我发现这样使用就可以成功读取消息,这是因为使用 --zookeeper 启动消费者程序的方式在新版本的 kafka 中已经被废弃,新版本使用 --bootstrap-server 的方式启动消费者程序
$ sudo /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server
localhost:9092 --topic test --from-beginning
至此,Kafka 环境的搭建工作就完成了。
五、总结
Kafka 的安装过程遇到的问题不多,也就是 Kafka 0.90 版本之后消费者从测试主题读取消息的指令有所变化,其他按照步骤做下去一般都不会出现问题。
希望本篇博客能够给大家一些帮助 ^_^
To be Stronger:)