分布式kafka_2.12-1.0.2
2.12为scala的版本,1.0.2为kafka的版本
开源的由scala和java编写的高吞吐量的分布式发布订阅消息系统
配置环境变量
vi ~/.bash_profile
source ~/.bash_profile
export KAFKA_HOME=/home/hadoop/kafka/kafka_2.12-1.0.2
${KAFKA_HOME}/bin
修改server.properties
#当前机器在集群中的唯一标识,和zk的myid性质一样
broker.id=1
#当前机器的ip
host.name=192.168.218.133
num.network.threads=9
num.io.threads=16
log.flush.interval.messages=10000
log.flush.interval.ms=1000
socket.send.buffer.bytes=1048576
socket.receive.buffer.bytes=1048576
socket.request.max.bytes=104857600
#kafka的日志输出路径
log.dirs=/home/hadoop/kafka/kafka-logs
num.partitions=9
num.recovery.threads.per.data.dir=1
log.retention.hours=1
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=master:2181,slave1:2181,slave2:2181
zookeeper.connection.timeout.ms=60000
根据kafka配置创建日志目录
mkdir -p /home/hadoop/kafka/kafka-logs
同步kafka到其他节点,修改其他节点的环境变量和配置文件
scp -r ~/kafka hadoop@slave1:~
scp -r ~/kafka hadoop@slave2:~
启动zk
启动kafka
在kafka集群所有节点上运行如下命令:
kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
检查kafka状态
jps -l
随便找一个节点创建topic
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic mytest
换一个节点查看创建的topic
kafka-topics.sh --list --zookeeper localhost:2181
到zk集群上查看创建的topic
zkCli.sh
ls /
ls /brokers
ls /brokers/topics
发送消息
kafka-console-producer.sh --broker-list slave2:9092 --topic mytest
接收消息
kafka-console-consumer.sh --zookeeper slave1:2181 --from-beginning --topic mytest
脚本启动或停止kafka集群
启动kafka
vi start-kafka-all.sh
chmod u+x start-kafka-all.sh
#!/bin/bash
#启动kafka集群
kafkaHost=('master' 'slave1' 'slave2')
for kafka in ${kafkaHost[@]}
do
echo "start kafka in $kafka"
ssh hadoop@${kafka} "source ~/.bash_profile && kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties"
done
停止kafka
vi stop-kafka-all.sh
chmod u+x stop-kafka-all.sh
#!/bin/bash
#停止kafka集群
kafkaHost=('master' 'slave1' 'slave2')
for kafka in ${kafkaHost[@]}
do
echo "stop kafka in $kafka"
ssh ${kafka} "kill -9 `ssh ${kafka} ps -ef | grep kafka | awk '{print $2}' | head -n 1`" >/dev/null 2>&1
done
kafka相关术语介绍
broker |
以集群的方式运行由一个或多个服务组成,每一个服务叫做一个broker |
topic 主题 |
通过对消息指定主题可以将消息进行分类,消费者可以只关注自己需要订阅 的topic中的消息 |
partition 分区 |
topic物理上的分区,每一个topic包含一个或多个partition,每一个partition都是一个有序的队列,创建topic时可以指定分区数目,分区数越多其吞吐量越大,所需资源也越多,导致更高的不可用性 |
producer 消息生产者 |
发布消息到broker。在发送消息之前会对消息进行分类即topic
|
consumer 消息消费者 |
向broker读取消息的客户端 |
consumer group |
|
|
|
|
|