Kafka
介绍
- an open-source distributed event streaming platform (分布式流处理平台)
- Kafka 是基于 Zookeeper 的分布式消息系统
- Kafka 具有高吞吐量,高性能、实时及高可靠等特点
基本概念
- Topics 一个虚拟的概念,由1到多个Partitions组成
- Partitions 实际消息存储单位
- Productor: 消息生产者
- Consumer: 消息消费者
安装Kafka
- Centos 7.2 以上版本 环境
- 安装 Java 环境
yum install -y lrzsz # 安装一些拷贝的命令
rz # 本地上传一些文件目录
mkdir /opt/install # 创建解压后文件放置目录(安装完成)
tar -zxvf jdk-8u181-linux-x64.tar.gz -C ../install/ # 解压文件
cd /opt/install # 进入解压后的文件目录
cd jdk1.8.0_181/
pwd # 复制目录位置
配置环境变量,末尾输入
vi /etc/profile
## JAVA_HOME
export JAVA_HOME=/opt/install/jdk1.8.0_181
## PATH
export PATH=$PATH:$JAVA_HOME/bin
激活环境变量
source /etc/profile
测试
java -version
- 安装 zookeeper
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C ../install/
cd /opt/install # 进入解压后的文件目录(安装完成)
配置环境变量
vim /etc/profile
export ZOOKEEPER_HOME=/opt/install/apache-zookeeper-3.5.7-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin
激活环境变量
source /etc/profile
修改配置文件
cd apache-zookeeper-3.5.7-bin/
cd conf
cp zoo_sample.cfg zoo.cfg # 备份一份原始配置文件
vi zoo.cfg
启动zookeeper
cd /opt/install/apache-zookeeper-3.5.7-bin/bin
./zkServer.sh start
- 安装 kafka
tar -zxvf kafka_2.11-2.4.0.tgz -C ../install/
cd /opt/install # 进入解压后的文件目录
添加环境变量
vim /etc/profile
添加内容
export KAFKA_HOME=/opt/install/kafka_2.11-2.4.0
export PATH=$PATH:$KAFKA_HOME/bin
激活环境变量
source /etc/profile
修改配置文件
cd /opt/install/kafka_2.11-2.4.0
cd config
cp server.properties server.properties.back # 备份原始配置文件
vi server.properties
目前没有host,先将写这台虚拟机的IP
listeners=PLAINTEXT://192.168.199.221:9092
advertised.listeners=PLAINTEXT://192.168.199.221:9092
后期根据情况会修改zookeeper的配置
基本命令
启动kafka
cd /opt/install/kafka_2.11-2.4.0/
bin/kafka-server-start.sh config/server.properties &
创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic freeflow-topic
查看创建的topic
bin/kafka-topics.sh --list --zookeeper localhost:2181
发送消息
IP写发送消息那台虚拟机的IP
bin/kafka-console-producer.sh --broker-list 192.168.199.221:9092 --topic freeflow-topic
有箭头表示启动成功了,可以编写要传递的消息了
接受消息
另启一个虚拟机窗口
IP写发送消息那台虚拟机的IP
bin/kafka-console-consumer.sh --bootstrap-server 192.168.199.221:9092 --topic freeflow-topic --from-beginning
生成方生成数据后,消费者就收到了数据