本文讨论:
• Kafka概览
• Setting up a single node and multinode Kafka cluster
• Producing data into a Kafka partition
• Using KafkaSpout in a Storm topology to consume messages from Kafka
kafka中,消息由producer发出,称为topics,它是一个可以被多个消费者消费的队列。kafka topic可以有多个分区,可以在每个分区并行读写,一个topic的每个分区的数据存储在disk的不同目录下,这些目录可以在不同的disk上,允许我们跨越单个disk的I/O限制,一个topic的两个分区可以被不同的brokers定位,这增加了吞吐量,因为每个分区相互独立。每个分区的消息有唯一对应的称为offset的序列号。
复制
为了容错,kafka支持复制一个topic的分区,选取一个broker作为分区的leader所有的读写都必须到leader分区。
消费者
消费者从broker读取消息区间。每个消费者有一个groupID。有相同groupID的消费者作为一个逻辑消费者,topic的每个消息从一个消费者组(有相同的groupID)分发到消费者。对一个特定的topic的不同消费者组可以以他们自己的节奏处理消息(因为消息在没被处理之前不会被删除)。
Brokers
Broker从producer接收消息(推机制)分发到消费者(拉机制),broker管理持久化消息到disk。对每个topic,它将在disk上创建一个目录。
数据滞留
Kafka中的topic 有个滞留时间,在broker配置文件里通过log.retention.minutes指定。这是个删除操作,非常有效。
单节点kafka
tar -xvzf kafka_2.8.0-0.8.1.1.tgz
cd kafka_2.8.0-0.8.1.1
配置环境变量
在$KAFKA_HOEM/config/server.properties里设置
log.dirs=/var/kafka-logs
zookeeper.connect=zoo1:2181,zoo2:2181,zoo3:2181
启动kafka
./bin/kafka-server-start.sh config/server.properties
创建topic
./bin/kafka-topics.sh --create --zookeeper zoo1:2181 --partitions
1 --replication-factor 1 --topic verification-topic
列出topic
./bin/kafka-topics.sh
--zookeeper zoo1:2181 --list
输出:verification-topic
利用kafka的命令行写几条消息
./bin/kafka-console-producer.sh --broker-list localhost:9092
--topic verification-topic
输入:
Message 1
Test Message 2
Message 3
启动消费者窗口
./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic
verification-topic --from-beginning
输出:Message 1
Test Message 2
Message 3
三个节点的kafka集群
和单节点的区别是server.properties:
broker.id=0 //各broker要唯一
port=9092
host.name=kafka1
log.dirs=/var/kafka-logs
zookeeper.connect=zoo1:2181,zoo2:2181,zoo3:2181
在三个节上启动kafka
./bin/kafka-server-start.sh config/server.properties
确认
创建消息
./bin/kafka-topics.sh --create --zookeeper zoo1:2181 --partitions
3 --replication-factor 1 --topic verification
列出消息
./bin/kafka-topics.sh --describe --zookeeper zoo1:2181 --topic
verification
Topic:verification PartitionCount:3
ReplicationFactor:1
Configs:
Topic: verification Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: verification Partition: 1 Leader: 1 Replicas: 0 Isr: 0
Topic: verification Partition: 2 Leader: 2 Replicas: 0 Isr: 0
核实kafka
./bin/kafka-console-producer.sh --broker-list kafka1:9092,kafka2:9
092,kafka3:9092 --topic verification
这里kafka1是broker的IP
写入消息
First
Second
Third
启动消费者
./bin/kafka-console-consumer.sh --zookeeper zoo1:2181 --topic
verification --from-beginning