1. 简介
kafka (官网地址:http://kafka.apache.org)是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率。
i. 消息的发布(publish)称作producer,消息的订阅(subscribe)称作consumer,中间的存储阵列称作broker。
ii. 多个broker协同合作,producer、consumer和broker三者之间通过zookeeper来协调请求和转发。
iii. producer产生和推送(push)数据到broker,consumer从broker拉取(pull)数据并进行处理。
iv. broker端不维护数据的消费状态,提升了性能。
v. 直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收。
vi. Kafka使用scala编写,可以运行在JVM上。
2. 安装:
创建用户:
[root@localhost ~]##建立用户,并指定所属用组
[root@localhost ~]#useradd -d /home/kafka -g escgrp -m kafka
[root@localhost ~]##修改用户密码
[root@localhost ~]#passwd kafka
passwd: all authentication tokens updated successfully.
安装JRE/JDK
$pwd
/home/kafka
$unzip jdk1.8.0_112.zip
$chmod -R 755 jdk1.8.0_112
检查修改各用户配置文件参数
$vi .bash_profile
JAVA_HOME=/home/kafka/jdk1.8.0_11
export JAVA_HOME
PATH=$JAVA_HOME/bin:$HOME/bin:$PATH
export PATH
export LANG=zh_CN.utf8
保存退出,使用之生效
$. .bash_profile
检查jdk变量是否设置成功
$java -version
在安装kafka之前先把zookeeper集群打开,安装部署zookeeper网上找教程
3.下载kafka
进入下载页面:
解压 :
tar -xzvf kafka_2.11-0.11.tgz
http://kafka.apache.org/downloads.html
修改配置
$kafka/kafka_2.11-0.11.0.0/config/server.properties
#broker标识,id为正数,且全局不能重复(有几台kafkaserver配置几个broker)
broker.id=0
# broker监听请求的socket地址
listeners=PLAINTEXT://:9092
port=9092
host.name=192.168.1.181
#日志文件保存目录(此目录可以自定义)
log.dirs=/home/kafka/kafka-2.11_myself_logs
#zookeeper管理的地址ip1:port1,ip2:port2……
zookeeper.connect=localhost:2181
4、启动Kafka
bin/kafka-server-start.sh -daemon config/server.properties &
查看kafka进程:
ps -ef|grep java
或者利用jps:
关闭kafka
- kafka-server-stop.sh总是无法成功所以利用以下办法:
kill -s TERM $(jps -l | grep 'kafka\.Kafka' | awk '{print $1}')
测试:
启动2个XSHELL客户端,一个用于生产者发送消息,一个用于消费者接受消息。
运行producer,随机敲入几个字符,相当于把这个敲入的字符消息发送给队列。
bin/kafka-console-producer.sh --broker-list 192.168.75.131:9092 --topic test
说明:早版本的Kafka,–broker-list 192.168.75.131:9092需改为–zookeeper 192.168.75.131:2181
运行consumer,可以看到刚才发送的消息列表。
bin/kafka-console-consumer.sh --zookeeper 192.168.75.131:2181 --topic test --from-beginning
注意:
producer,指定的Socket(192.168.75.131+9092),说明生产者的消息要发往kafka,也即是broker
consumer, 指定的Socket(192.168.75.131+2181),说明消费者的消息来自zookeeper(协调转发)
上面的IP地址要看你具体的地址
搭建一个多个broker的伪集群
- 仿照上面的配置文件Server.properties,建立另个Server1.properties
#broker标识,id为正数,且全局不能重复(有几台kafkaserver配置几个broker)
broker.id=1
# broker监听请求的socket地址
listeners=PLAINTEXT://:9093
port=9093
host.name=192.168.1.181
#日志文件保存目录(此目录可以自定义)
log.dirs=/home/kafka/kafka-2.11_myself_logs1
#zookeeper管理的地址ip1:port1,ip2:port2……
zookeeper.connect=localhost:2181
再建立Server2.properties 上面配置类推
2. 启动所有的broker
命令如下:
bin/kafka-server-start.sh -daemon config/server.properties & #启动broker
bin/kafka-server-start.sh -daemon config/server1.properties & #启动broker1
bin/kafka-server-start.sh -daemon config/server2.properties & #启动broker2
(3)创建topic
bin/kafka-topics.sh --create --topic agent2flow --partitions 1 --replication-factor 3 \--zookeeper localhost:2181
可以再次输入查看一共有哪些主题
./kafka-topics.sh --list --zookeeper 192.168.75.131:2181
再创建生产者和消费者尝试发送信息即可测试是否成功