集群部署
-
安装kafka,版本:kafka_2.11-2.1.1.tgz
-
命令行工具:FinalShell
-
核心基础配置
-
broker.id
-
log.dirs
-
zookeeper.connect
-
#进入文件
cd config
vi server.properties
#修改配置
#broker 的全局唯一编号,不能重复的整数,所以集群中的节点都要改
broker.id=0
#kafka 运行日志存放的路径名,自己决定
log.dirs=kafka-logs
#配置连接 Zookeeper 集群地址
zookeeper.connect=master:2181
集群启动和停止脚本
#! kafka-cc.sh
case $1 in
"start"){
for i in master node01 node02
do
echo "**************$i started**************"
ssh $i "source /etc/profile;/opt/kafka_2.11-2.1.1/bin/kafka-server-start.sh -daemon /opt/kafka_2.11-2.1.1/config/server.properties"
done
};;
"stop"){
for i in master node01 node02
do
echo "**************$i stopped**************"
ssh $i "source /etc/profile;/opt/kafka_2.11-2.1.1/bin/kafka-server-stop.sh /opt/kafka_2.11-2.1.1/config/server.properties"
done
};;
esac
启动和停止命令
./bin/kafka-cc.sh start
./bin/kafka-cc.sh stop
操作
启动服务器
#集群启动zk集群——master上写了集群脚本
/bin/zkcc.sh start
#jps查看进程QuorumPeerMain,但还得查看状态,能看到角色模式:
#为leader或follower,即正常了说明成功
/bin/zkServer.sh status
#集群启动kafka——在master写了集群脚本
/bin/kafka-cc.sh start
#jps查看Kafka进程
创建Topic
#注意:master是虚拟机名字
#2181是zookeeper的默认端口号
#replication-factor副本数
#partitions分区数
#first主题名字
#创建主题,副本和分区
./bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic first
#修改分区
kafka-topics.sh --alter --zookeeper master:2181 --topic first --partitions 3
查看主题列表
bin/kafka-topics.sh --list --zookeeper master:2181
查看主题详情
bin/kafka-topics.sh --list --zookeeper master:2181
删除主题
bin/kafka-topics.sh --zookeeper master:2181 --delete --topic first
查看topic详情
bin/kafka-topics.sh --describe --topic first --zookeeper master:2181
生产消息
#master:虚拟机名称
#9092是kafka的默认端口号
bin/kafka-console-producer.sh --topic first --broker-list master:9092
消费消息:master节点上发送消息,node01节点上键入一下命令行:
#node01
bin/kafka-console-consumer.sh --topic first --bootstrap-server master:9092
node02上显示所有历史数据:node02消费
#node02
#--from-beginning显示topic的所有历史数据
bin/kafka-console-consumer.sh --topic first --bootstrap-server master:9092 --from-beginning
案例实践
Flume-Kafka实时数据测试
任务要求:Flume监控一个文件实时写到Kafka
#exec-kafka.conf
# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 描述和配置source组件:r1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /mnt/tmp.log
# 描述和配置sink组件:k1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = flumetopic
a1.sinks.k1.kafka.bootstrap.servers = master:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1
a1.sinks.ki.kafka.producer.compression.type = snappy
# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# 描述和配置source channel sink之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
#开启flume
./bin/flume-ng agent -c ./conf/ -f ./job/exec-kafka.conf -n a1 -Dflume.root.logger=INFO,console
FinalShell再打开同节点的新窗口1,找到目录,键入以下:
#kafka中创建主题flumetopic
./bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic flumetopic
#消费主题
./bin/kafka-console-consumer.sh --bootstrap-server master:9092 --from-beginning --topic flumetopic
FinalShell再打开同节点的新窗口2 ,找到目录,键入以下:
[root@master ~]# while true
> do
> echo `date`>>/mnt/tmp.log
> sleep 1
> done
此时可以查看到窗口1中的时间会实时输出。
下节,继续学习生成者,消费者,消息队列模型,分区分配策略、leader选举机制等一些原理性知识……