mac zookeeper&kafka 安装包搭建环境

1、安装zookeeper

因为zookeeper 与kafka 存在对应的版本,选择不当,将无法使用,所以两者都使用最新版本

下载地址:https://zookeeper.apache.org/releases.html 

mac zookeeper&kafka 安装包搭建环境

目录

下载并解压ZooKeeper软件压缩包后,可以看到zk包含以下的文件和目录:

图1:ZooKeeper软件的文件和目录

    • bin目录
      zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。其中,.sh是Linux环境下的脚本,.cmd是Windows环境下的脚本。
    • conf目录
      配置文件目录。zoo_sample.cfg为样例配置文件,需要修改为自己的名称,一般为zoo.cfg。log4j.properties为日志配置文件。
    • lib
      zk依赖的包。
    • contrib目录
      一些用于操作zk的工具包。
    • recipes目录
      zk某些用法的代码示例

运行配置

上面提到,conf目录下提供了配置的样例zoo_sample.cfg,要将zk运行起来,需要将其名称修改为zoo.cfg。
打开zoo.cfg,可以看到默认的一些配置。

    • tickTime
      时长单位为毫秒,为zk使用的基本时间度量单位。例如,1 * tickTime是客户端与zk服务端的心跳时间,2 * tickTime是客户端会话的超时时间。
      tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。
    • clientPort
      zk服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
    • dataDir
      无默认配置,必须配置,用于配置存储快照文件的目录。如果没有配置dataLogDir,那么事务日志也会存储在此目录。

配置环境变量 vim ~/.bash_profile 

export ZK_HOME=/Users/yyj/big_data/zookeeper
export KAFKA_HOME=/Users/yyj/big_data/kafka_2.12-2.5.0
export PATH=$PATH:$ANDROID_HOME/platform-tools:${KAFKA_HOME}/bin:${ZK_HOME}/bin

启动 进入bin目录,执行命令

zkServer.sh start

安装Kafka

下载 http://kafka.apache.org/downloads

解压

tar -xzf kafka_2.12-2.5.0.tgz

注意,kafka_2.12-2.5.0.tgz版本是已经编译好的版本,解压就能使用。

 配置server.properties

默认配置 advertised.listeners=PLAINTEXT://:your.host.name:9092 修改为 advertised.listeners=PLAINTEXT://:ip:9092

ip为服务器ip。

hostname和端口是用来建议给生产者和消费者使用的,如果没有设置,将会使用listeners的配置,如果listeners也没有配置,将使用java.net.InetAddress.getCanonicalHostName()来获取这个hostname和port,对于ipv4,基本就是localhost了。

"PLAINTEXT"表示协议,可选的值有PLAINTEXT和SSL,hostname可以指定IP地址,也可以用"0.0.0.0"表示对所有的网络接口有效,如果hostname为空表示只对默认的网络接口有效。也就是说如果你没有配置advertised.listeners,就使用listeners的配置通告给消息的生产者和消费者,这个过程是在生产者和消费者获取源数据(metadata)。

配置环境变量

export ZK_HOME=/Users/yyj/big_data/zookeeper
export KAFKA_HOME=/Users/yyj/big_data/kafka_2.12-2.5.0
export PATH=$PATH:$ANDROID_HOME/platform-tools:${KAFKA_HOME}/bin:${ZK_HOME}/bin

启动Kafka

 启动ZooKeeper

zkServer.sh start

注意,需要先启动ZooKeeper再启动kafka,不然会报错。如下图:

启动kafka

kafka-server-start.sh /Users/yyj/big_data/kafka_2.12-2.5.0/config/server.properties

启动Kafka Broker后,在ZooKeeper终端上键入命令 jps,效果如下:

mac zookeeper&kafka 安装包搭建环境

创建topic

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic demo

其中demo为创建的topic名称。

mac zookeeper&kafka 安装包搭建环境

如上图,创建了一个名为 demo 的主题,其中包含一个分区和一个副本因子。 创建成功之后会输出: Created topic "demo".

mac zookeeper&kafka 安装包搭建环境

如上图,创建主题后,系统会在config / server.properties文件中的"/ tmp / kafka-logs /"中指定的创建主题的日志。

 查询topic列表

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

 查看topic信息

bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic demo

 删除topic

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

启动生产者

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

从上面的语法,生产者命令行客户端需要两个主要参数 -

代理列表 - 我们要发送邮件的代理列表。 在这种情况下,我们只有一个代理。 Config / server.properties文件包含代理端口ID,因为我们知道我们的代理正在侦听端口9092,因此您可以直接指定它。主题名称:demo。

 启动消费者

为了方便测试,另启一个sheel窗口 这样效果更明显。需要注意的是旧版本和新版本的命令是不一样的

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic demo --from-beginning

报错提示: zookeeper is not a recognized option

发现在启动的时候说使用 --zookeeper是一个过时的方法,最新的版本中命令如下:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic demo --from-beginning

可以开启两个终端,一个发送消息,一个接受消息。效果如下:

配置启动 关闭shell 脚本

start_all.sh 

#!/bin/bash

# 启动zk
zkServer.sh start

# 启动kafka
nohup kafka-server-start.sh /Users/yyj/big_data/kafka_2.12-2.5.0/config/server.properties >> /Users/yyj/big_data/kafka.log &

stop_all.sh

#!/bin/bash

# 关闭kafka
kafka-server-stop.sh /Users/yyj/big_data/kafka_2.12-2.5.0/config/server.properties

# 关闭zk
zkServer.sh stop