1.Kafka依赖说明
ZooKeeper是一个分布式协调服务,它的主要作用是为分布式系统提供一致性服务,提供的功能包括:配置维护、命名服务、分布式同步、组服务等。Kafka的运行依赖ZooKeeper。
1.下载安装包
注意事项:
注意zookeeper中的版本必须与kafka中zookeeper的jar包的版本一样
要先下载kafka 然后下载zookeeper下载时不能下载这个:apache-zookeeper-3.6.2.tar.gz ,它不带src和一个jar
当然如果你只是单机版的也可以不用安装zookeeper,因为kafka_2.13-2.6.0中自带zookeeper

cd /usr/local/src
//下载kafka
wget http://mirrors.hust.edu.cn/apache/kafka/2.6.0/kafka_2.13-2.6.0.tgz
//解压
tar -zxvf kafka_2.13-2.6.0.tgz 
查看版本:
cd kafka_2.13-2.6.0/libs
ls

zookeeper包就下载这个

kafka还需要zookeeper吗 kafka必须依赖zookeeper吗_apache


下载zookeeper

wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz
tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz

安装zookeeper

1.修改配置文件

cd /usr/local/src/apache-zookeeper-3.5.8-bin/conf
cp zoo_sample.cfg zoo.cfg

启动测试

cd /usr/local/src/apache-zookeeper-3.5.8-bin/bin
//启动
./zkServer.sh start
//停止
./zkServer.sh stop

以下代表成功

kafka还需要zookeeper吗 kafka必须依赖zookeeper吗_kafka_02

ps -ef|grep zookeeper

kafka还需要zookeeper吗 kafka必须依赖zookeeper吗_kafka_03

zookeeper系统启动配置(下面两种启动方式选一种就行)

(1)加入系统命令:

vi /etc/profile
export PATH=$PATH:/usr/local/src/apache-zookeeper-3.5.8-bin/bin
source /etc/profile

启动方式:

zkServer.sh start
zkServer.sh stop

(2)增加systemd(使用systemctl )管理

vi /etc/systemd/system/zookeeper.service
[Unit]
Description=zookeeper.service
After=network.target
ConditionPathExists=/usr/local/src/apache-zookeeper-3.5.8-bin/conf/zoo.cfg
[Service]
Type=forking
User=root
Group=root
ExecStart=/usr/local/src/apache-zookeeper-3.5.8-bin/bin/zkServer.sh start
ExecStop=/usr/local/src/apache-zookeeper-3.5.8-bin/bin/zkServer.sh stop
[Install]
WantedBy=multi-user.target

启动方式

//启动
systemctl start zookeeper
//停止
systemctl stop zookeeper

配置kafka

(1)配置server.properties

cd kafka_2.13-2.6.0

vi /usr/local/src/kafka_2.13-2.6.0/config/server.properties

advertised.listeners=PLAINTEXT://localhost:9092
//指定服务的端口
listeners=PLAINTEXT://localhost:9092
//dataDir是数据存放位置,默认是/tmp/kafka-logs
dataDir=xxxx
//这个是删除topic时才用得到的,如果不想删除topic,可以不加
 delete.topic.enable=true

默认配置 # advertised.listeners=PLAINTEXT://:your.host.name:9092 修改为 advertised.listeners=PLAINTEXT://localhost:9092
listeners=PLAINTEXT://localhost:9092
说明:advertised.listeners 表示生产者和消费者在一起 ,如果生产者和消费者不在同一台服务器上则分开配置
localhost:9092 :规定访问ip和端口 如果只允许本地访问 则用 localhost ,如果是所有的网络等能用则用:0.0.0.0或空

启动kafka
启动Kafka 首先要启动ZooKeeper
kafka会自带ZooKeeper(注意:Kafka是用zookeeper来存储元数据,生产环境请一定要部署一个独立的zookeeper集群(至少3个 节点))

前端启动
bin/kafka-server-start.sh config/server.properties
后台启动
nohup bin/kafka-server-start.sh config/server.properties >> /dev/null &

创建topic(2181必须是zookeeper的端口号)

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

topic字段说明:
–replication-factor 3 备份因子 副本数 3
–partitions 1 分片数 这个主题有几个分片
创建了一个有一个分片,每个分片有3个副本的主题 my-13-topic 。
分片是对主题Topic 的数据的分布式存储,它是对数据的物理分割 。 但它本身是一个逻辑概念。
分片的存储实体是副本 3个副本,就是这个分片的数据会存3份。
bin/kafka-topics.sh --create --bootstrap-server 192.168.100.12:9092 --replication-factor 3 --partitions 1 --topic my-13-topic
bin/kafka-topics.sh --describe --bootstrap-server 192.168.100.12:9092 --topic my-13-topic
bin/kafka-topics.sh --create --bootstrap-server 39.96.13.43:9092 --replication-factor 3 --partitions 3 --topic my-43-topic

创建生产者 (启动成功会阻塞 需要另外重新打开 可以在控制台输出生产者数据 消费者能及时消费)
–broker-list:数指定了所使用的broker(Broker:Kafka 集群包含一个或多个服务器,这种服务器被称为 broker)

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

kafka还需要zookeeper吗 kafka必须依赖zookeeper吗_kafka还需要zookeeper吗_04


创建消费者

字段说明:–bootstrap-server 从kafka开始 新的消费者 使用的参数设置

from-beginning 读取历史未消费的数据

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

测试结果:

生产者

kafka还需要zookeeper吗 kafka必须依赖zookeeper吗_kafka还需要zookeeper吗_05


消费者

kafka还需要zookeeper吗 kafka必须依赖zookeeper吗_apache_06

配置系统命令

vi /etc/profile
export PATH=$PATH:/usr/local/src/kafka_2.13-2.6.0/bin
source /etc/profile

kafka还需要zookeeper吗 kafka必须依赖zookeeper吗_kafka还需要zookeeper吗_07


kafka的一些使用

kafka topic
kafka-topics.sh 
生产者
kafka-console-producer.sh
消费者
kafka-console-consumer.sh

topic的操作:

查看列表
kafka-topics.sh --zookeeper 127.0.0.1:2181 --list
添加
kafka-topics.sh --create --replication-factor 1 --partitions 1 --topic test --zookeeper localhost:2181/kafka
查看某个topic
kafka-topics.sh --zookeeper localhost:2181 --describe --topic test
删除topic(分两步)
(第一步)
kafka-topics.sh  --delete --zookeeper localhost:2181 --topic test
(第二步 找到top存放位置:server.properties中dataDir)
cd /tmp/kafka-log
删除 test-0
rm -rf test-0

kafka还需要zookeeper吗 kafka必须依赖zookeeper吗_apache_08