一、FlinkX实时采集功能的基本介绍

首先为大家介绍下FlinkX实时模块的分类,如下图所示:

1、实时采集模块(CDC)

1)MySQL Binlog插件

利用阿里开源的Canal组件实时从MySQL中捕获变更数据。

2)PostgreSQL Wal插件

PostgreSQL 实时采集是基于 PostgreSQL的逻辑复制以及逻辑解码功能来完成的。逻辑复制同步数据的原理是,在Wal日志产生的数据库上,由逻辑解析模块对Wal日志进行初步的解析,它的解析结果为ReorderBufferChange(可以简单理解为HeapTupleData),再由Pgoutput Plugin对中间结果进行过滤和消息化拼接后,然后将其发送到订阅端,订阅端通过逻辑解码功能进行解析。

2、消息队列

1)Kafka:Kafka插件存在四个版本,根据Kafka版本的不同,插件名称也略有不同。具体对应关系如下表所示:

2)EMQX:EMQX 是一款完全开源,高度可伸缩,高可用的分布式MQTT消息服务器,适用于IoT、M2M 和移动应用程序,可处理千万级别的并发客户端。

3、间隔轮询

RDB类型插件的使用限制:

  • 只有RDB类型的reader插件支持间隔轮询
  • 轮询字段只能为数值类型或者时间类型
  • 轮询字段只能为连续递增且不重复

4、其他

Hive插件: Hive插件只有写入插件,功能基于HDFS的写入插件实现,也就是说从实时采集插件读取,写入Hive也支持失败恢复的功能。

二、Binlog实时采集原理

1、什么是Binlog

MySQL 的二进制日志 Binlog 可以说是 MySQL 最重要的日志,它记录了所有的 DDL 和 DML 语句(除了数据查询语句Select、Show等),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的,Binlog 的主要目的是复制和恢复。

2、Binlog插件基本原理

实时采集插件的核心是如何实时捕获数据库数据的变更,对于MySQL数据库而言,阿里开源的Canal已经很好的帮我们实现了基于MySQL数据库增量日志解析,提供增量数据订阅和消费功能。因此这里我们直接用Canal捕获MySQL数据库数据的变更信息,基于FlinkX框架将任务简化成脚本的配置,基于Flink的Checkpoint机制提供了任务的故障恢复,提高了任务的容错性。

基本步骤如下:

  • 任务启动时启动Canal线程
  • Canal模拟MySQL slave的交互协议,伪装自己为MySQL slave,向MySQL master发送dump协议
  • MySQL master收到dump请求,开始推送Binary Log给slave(即Canal)
  • Canal解析Binary Log 对象(原始为Byte流)
  • FlinkX获取Canal解析后的对象做二次解析,封装后发送至下游数据源

三、Binlog到Hive实战

1、环境准备:确认数据库开启了Binlog

show variables like '%log_bin%';

2、建表

CREATE TABLE `kudu` (    `id` bigint(11) NOT NULL AUTO_INCREMENT,    `user_id` bigint(11) DEFAULT NULL,    `name` varchar(255) DEFAULT NULL,    PRIMARY KEY (`id`)  ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4



©著作权归作者所有:来自51CTO博客作者数栈DTinsight的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 技术干货 | mPaaS 框架下如何使用 Crash SDK 对闪退进行分析?
  2. Grafana 之 kubeGraf插件安装使用
  3. CI/CD笔记-Jenkins的基本管理
  4. 原创 | 微服务网关 Kong 科普
  5. 日均万亿事件:Netflix怎么做实时流处理?
  6. Flume+Morphlines实现数据的实时ETL
  7. 2017年Apache Spark两大发展方向:深度学习和提升实时流性能
  8. 基于 Flink 的实时特征平台在携程的应用
  9. Flink在唯品会的实践

随机推荐

  1. 【email】android邮件Email
  2. Android(三)Android SDK无法更新解决方式
  3. Android Animation动画(Frame-By-Frame An
  4. android > android 客户端 ,PHP 服务器端
  5. 2011.12.05(4)——— android JNI学习之三
  6. 解析错误:解析软件包时出现问题
  7. Android 动画框架代码分析
  8. This android SDk requires Android deve
  9. 浅谈Android下拉菜单Spinner
  10. Error:(15) No resource identifier foun