实时采集概述

在流计算的场景中,典型的方案是将数据实时打入到Kafka,再由流计算引擎从Kafka中读取数据完成分析处理

1575707313737 cbdd1653 9ea9 487b ad47 a4ea00afb95e

实时采集简介

类似离线数据同步的概念,实时采集依然提供一套抽象化的数据抽取插件(称之为Reader)、数据写入插件(称之为Writer),并基于此框架设计一套简化版的中间数据传输格式,从而达到任意结构化、半结构化数据源之间实时传输。

支持数据源类型

当前版本的流计算支持的数据源较为有限,目前支持数据源如下:

  • MySQL

  • Oracle

  • SQL Server

  • Polardb for MySQL 8

  • EMQ

  • Kafka

  • Restful API

  • WebSocket

  • Socket

  • Beats

未来会扩充如下数据源:

  • KafkaDistribute

  • Netty

  • TCP

  • stdin

  • 文件

  • Redis

  • ElasticSearch

  • MongoDB

支持写入模式

实时采集

数据源

支持

MySQL

Kafka、Hive、HDFS

Oracle

Kafka、Hive、HDFS

Kafka

Kafka、HDFS、Hive(手动选表或DDL建表)

SQL Server

Kafka、Hive、HDFS

PolarDB for MySQL 8

Kafka、Hive、HDFS

EMQ

Kafka、Hive

TIDB

Kafka、Hive、HDFS

DB2

Kafka

Restful API

Kafka

Socket

Kafka

WebSocket

Kafka

间隔轮询

数据源

支持

MySQL

Kafka

Oracle

Kafka

实时采集和间隔轮训有什么区别?

实时采集本质是通过读取数据库中的日志文件,比如MySQL Binlog文件,首先需要数据库开启binlog功能,而后插件通过解析Binlog文件,逐条读取用户Insert、Update、Delete操作(此处以MySQL为例,不同数据库对应不同的操作类型),将其以流式数据的方式记录在Kafka中,供后续Flink进行消费。实时采集的优点是读取压力小,数据准确,缺点是需要管理员手动开启日志服务才可使用。
间隔轮训是通过JDBC发起查询请求,通过短间隔的查询数据的方式来达到一个近似实时采集的功能。间隔轮训优点是不需要手动开启日志服务,缺点是间隔轮训间隔过短且轮训数据量大时,容易给服务器带来较高的负担。

写入目标表及关系

数据源

结果表

写入表

写入模式

MySQL Binlog

Kafka(EMQ)

-

-

MySQL Binlog

Hive

自动建表

追加

MySQL Binlog

HDFS

-

追加

MySQL 间隔轮询

Kafka(EMQ)

-

-

Oracle LogMiner

Kafka(EMQ)

-

-

Kafka

Hive

手动写入

追加

Kafka

HDFS

-

追加

PolarDB for MySQL

Kafka(EMQ)

-

-

PolarDB for MySQL

Hive

自动建表

追加

SQL Server

Kafka(EMQ)

-

-

SQL Server

Hive

自动建表

追加

SQL Server

HDFS

-

追加

EMQ

Kafka(EMQ)

-

-

EMQ

Hive

自动建表

追加

EMQ

HDFS

-

追加

实时采集开发模式

类似离线的数据同步任务,实时采集同样提供两种开发模式:向导模式和脚本模式。

  1. 向导模式:提供向导式的开发引导,通过可视化的填写和下一步的引导,帮助快速完成实时采集任务的配置工作。向导模式的学习成本低,但无法享受到一些高级功能。

  2. 脚本模式:您可以通过直接编写实时采集的JSON脚本来完成实时采集开发,适合高级用户,学习成本较高。脚本模式可以提供更丰富灵活的能力,做精细化的配置管理。

实时采集任务的配置模式在创建时指定,指定之后不可变更。代码编写前需要完成数据源的配置和目标表的创建。

数据采集模块主要由以下几部分构成:

  • 数据源管理

  • 实时采集任务的配置与执行

实时采集已知问题

  1. 当存在某字段为空时,实时采集会自动补充“Null”值,此时若写入RDBMS数据库,会导致任务失败。

实时采集常见问题

Q:保存实时采集任务提示“异常:未配置数据源”怎么办?

A:请完成所有实时采集任务配置直至第四步再进行保存。目前实时采集暂不支持部分保存。