confluent介绍
服务功能组成:
Zookeeper、Kafka
Control Center、Kafka-rest、Schema-Registry、Connect、ksql-server 。详情可参考Confluent介绍及其使用
实时数据管理功能:表同步、指标实时统计、诊断程序链、监测数据服务等
KSQLDB
通过将ksqlDB简化为仅两件事,有助于简化如何编写和部署流数据管道:存储(Kafka)和计算(ksqlDB)。
可以使用一致,强大的SQL语言将所有流转换,合并和聚合在一起,管理数据管道的端到端流。
KSQL
KSQL是一个用于Apache kafka的流式SQL引擎,KSQL在内部使用Kafka的Streams API,并且它们共享与Kafka流处理相同的核心抽象,KSQL有两个核心抽象,对应于到Kafka Streams中的两个核心抽象(实时流、实时表),可以处理kafka的topic数据。
流:为了实现毫秒级处理延迟,采用一次记录一次处理。此外,随着记录的延迟到来,它支持基于事件时间的窗口操作。
每个实时流、实时表分别对应一个kafka主题
实时表和实时流区别在于,1.实时表会更新数据,实时流只会增加数据。2.实时表需要使用聚合函数
avro
Avro是一个数据序列化系统,用于支持大批量数据交换的应用。
主要特点:支持二进制序列化方式,可以便捷,快速地处理大量数据;动态语言友好,Avro依赖模式(Schema)来实现数据结构定义。
详情,可参考Apache Avro是什么干什么用的(RPC/序列化)
Kafka Connect和Schema Registry
topic包含了消息,每个消息是键值对类型,可以被序列化avro,json,protobuf。schema定义了数据结构。Schema Registry 定义了schema包含的范围(subject)。
Schema Registry 管理编/解码使用的 Schema、处理编码或解码请求并返回结果。为Kafka消费者和Kafka生产商管理Avro Schemas。
-
为每个注册的模式分配全局唯一ID。保证分配的ID单调增加,但不一定连续。
-
Kafka提供了持久的后端,并充当Schema Registry及其所包含架构的状态的预写更改日志。
-
Schema Registry设计为具有单一主节点体系结构的分布式,并且ZooKeeper / Kafka协调主要节点(基于配置)。
从kafka读取或写入数据时,使用转换类可以让Kafka Connect部署支持特定格式数据。反之,任务使用转换器改变数据格式从字节到连接器内部数据格式。
JsonSchemaConverter io.confluent.connect.json.JsonSchemaConverter
: use with Schema Registry(所有schema被一个schema Registry管理)
JsonConverter org.apache.kafka.connect.json.JsonConverter
(without Schema Registry): use with structured data
连接器和转换器解耦,jdbc数据源使用avro转换器,可以写入到HDFS。
同步模式
全量:bulk
增量:时间戳,自增主键,时间戳+自增主键
connector
kafka安装目录config下
source:file-source、jdbc-source、hdfs-source
sink:elasticsearch-sink、jdbc-sink
KAFKA
定义:
- Apache Kafka是一个开源消息系统,由Scala写成。
- 为处理实时数据提供一个统一、高通量、低等待的平台。
- Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。
- 依赖于zookeeper集群保存一些meta信息,来保证系统可用性。
补充:
- 是一个队列,不是一个数据库
- 可用offset和timestamp定位消息
Kafka命令行操作:
1)查看当前服务器中的所有topic
bin/kafka-topics.sh --zookeeper hadoop102:2181 --list
2)创建topic
bin/kafka-topics.sh --zookeeper hadoop102:2181 \
--create --replication-factor 3 --partitions 1 --topic first
选项说明:
–topic 定义topic名
–replication-factor 定义副本数
–partitions 定义分区数
3)删除topic
bin/kafka-topics.sh --zookeeper hadoop102:2181 \
--delete --topic first
需要server.properties中设置delete.topic.enable=true否则只是标记删除或者直接重启。
4)发送消息
bin/kafka-console-producer.sh \
--broker-list hadoop102:9092 --topic first
5)消费消息
bin/kafka-console-consumer.sh \
--zookeeper hadoop102:2181 --from-beginning --topic first