一、输入源1.基本输入源2.高级输入源3.Kafka架构Kafka术语Kafka工作流程Kafka存储机制数据可靠性保证Kafka消费者—消费方式Kafka消费者—分区分配策略Kafka消费者—offset维护
一、输入源
1.基本输入源
- 文件源
- SBT
Scala打包工具
- 套接字流
- Socket端口监听
- TCP全双工和点对点
- TCP连接Internet两台主机上的两个进程:发送进程+接收进程
- RDD队列流
- 数据源不断产生RDD
- 队列流
2.高级输入源
- kafka
- Flume
3.Kafka架构
- 数据交换枢纽(关系型数据库、NoSQL数据库、流处理系统、批处理系统)
- 分布式发布订阅消息系统
- 在线实时处理和批量离线处理
- Kafka本质是一个MQ(Message Queue)
- 解耦
- 可恢复性
- 缓冲
- 灵活性
- 异步通信
Kafka术语
- Producer:消息生产者,向Kafka Broker发消息的客户端
- Consumer:消息消费者,从Kafka Broker取消息的客户端
- Consumer Group:消费者组(CG)
- Broker:一台Kafka机器就是一个Broker;集群有多个Broker组成
- Topic:将消息分类
- Partition
- Replica
- Leader
- Follower
- offset:消费者消费的位置信息
- Zookeeper:Kafka集群的正常工作依赖于Zookeeper存储和管理集群信息
Kafka工作流程
Kafka存储机制
数据可靠性保证
Kafka提供三种可靠性,用户根据可靠性与延迟需求进行权衡。
ACK参数配置:
- 0:Producer不等待Broker的ACK。保证数据不重复
- 1:Producer等待Broker的ACK,Leader落盘成功返回ACK,如果Follower同步成功之前Leader故障,那么数据丢失。
- -1(all):ProducerBroker的ACK,partition和Follower全部落盘成功才返回ACK。保证数据不丢失
- At Least Once
- At Most Once
- Exactly Once
- 0.11版本后,引入幂等性,只会持久化一次
At Least Once + 幂等性 = Exactly Once
Kafka消费者—消费方式
- push
- pull(更适合kafka)
Kafka消费者—分区分配策略
- Range
只针对于每个topic,每个topic没有关联
- RoundRobin轮询方式
消费者按字典排序
Kafka消费者—offset维护
- 0.9版本前保存在Zookeeper,0.9版本开始,Consumer默认保存在Topic。