1、安装zookeeper

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

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

mac zookeeper&kafka 安装包搭建环境_zookeeper

 

 

目录

下载并解压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 安装包搭建环境_bash_02

 

 

创建topic



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


 

其中demo为创建的topic名称。

mac zookeeper&kafka 安装包搭建环境_客户端_03

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

mac zookeeper&kafka 安装包搭建环境_客户端_04

如上图,创建主题后,系统会在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


 

因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Blue·Sky】!


China-测试开发】技术交流群期待你的加入【 193056556

欢迎扫码关注:日益】微信订阅号【 riyi18


mac zookeeper&kafka 安装包搭建环境_sed_05