含义:消息队列技术是分布式应用间交换信息的一种技术
作为一层中间中间存储介质,隔离生产者和消费者。 kafka producer 端写入多个 partition。partition 之间的数据是不相同的,同一个 partition 的数据是有序的。同一个组的 consumer 消费 partition 的时候,每个 consumer 根据一定的策略消费一个或者多个 partition,同一个 partition 只会被一个 consumer 消费,所以当 partition 不够用的时候,多余的 consumer 无法消费,为了保证性能,需要将 partition 的数量进行设置。
partition 可以配置多个备份,选取一个作为 leader 对外进行读写,协调信息在集群环境下由 zookeeper 保存。
- config/server.properties
启动 zookeeper
- bin/zookeeper-server-start.sh config/zookeeper.properties
启动 kafka
- bin/kafka-server-start.sh config/server.properties
- cp config/server.properties config/server-1.properties config/server-2.properties
分别启动这两个 kafka
- bin/kafka-server-start.sh config/server-1.properties &
- config/server-1.properties:
- broker.id=1
- port=9093
- log.dir=/tmp/kafka-logs-1
-
- config/server-2.properties:
- broker.id=2
- port=9094
- log.dir=/tmp/kafka-logs-2
-
- bin/kafka-topics.sh --list --zookeeper 10.18.210.207:2181,10.18.210.208:2181,10.18.210.209:2181
- bin/kafka-topics.sh --create --zookeeper 10.18.210.207:2181,10.18.210.208:2181,10.18.210.209:2181 --replication-factor 1 --partitions 1 --topic basp_basp
- bin/kafka-topics.sh --describe --zookeeper 10.18.210.207:2181,10.18.210.208:2181,10.18.210.209:2181 --topic ws_vod
- bin/kafka-console-producer.sh --broker-list 10.18.210.207:9092,10.18.210.208:9093,10.18.210.209:9094 --topic test_test
- bin/kafka-console-consumer.sh --zookeeper 10.18.210.207:2181,10.18.210.208:2181,10.18.210.209:2181 --topic test_topic [--from-beginning]
stop kafka 集群要每天机器都要关闭
- ./bin/kafka-server-stop.sh ./config/server-1.properties
删除 zookeeper 中的 topic 记录
- -# /usr/local/share/zookeeper/bin/zkCli.sh -server 10.18.210.207:2181,10.18.210.208:2181,10.18.210.209:2181 rm -rf /brokers/topics/*
- 或者
- deleteall /brokers/topics/sometopic
删除 kafka 的日志项
- cd /tmp/kafa-logs
rm -rf topics(topic对应的文件夹),注意是集群中多台机器
Kafka 是一个通用型系统。你可以有许多的生产者和消费者分享多个主题。相反地,Flume 被设计成特定用途的工作,特定地向 HDFS 和 HBase 发送出去。
Flume 拥有许多配置的来源 (sources) 和存储池 (sinks)。然后,Kafka 拥有的是非常小的生产者和消费者环境体系,Kafka 社区并不是非常支持这样。
Flume 可以在拦截器里面实时处理数据。这个特性对于过滤数据非常有用。Kafka 需要一个外部系统帮助处理数据
无论是 Kafka 或是 Flume,两个系统都可以保证不丢失数据。
Flume 和 Kafka 可以一起工作的。如果你需要把流式数据从 Kafka 转移到 Hadoop,可以使用 Flume 代理 (agent),将 kafka 当作一个来源 (source),这样可以从 Kafka 读取数据到 Hadoop。