环境说明:
- os:Ubuntu 16.04
- zookeeper:zookeeper 3.4.10
- kafka:kafka_2.12-2.6.0
- jdk:jdk 8(kafka启动需要使用到jdk)
详细说明(以下所有操作均是在root用户下操作):
一、jdk安装
dk分为以下几种:jre、openjdk、 oracle jdk,这里我们要安装的是oracle jdk(推荐安装)
apt-get update apt-get install oracle-java8-installer apt-get install oracle-java8-set-default
二、安装配置zookeeper单机模式
下载zookeeper3.4.10
cd /usr/local
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz下载成功后解压
tar zxvf zookeeper-3.4.10.tar.gz
解压后同目录下便存在相同文件夹

切换到conf目录下:

重命名zoo_sample.cfg到zoo.cfg:
mv zoo_sample.cfg zoo.cfg
编辑zoo.cfg如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/var/log/zookeeper/logs
clientPort=2181
为zookeeper创建环境变量,打开/etc/profile文件,并在最末尾添加如下内容:
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=${JAVA_HOME}/bin:${JMETER_HOME}/bin:${ZOOKEEPER_HOME}/bin:${KAFKA_HOME}/bin:$PATH
- #保存退出
- source /etc/profile
启动zookeeper服务:
zkServer.sh /usr/local/zookeeper/conf/zoo.cfg
配置成开机自启动
- cd /etc/systemd/system
- touch zookeeper.service
- systemctl daemon-reload #系统重新加载服务
- systemctl enable zookeeper.service #设置开机自启动
zookeeper.service文件内容
[Unit]
# Zookeeper服务的描述
Description=Zookeeper Service
# 服务依赖—在什么服务之后启动,一般为在网络服务启动后启动
After=network.target
[Service]
# 服务类型—如果是shell脚本的方式,则Type=forking,否则不指定作何值(也就是去掉该配置项)
Type=forking
# 启动环境参数
# 此脚本指定了Zookeeper日志和Java的目录
Environment=ZOO_LOG_DIR=/var/log/zookeeper/logs/
Environment=JAVA_HOME=/usr/lib/jvm/jdk1.8.0_211
# 启动命令
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
# 停止命令
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
# 重启命令
ExecReload=/usr/local/zookeeper/bin/zkServer.sh restart
[Install]
WantedBy=multi-user.target配置中JAVA_HOME 的位置根据自己安装jdk的位置
启动命令:systemctl start zookeeper.service
停止命令:systemctl stop zookeeper.service
重启命令:systemctl restart zookeeper.service
查看状态命令:systemctl status zookeeper.service
三、安装配置kafka单机模式
下载kafaka
cd /usr/local
wget http://archive.apache.org/dist/kafka/2.6.0/kafka_2.12-2.6.0.tgz解压:
tar zxvf kafka_2.12-2.6.0.tgz
进入kafka/config目录下:

以上文件是需要修改的文件,下面一个个修改配置:
配置server.properties:
以下为修改的,其他为默认即可:
#broker.id需改成正整数,单机为1就好
broker.id=1
#指定端口号
port=9092
#localhost这一项还有其他要修改,详细见下面说明
host.name=localhost
#指定kafka的日志目录
log.dirs=/var/log/kafka/kafka-logs
#连接zookeeper配置项,这里指定的是单机,所以只需要配置localhost,若是实际生产环境,需要在这里添加其他ip地址和端口号
zookeeper.connect=localhost:2181
配置zookeeper.properties:
#数据目录
dataDir=/var/log/kafka/zookeeper/data
#客户端端口
clientPort=2181
host.name=localhost
配置producer.properties:
zookeeper.connect=localhost:2181

配置consumer.properties:
zookeeper.connect=localhost:2181

设置开机启动
- cd /etc/systemd/system/
- touch kafka.service
- systemctl daemon-reload #系统重新加载服务
- systemctl enable kafka.service #设置开机自启动
kafka.service内容
[Unit]
# Kafka服务的描述
Description=Kafka Service
# 服务依赖—在什么服务之后启动,一般为在网络服务启动后启动
After=network.target zookeeper.service
[Service]
Type=forking
# 启动环境参数
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/jdk1.8.0_211/bin"
User=root
Group=root
# 启动命令
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
# 停止命令
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target配置中JAVA_HOME 的位置根据自己安装jdk的位置
启动kafka命令:systemctl start kafka
关闭kafka命令:systemctl stop kafka
查看状态命令:systemctl status kafka
四、测试
创建topic
使用 kafka-topics.sh 创建单分区单副本的 topic test
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test查看 topic 列表
bin/kafka-topics.sh --list --zookeeper localhost:2181
产生消息,创建消息生产者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
消费消息,创建消息消费者
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
查看Topic消息
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
第一行给出了所有分区的摘要,每个附加行给出了关于一个分区的信息。 由于我们只有一个分区,所以只有一行。
“Leader”: 是负责给定分区的所有读取和写入的节点。 每个节点将成为分区随机选择部分的领导者。
“Replicas”: 是复制此分区日志的节点列表,无论它们是否是领导者,或者即使他们当前处于活动状态。
“Isr”: 是一组“同步”副本。这是复制品列表的子集,当前活着并被引导到领导者。





Comments | NOTHING