51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Linux安装Zookeeper+Kafka(单机)

一、Zookeeper简介

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

二、Kafka简介

Kafka 被称为下一代分布式-订阅消息系统,是非营利性组织ASF(Apache Software Foundation,简称为ASF)基金会中的一个开源项目,比如HTTP Server、Hadoop、ActiveMQ、Tomcat等开源软件都属于Apache基金会的开源软件,类似的消息系统还有RbbitMQ、ActiveMQ、ZeroMQ,最主要的优势是其具备分布式功能、并且结合zookeeper可以实现动态扩容。

Apache Kafka 与传统消息系统相比,有以下不同:

1)它被设计为一个分布式系统,易于向外扩展;

2)它同时为发布和订阅提供高吞吐量;

3)它支持多订阅者,当失败时能自动平衡消费者;

4)它将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。

三、安装JDK

JDK下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html

1、安装JDK-1.8

[root@localhost ~]# yum -y install jdk-8u351-linux-x64.rpm

2、查看是否安装成功

[root@localhost ~]# java -version

java version "1.8.0_351"

Java(TM) SE Runtime Environment (build 1.8.0_351-b10)

Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)

四、安装Zookeeper

1、下载zookeeper安装包

[root@localhost ~]# wget -c https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz

2、解压并重命名

{#8013-1534041091339}[root@localhost ~]# tar xf apache-zookeeper-3.7.1-bin.tar.gz

{#4388-1534041439255}[root@localhost ~]# mv apache-zookeeper-3.7.1-bin /usr/local/zookeeper

{#7710-1534041192410}3、创建快照日志存放目录和事务日志存放

[root@localhost ~]# mkdir -p /usr/local/zookeeper/{data,logs}

{#6381-1534041200994}注:如果不配置dataLogDir,那么事务日志也会写在data目录中。这样会严重影响zookeeper的性能。因为在zookeeper吞吐量很高的时候,产生的事务日志和快照日志太多。

{#0082-1534041765302}[root@localhost ~]# cd /usr/local/zookeeper/conf

[root@localhost conf]# cp zoo_sample.cfg zoo.cfg

{#6379-1534041774689}[root@localhost conf]# vim zoo.cfg

{#1837-1534043115319}# 配置内容

# 服务器之间或客户端与服务器之间的单次心跳检测时间间隔,单位为毫秒
tickTime=2000
# 集群中leader服务器与follower服务器第一次连接最多次数
initLimit=10
# 集群中leader服务器与follower服务器第一次连接最多次数
syncLimit=5
# 客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求
clientPort=2181
# 存放数据文件
dataDir=/usr/local/zookeeper/data
# 存放日志文件
dataLogDir=/usr/local/zookeeper/logs

4、配置系统服务

[root@localhost conf]# vim /etc/systemd/system/zookeeper.service

[Unit]
Description=Zookeeper Server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

\[Service\]
Type=forking
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
User=root
Group=root


\[Install\]
WantedBy=multi-user.target

5、启动Zookeeper

[root@localhost conf]# systemctl daemon-reload

[root@localhost conf]# systemctl start zookeeper

[root@localhost conf]# systemctl enable zookeeper

6、查看Zookeeper端口和进程

[root@localhost conf]# netstat -lntup |grep 2181

[root@localhost conf]# ps -ef |grep zookeeper

7、查看Zookeeper状态

[root@localhost conf]# /usr/local/zookeeper/bin/zkServer.sh status

/bin/java

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg

Client port found: 2181. Client address: localhost. Client SSL: false.

Mode: standalone

五、安装Kafka

1、下载安装包

[root@localhost conf]# cd ~ && wget -c https://archive.apache.org/dist/kafka/3.2.1/kafka_2.13-3.2.1.tgz

2、解压并重命名

[root@localhost ~]# tar xf kafka_2.13-3.2.1.tgz

[root@localhost ~]# mv kafka_2.13-3.2.1 /usr/local/kafka

3、配置server.properties

[root@localhost ~]# vim /usr/local/kafka/config/server.properties

broker.id=0
listeners=PLAINTEXT://192.168.8.38:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/usr/local/kafka/logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
delete.topic.enable=true
auto.create.topics.enable=true

4、配置系统服务

[root@localhost ~]# vim /etc/systemd/system/kafka.service

[Unit]
Description=Kafka Server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

\[Service\]
Type=forking
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
User=root
Group=root


\[Install\]
WantedBy=multi-user.target

5、启动Kafka

[root@localhost ~]# systemctl daemon-reload

[root@localhost ~]# systemctl start kafka

[root@localhost ~]# systemctl enable kafka

6、创建topic

创建名为test,partitions(分区)为10,replication(副本)为1的topic

[root@localhost ~]# /usr/local/kafka/bin/kafka-topics.sh --create --bootstrap-server 192.168.8.38:9092 --partitions 10 --replication-factor 1 --topic test

Created topic test.

7、获取topic

[root@localhost ~]# /usr/local/kafka/bin/kafka-topics.sh --describe --bootstrap-server 192.168.8.38:9092 --topic test

8、删除topic

[root@localhost ~]# /usr/local/kafka/bin/kafka-topics.sh --delete --bootstrap-server 192.168.8.38:9092 --topic test

9、获取所有topic

[root@localhost ~]# /usr/local/kafka/bin/kafka-topics.sh --list --bootstrap-server 192.168.8.38:9092

10、kafka命令测试消息发送

1)创建topic

[root@localhost ~]# /usr/local/kafka/bin/kafka-topics.sh --create --bootstrap-server 192.168.8.38:9092 --partitions 10 --replication-factor 1 --topic test

Created topic test.

2)发送消息

[root@localhost ~]# /usr/local/kafka/bin/kafka-console-producer.sh --broker-list 192.168.8.38:9092 --topic test

>hello

>test

3)获取数据

[root@localhost ~]# /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.8.38:9092 --topic test --from-beginning

hello

test

结果:生产者可正常生产数据,消费者能消费到数据。
继续阅读

历史上的今天

7 月
24

赞(0)
未经允许不得转载:工具盒子 » Linux安装Zookeeper+Kafka(单机)