在安装Kafka之前,需要了解一些Kafka的概念
Broker : 安装Kafka服务的一台机器就是一个broker(broker的id要全局唯一)
Producer :消息生产者,负责将数据写入到broker中(push)
Consumer:消息消费者,负责从kafka中读取数据(pull),旧版本的消费者需要依赖zk,新版本的不需要
replication:副本(数据保存份数,保证数据不会丢失)
partition:分区,一个物理分区,一个分区就是一个文件,一个topic可以有多个分区,每一个分区都有自己的副本
Topic: 主题,相当于数据的一个分类,不同topic存放不同的数据
Consumer Group: 消费者组,一个topic可以有多个消费者同时消费,一个消费者组中的多个消费者不能重复消费数据
本文以Spark 2.2.1,Kafka 0.10.2.1为例。
根据官网,Spark Streaming 2.2.1 兼容Kafka 0.8.2.1以上版本,主要支持0.8和0.10这两个版本



前提: 已安装zookeeper集群,保证zk可以正常使用
1. 上传,解压Kafka安装包

2. 修改配置文件(/config/server.properties)

A.broker.id (全局唯一)
broker.id=0
B. 监听地址
listeners=PLAINTEXT://bigdata01:9092

B. 写入kafka的数据存储的位置(并非执行log日志)
log.dirs=/root/app/kafka_2.11-0.10.2.1/data
C.分区数量(可改可不改)
num.partitions=3
D. zk地址
zookeeper.connect=bigdata01:2181,bigdata02:2181,bigdata03:2181

E.保存退出,将配置完成的Kafka拷贝到其他机器
F.修改broker.id、listeners
bigdata02:broker.id=1
listeners=PLAINTEXT://bigdata02:9092
bigdata03:broker.id=2
listeners=PLAINTEXT://bigdata03:9092
3. 启动Kafka
/root/app/kafka_2.11-1.1.0/bin/kafka-server-start.sh -daemon /root/app/kafka_2.11-1.1.0/config/server.properties

再把其他两台也启动。
4. 往Kafka写入数据
写入数据,意味着需要开启一个生产者和一个消费者,这就需要首先开启一个topic,创建一个topic
4.1 查看topic信息(topic信息保存在zookeeper中)
/root/app/kafka_2.11-1.1.0/bin/kafka-topics.sh --list --zookeeper bigdata01:2181,bigdata02:2181,bigdata03:2181
4.1 创建topic
/root/app/kafka_2.11-1.1.0/bin/kafka-topics.sh --create --zookeeper bigdata01:2181,bigdata02:2181,bigdata03:2181 --replication-factor 3 --partitions 3 --topic helloTopic1
replication-factor 数据保存副本数量
partitions 分区数量

4.2 往topic中写入数据(启动一个生产者)
/root/app/kafka_2.11-1.1.0/bin/kafka-console-producer.sh --broker-list bigdata01:9092 --topic helloTopic1

4.3 启动一个消费者(可以消费到数据)
/root/app/kafka_2.11-1.1.0/bin/kafka-console-consumer.sh --zookeeper bigdata01:2181,bigdata02:2181,bigdata03:2181 --topic helloTopic1

关于第一个hello没有消费到,只需要在启动消费者的时候加一个–from-beginning就可以了

4.4 查看topic
/root/app/kafka_2.11-1.1.0/bin/kafka-topics.sh --describe --zookeeper bigdata01:2181,bigdata02:2181,bigdata03:2181 --topic helloTopic1

PartitionCount:分区数量
ReplicationFactor:副本
Leader:活跃分区(kafka进程不分主从,但分区有leader和follower分区,leader分区负责读写,follower分区负责同步数据(也可以配置读数据)),这样设计可以将读写的压力均摊到多台机器
Isr:当前可用的副本节点(正在提供服务的副本)

1346

被折叠的 条评论
为什么被折叠?



