目录
2. 安装Kafka并确保hadoop用户对Kafka目录有操作权限
虚拟机产品:VMware® Workstation 17 Pro 虚拟机版本:17.0.0 build-20800274
ISO映像文件:ubuntukylin-22.04-pro-amd64.iso
Hadoop版本:Hadoop 3.1.3
JDK版本:Java JDK 1.8
Spark版本:Spark 3.2.0
Kafka版本:kafka_2.12-2.6.0
前面的2.12就是该Kafka所支持的Scala版本号,后面的2.6.0是Kafka自身的版本号
这里有我放的百度网盘下载链接,读者可以自行下载:
链接:https://pan.baidu.com/s/121zVsgc4muSt9rgCWnJZmw
提取码:wkk6
也可去Kafka官网进行下载:Apache Kafka
注意:其中的ISO映像文件为ubuntukylin-16.04.7版本的而不是22.04版本,22.04版本内存过大无法上传,见谅!!!
附上Ubuntu Kylin(优麒麟)官网下载:优麒麟 (ubuntukylin.com) 读者可以前去官网下载ISO映像文件
现附上相关资料,读者可通过这些资料来查看自己的Spark与其他组件(例如JDK,Hadoop,Yarn,Hive,Kafka等)的兼容版本、Spark Streaming + Kafka 集成指南、Kafka清华源镜像下载地址、Kafka官网、Kafka官网下载页面等:
1. 查看Spark与Hadoop等其他组件的兼容版本
2. Github中Spark开源项目地址
GitHub - apache/spark at v3.2.0https://github.com/apache/spark/tree/v3.2.0
3. Spark Streaming + Kafka 集成指南
Index of /apache/kafka (tsinghua.edu.cn)https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/
5. Kafka官网
Apache Kafkahttps://kafka.apache.org/
6. Kafka官网下载页面
Apache Kafkahttps://kafka.apache.org/downloads
将物理机上下载的Kafka安装包拖拽到读者虚拟机Ubuntu系统家目录中的下载目录中(安装包内已经附带zookeeper,不需要额外安装zookeeper):
- sudo tar -zxf ~/下载/kafka_2.12-2.6.0.tgz -C /usr/local
- cd /usr/local
- sudo mv kafka_2.12-2.6.0 kafka
- sudo chown -R hadoop ./kafka # 此处的 hadoop 为你的用户名
sudo tar -zxf ~/下载/kafka_2.12-2.6.0.tgz -C /usr/local
:
sudo
权限解压缩并解包 Kafka 压缩包文件 kafka_2.12-2.6.0.tgz
-zxf
参数表示使用 gzip 解压缩,并且是解包操作~/下载/kafka_2.12-2.6.0.tgz
是 Kafka 压缩包的路径-C /usr/local
指定了解压缩后的文件应该放置的目标路径为 /usr/local
cd /usr/local
:
/usr/local
sudo mv kafka_2.12-2.6.0 kafka
:
sudo
权限将 Kafka 解压后的文件夹 kafka_2.12-2.6.0
重命名为 kafka
sudo chown -R hadoop ./kafka
:
sudo
权限递归地更改 kafka
文件夹及其所有子文件和子文件夹的所有者为 hadoop
用户-R
参数表示递归地更改权限至此,Kafka安装完成,下面在Ubuntu系统环境下测试简单的实例
打开第一个终端,输入下面命令启动Zookeeper服务:
- cd /usr/local/kafka
- ./bin/zookeeper-server-start.sh config/zookeeper.properties
千万不要关闭这个终端窗口,一旦关闭,Zookeeper服务就停止了(Kafka工作运行完毕后不再使用时再关闭)
打开第二个终端,然后输入下面命令启动Kafka服务:
- cd /usr/local/kafka
- ./bin/kafka-server-start.sh config/server.properties
千万不要关闭这个终端窗口,一旦关闭,Kafka服务就停止了(Kafka工作运行完毕后不再使用时再关闭)
成功启动所有服务后,读者将拥有一个基本的 Kafka 环境,可供使用。
主题(Topics)类似于文件系统中的文件夹,事件(events)是该文件夹中的文件。因此,在编写第一个事件之前,必须创建一个主题。
再打开第三个终端,然后输入下面命令创建一个自定义名称为“wordsendertest”的Topic(主题):
- cd /usr/local/kafka
- # 创建一个名为 wordsendertest 的 Kafka 主题
- ./bin/kafka-topics.sh --create --topic wordsendertest --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
- # 列出所有主题
- ./bin/kafka-topics.sh --list --bootstrap-server localhost:9092
- # 描述特定主题的细节
- ./bin/kafka-topics.sh --describe --topic wordsendertest --bootstrap-server localhost:9092
Topic: wordsendertest
: 表示主题的名称是 wordsendertest
。PartitionCount: 1
: 表示这个主题有一个分区。ReplicationFactor: 1
: 表示每个分区只有一个副本。Configs: segment.bytes=1073741824
: 这里列出了主题的配置,其中包括了段(segment)的大小为 1GB。Partition: 0
: 表示分区的编号为 0。Leader: 0
: 表示分区的领导者(Leader)所在的代理(Broker)的编号为 0。Replicas: 0
: 表示这个分区的副本所在的代理(Broker)的编号为 0。Isr: 0
: 表示当前与 Leader 同步复制的副本集(In-Sync Replica Set)中只有一个副本,其编号也为 0。Kafka客户端通过网络与Kafka代理进行通信,以写入(或读取)事件。一旦收到事件,直到需要事件,代理程序都将以持久和容错的方式存储事件,甚至永远。
下面用生产者(Producer)来产生一些数据,在主题中写入一些事件。默认情况下,输入的每一行都将导致一个单独的事件写入主题。请在第三个终端(记作“数据源终端”)内继续输入下面命令:
- cd /usr/local/kafka
- ./bin/kafka-console-producer.sh --topic wordsendertest --bootstrap-server localhost:9092
当执行这个命令后,控制台会等待读者输入消息。每输入一行消息,它就会将该消息发送到指定的主题中。读者可以通过按下 Ctrl+C
来退出生产者控制台。
上面命令执行后,就可以在当前终端内用键盘输入一些英文单词(也可以等消费者启用后再输入)
现在可以启动一个消费者(Consumer),来查看刚才生产者产生的数据。请另外打开第四个终端,输入下面命令:
- cd /usr/local/kafka
- ./bin/kafka-console-consumer.sh --topic wordsendertest --from-beginning --bootstrap-server localhost:9092
执行这个命令后,控制台将开始从 wordsendertest
主题中消费消息,并将其显示在控制台上。读者可以通过按下 Ctrl+C
来退出消费者控制台。
因为事件是持久存储在Kafka中的,所以它们可以被任意多次读取,也可以被任意多的消费者读取。可以通过打开另一个终端会话并再次运行该命令来验证这一点
-> 实例运行结束后可以Ctrl+Z或Ctrl+C停止进程 ~~~