Kafka 环境搭建&Topic 管理
一. 环境准备
1.安装JDK1.8+ 配置好JAVA_HOME
2.配置主机名和IP映射
3.安装防火墙&防火墙开机自启动
4.安装zookeeper
5.安装 启动 关闭 Kafka
详细步骤
1.安装JDK 略
2.修改域名 修改host配置
###修改域名
[root@localhost ~]# cat /etc/sysconfig/network
HOSTNAME=CentOS
###修改映射 添加一行
[root@localhost ~]# vi /etc/hosts
192.168.141.100 CentOS
### 测试连接
[root@localhost ~]# ping CentOS
PING CentOS (192.168.141.130) 56(84) bytes of data.
64 bytes from CentOS (192.168.141.130): icmp_seq=1 ttl=64 time=0.037 ms
64 bytes from CentOS (192.168.141.130): icmp_seq=2 ttl=64 time=0.044 ms
3.关闭防火墙
4.安装zookeeper
##解压
[root@localhost ~]# tar -xvf zookeeper-3.4.6.tar.gz
##修改配置文件
[root@localhost zookeeper-3.4.6]# cd conf
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
##修改配置文件 zookeeper的数据位置
[root@localhost conf]# vim zoo.cfg
=======
# example sakes.
dataDir=/package/zkdata
=======
##创建位置
[root@localhost conf]# mkdir -p /package/zkdata
##开启zk
[root@localhost zookeeper-3.4.6]# ./bin/zkServer.sh
JMX enabled by default
Using config: /package/zookeeper-3.4.6/bin/../conf/zoo.cfg
##Usage 命令示范 ./bin/zkServer.sh 状态命令start|start-foreground|stop|restart|status|upgrade|print-cmd
## 使用配置文件 Using config
Usage: ./bin/zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
##开启zk2
[root@localhost zookeeper-3.4.6]# ./bin/zkServer.sh start conf/zoo.cfg
JMX enabled by default
Using config: conf/zoo.cfg
Starting zookeeper ... STARTED ##开启成功
##查看状态
[root@localhost zookeeper-3.4.6]# ./bin/zkServer.sh status conf/zoo.cfg
JMX enabled by default
Using config: conf/zoo.cfg
Mode: standalone ##开启成功
5.安装 启动 关闭 Kafka
##解压
[root@localhost ~]# tar -xvf kafka_2.11-2.2.0.tgz
##简单配置参数
[root@localhost kafka]# cd config/
[root@localhost config]# ll -ah
总用量 72K
drwxr-xr-x. 2 root root 4.0K 3月 10 2019 .
drwxr-xr-x. 6 root root 89 3月 10 2019 ..
-rw-r--r--. 1 root root 906 3月 10 2019 connect-console-sink.properties
-rw-r--r--. 1 root root 909 3月 10 2019 connect-console-source.properties
-rw-r--r--. 1 root root 5.2K 3月 10 2019 connect-distributed.properties
-rw-r--r--. 1 root root 883 3月 10 2019 connect-file-sink.properties
-rw-r--r--. 1 root root 881 3月 10 2019 connect-file-source.properties
-rw-r--r--. 1 root root 1.1K 3月 10 2019 connect-log4j.properties
-rw-r--r--. 1 root root 2.3K 3月 10 2019 connect-standalone.properties
-rw-r--r--. 1 root root 1.2K 3月 10 2019 consumer.properties
-rw-r--r--. 1 root root 4.7K 3月 10 2019 log4j.properties
-rw-r--r--. 1 root root 1.9K 3月 10 2019 producer.properties
-rw-r--r--. 1 root root 6.7K 3月 10 2019 server.properties ##配置
-rw-r--r--. 1 root root 1.1K 3月 10 2019 tools-log4j.properties
-rw-r--r--. 1 root root 1.2K 3月 10 2019 trogdor.conf
-rw-r--r--. 1 root root 1023 3月 10 2019 zookeeper.properties
[root@localhost config]# vi server.properties
##修改监听的主机域名(不能用IP)
# EXAMPLE:
# listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://CentOs:9092
############################# Log Basics 日志文件#############################
# A comma separated list of directories under which to store log files
log.dirs=/package/kfkdata
############################# Zookeeper Zookeeper 的域名 #############################
# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=CentOS:2181
###开启kafka 后台运行
[root@localhost kafka]# ./bin/kafka-server-start.sh -daemon config/server.properties
[root@localhost kafka]# jps
2833 Jps
2100 QuorumPeerMain
2763 Kafka
###关闭kafka
[root@localhost kafka]# ./bin/kafka-server-stop.sh
##查看帮助
[root@localhost bin]# ./kafka-topics.sh --help
##创建topic01 replication-factor 1 副本因子只能是1 因为是单机环境
[root@localhost bin]# ./kafka-topics.sh --bootstrap-server CentOS:9092 --create --topic topic01 --partitions 3 --replication-factor 1
到此kafka 的服务已经开启
二.验证单机环境:
上面创建的时候已经是创建了一个topico1 并且使用了3个分区 下面来验证单机环境的服务情况
1.一个消费组 多个消费者
###创建一个生产者
[root@localhost bin]# ./kafka-console-producer.sh --broker-list CentOS:9092 --topic topic01
>
等待输入
### 另一个窗口开始以消费组 成员开始消费
[root@localhost bin]# ./kafka-console-consumer.sh --bootstrap-server CentOS:9092 --topic topic01 --group group1
~窗口处于阻塞 等待状态
### 再起另一个窗口开始以消费组 成员开始消费
[root@localhost bin]# ./kafka-console-consumer.sh --bootstrap-server CentOS:9092 --topic topic01 --group group1
~窗口处于阻塞 等待状态
### 再起另一个窗口开始以消费组 成员开始消费
[root@localhost bin]# ./kafka-console-consumer.sh --bootstrap-server CentOS:9092 --topic topic01 --group group1
~窗口处于阻塞 等待状态
开启一个生产者 三个消费者
2.负载均衡
轮训消费
关闭两个
数据都发到了一个消费者
3.多消费组
添加一个消费组 group2
数据以广播的形式传输到两个消费者