kafka
是一个分布式的,容错的,高效的消息通到。主要用于做实时的数据流、构建实时应用等。
设计目标:为处理实时数据提供一个统一、高吞吐量、低延迟的平台。
kafka是一个分布式消息队列:生产者、消费者的功能。
启动:先保证zk集群启动
再启动kafka
[root@hadoop01 kafka_2.11-1.1.1]# nohup ./bin/kafka-server-start.sh ./config/server.properties > /var/log/kafka.log 2>&1 &
[root@hadoop02 kafka_2.11-1.1.1]# nohup ./bin/kafka-server-start.sh ./config/server.properties > /var/log/kafka.log 2>&1 &
[root@hadoop03 kafka_2.11-1.1.1]# nohup ./bin/kafka-server-start.sh ./config/server.properties > /var/log/kafka.log 2>&1 &
关闭:./bin/kafka-server-stop.sh
组成:
Broker(代理): Kafka 节点,一个 Kafka 节点就是一个 broker,多个 broker 可以组成一个 Kafka 集群,每一个broker可以有多个topic。(一个虚拟机对应一个Broker)
Producer(生产者): 生产 message (数据)发送到 topic。
Consumer(消费者): 订阅 topic 消费 message,consumer 作为一个线程来消费。
Consumer Group(消费组): 一个 Consumer Group 包含多个 consumer,这个是预先在配置文件中配置好的。
Topic(主题): 一种类别,每一条发送到kafka集群的消息都可以有一个类别,这个类别叫做topic,不同的消息会进行分开存储,如果topic很大,可以分布到多个broker上,例如 page view 日志、click 日志
等都可以以 topic的形式存在,Kafka 集群能够同时负责多个 topic 的分发。也可以这样理解:topic被认为是一个队列,每一条消息都必须指定它的topic,可以说我们需要明确把消息放入哪一个队列。
Partition(分区): topic 物理上的分组,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。
Replicas(副本): 每一个分区,根据副本因子N,会有N个副本。比如在broker1上有一个topic,分区为topic-1, 副本因子为2,那么在两个broker的数据目录里,就都有一个topic-1,其中一个是leader,一个replicas。
Segment: partition 物理上由多个 segment 组成,每个 Segment 存着 message 信息。
四大核心API
Producer API(生产者API)允许一个应用程序去推送流式记录到一个或者多个kafka的topic中。
Consumer API(消费者API)允许一个应用程序去订阅消费一个或者多个主题,并处理生产给他们的流式记录。
Streams API(流式API)允许应用程序作为一个流处理器,消费一个或多个主题的输入流,并生成一个或多个主题到输出流,从而有效地将输入流转换为输出流。
Connector API(连接器API)允许构建和运行将Kafka主题连接到已经存在应用程序或数据系统的可重用生产者或消费者。例如,到关系数据库的连接器可能捕获对表的每个更改。