Kafka是流式计算中重要的数据源,我分享一下在本机Windows上搭建Kafka的经验。
访问Kafka的主页:http://kafka.apache.org/
进入其下载页面,截图如下:
选择相应的版本,这里选择 kafka_2.11-2.4.0.tgz,进入下面的页面:
选择清华的镜像站点进行下载。
下载到本地后,将文件解压到 D:\kafka_2.11-2.4.0,该文件夹包括了所有相关的运行文件及配置文件,其子文件夹bin\windows 下放的是在Windows系统启动zookeeper和kafka的可执行文件,子文件夹config下放的是zookeeper和kafka的配置文件。
我们需要先后启动zookeeper和kafka服务。
它们都需要进入 D:\kafka_2.11-2.4.0 目录,然后再启动相应的命令。
cd D:\kafka_2.11-2.4.0
启动zookeeper服务,运行命令:
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
启动kafka服务,运行命令:
bin\windows\kafka-server-start.bat config\server.properties
Kafka中创建一个Topic,名称为iris
bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic iris
创建成功后,可以使用如下命令,显示所有Topic的列表:
bin\windows\kafka-topics.bat --list --zookeeper localhost:2181
显示结果为
iris
然后,我们通过Alink的 Kafka SinkStreamOp可以将iris数据集写入该Topic。这里不详细展开,有兴趣的读者可以参阅如下的文章。
使用如下命令,读取(消费)topic iris中的数据:
bin\windows\kafka-console-consumer.bat --bootstrap-server 127.0.0.1:9092 --topic iris --from-beginning
显示结果如下,略去了中间的大部分数据:
{"sepal_width":3.4,"petal_width":0.2,"sepal_length":4.8,"category":"Iris-setosa","petal_length":1.6}
{"sepal_width":4.1,"petal_width":0.1,"sepal_length":5.2,"category":"Iris-setosa","petal_length":1.5}
{"sepal_width":2.8,"petal_width":1.5,"sepal_length":6.5,"category":"Iris-versicolor","petal_length":4.6}
{"sepal_width":3.0,"petal_width":1.8,"sepal_length":6.1,"category":"Iris-virginica","petal_length":4.9}
{"sepal_width":2.9,"petal_width":1.8,"sepal_length":7.3,"category":"Iris-virginica","petal_length":6.3}
...........
{"sepal_width":2.2,"petal_width":1.0,"sepal_length":6.0,"category":"Iris-versicolor","petal_length":4.0}
{"sepal_width":2.4,"petal_width":1.0,"sepal_length":5.5,"category":"Iris-versicolor","petal_length":3.7}
{"sepal_width":3.1,"petal_width":0.2,"sepal_length":4.6,"category":"Iris-setosa","petal_length":1.5}
{"sepal_width":3.4,"petal_width":0.2,"sepal_length":4.8,"category":"Iris-setosa","petal_length":1.9}
{"sepal_width":2.9,"petal_width":1.4,"sepal_length":6.1,"category":"Iris-versicolor","petal_length":4.7}