1. 安装zookeeper
1.1 安装jdk
需要配置好jdk环境,首先去官网下载jdk包:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
可以使用rpm -qa|grep jdk命令检查是否已经安装了openjdk,如果安装了先卸载。卸载命令 dnf remove java java-1.8.0-openjdk*
解压jdk安装包tar -zxvf jdk-****-linux-x64.tar.gz 复制到自己的软件文件夹
配置环境变量vi /etc/profile 后在倒数第三行处输入下面的内容
export JAVA_HOME=/opt/jdk1***
export CLASSPATH=
C
L
A
S
S
P
A
T
H
:
CLASSPATH:
CLASSPATH:JAVA_HOME/lib:
J
A
V
A
H
O
M
E
/
j
r
e
/
l
i
b
e
x
p
o
r
t
P
A
T
H
=
JAVA_HOME/jre/lib export PATH=
JAVAHOME/jre/libexportPATH=JAVA_HOME/bin:
J
A
V
A
H
O
M
E
/
j
r
e
/
b
i
n
:
JAVA_HOME/jre/bin:
JAVAHOME/jre/bin:PATH:$HOME/bin
让环境变量生效 source /etc/profile
验证:输入java或者java -version
1.2 安装zookeeper
下载tar.gz包,解压 tar -zxvf zookeeper-3.4.13.tar.gz (根据实际版本修改)
进入conf目录,将zoo_sample.cfg复制为zoo.cfg 命令为 cp zoo_sample.cfg zoo.cfg
使用vim编辑zoo.cfg文件,修改以下内容:
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/log
注意:如果想配置集群的话,请在clientPort下面添加服务器的ip。如
server.1=192.168.180.132:2888:3888
server.2=192.168.180.133:2888:3888
server.3=192.168.180.134:2888:3888
如果电脑内存比较小,zookeeper还可以设置成伪集群。也就是全部服务器采用同一个ip,但是使用不同的端口。
在tmp目录创建目录。
[root@localhost conf]# mkdir /tmp/zookeeper
[root@localhost conf]# mkdir /tmp/zookeeper/data
[root@localhost conf]# mkdir /tmp/zookeeper/log
如果是配置集群,还需要在前面配置过的dataDir路径下新增myid文件
[root@localhost conf]# cd /tmp/zookeeper/data
[root@localhost data]# touch myid
[root@localhost data]# vim myid
在data目录下创建文件,文件名为“myid”, 编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。
如在192.168.180.132上,“myid”文件内容就是1。在192.168.180.133上,内容就是2。
配置环境变量:
[root@localhost zookeeper-3.4.13]# export ZOOKEEPER_INSTALL=/usr/local/zookeeper-3.4.13/
[root@localhost zookeeper-3.4.13]# export PATH=
P
A
T
H
:
PATH:
PATH:ZOOKEEPER_INSTALL/bin
启动zookeeper:进入bin目录,执行命令 ./zkServer.sh start
2. 安装kafka
下载tar.gz包,解压 tar -zxvf kafka_2.10-0.10.2.1.tgz
进入配置文件目录 cd /usr/local/software/kafka_2.10-0.10.2.1/config
修改配置文件 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)。
3. 启动kafka
首先要启动zookeeper: /usr/local/zookeeper-3.4.13/bin/zkServer.sh start
启动kafka: bin/kafka-server-start.sh config/server.properties
(停止卡夫卡:bin/kafka-server-stop.sh config/server.properties)
创建topic:bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic demo (demo为topic名称)。这条命令创建了一个名为 demo 的主题,其中包含一个分区和一个副本因子。 创建成功之后会输出: Created topic “demo”.
查询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
启动消费者:bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic demo --from-beginning
查看kafka生产最大位置偏移量 bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic demo --time -1