介绍
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。Producer即生产者,向Kafka集群发送消息,在发送消息之前,会对消息进行分类,即主题(Topic),通过对消息指定主题可以将消息分类,消费者可以只关注自己需要的Topic中的消息。Consumer,即消费者,消费者通过与kafka集群建立长连接的方式,不断地从集群中拉取消息,然后可以对这些消息进行处理。
环境配置
kafka是由scala和java编写的,所以我们要先安装配置scala
解压并配置环境变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| tar -zxvf scala-2.11.8.tgz -C /app/servers/
# 环境配置 [root@master scala-2.11.8]# vi /etc/profile #Scala Env export SCALA_HOME=/app/servers/scala-2.11.8 export PATH=$PATH:$SCALA_HOME/bin [root@master scala-2.11.8]# source /etc/profile
# 验证 [root@master servers]# scala -version Scala code runner version 2.11.8 -- Copyright 2002-2016, LAMP/EPFL
# 这个需要在剩下两个子节点重复步骤
|
安装配置和kafka
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| # 解压 tar -zxvf kafka_2.11-2.1.0.tgz -C /app/servers/ # 重命名 mv kafka_2.11-2.1.0/ kafka-2.1.0
# 配置环境变量 vim /etc/profile #Kafka Env export KAFKA_HOME=/app/servers/kafka-2.1.0 export PATH=$PATH:$KAFKA/bin source /etc/profile
# 修改server.properties文件,找到对应的位置,修改如下 [root@master servers]# vi kafka-2.1.0/config/server.properties broker.id=0 listeners=PLAINTEXT:192.168.77.138//:9092 advertised.listeners=PLAINTEXT://192.168.77.138:9092 zookeeper.connect=192.168.77.138:2181,192.168.77.139:2181,192.168.77.140:2181
# 把master节点上修改好的kafka整个文件夹传到其余两个子节点 # 在另外两个节点分别把broker.id 修改为1,2 # listeners 在ip哪里分别修改成子节点对应的,既 PLAINTEXT://192.168.77.139:9092 和 PLAINTEXT://192.168.77.140:9092 # 其他的不需要修改
|
测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| # 在三个节点分别启动该kafka [root@slave2 kafka-2.1.0]# nohup bin/kafka-server-start.sh /app/servers/kafka-2.1.0/config/server.properties & # 执行之后 输入jps 有kafka就说明成功了
# 主节点上创建主题TestTopic [root@master kafka-2.1.0]# bin/kafka-topics.sh --zookeeper 192.168.77.138:2181,192.168.77.139:2181,192.168.77.140:2181 --topic TestTopic --replication-factor 1 --partitions 1 --create
# 主节点启动一个生产者 [root@master kafka-2.1.0]# bin/kafka-console-producer.sh --broker-list 192.168.77.138:9092,192.168.77.139:9092,192.168.77.140:9092 --topic TestTopic >
# 在其他两个节点分别创建消费者 [root@slave1 kafka-2.1.0]# bin/kafka-console-consumer.sh --bootstrap-server 192.168.77.139:9092 --topic TestTopic --from-beginning [root@slave2 kafka-2.1.0]# bin/kafka-console-consumer.sh --bootstrap-server 192.168.77.140:9092 --topic TestTopic --from-beginning # 之后在主节点输入一段话: >hello world # 然后在另外两个节点也就是消费者那里也出现了这句话,即消费到了该数据
|
kafka配置完成