字节跳动基于Flink的MQ-Hive实时数据集成

Flink实时数据集成方案
为解决字节跳动内部MQ-Hive链路的痛点,本文提出基于Flink的实时解决方案,实现MQ数据实时写入Hive,支持ExactlyOnce语义,提升实时性与准确性,减少存储与计算开销。

背景

在数据中台建设过程中,一个典型的数据集成场景是将 MQ (Message Queue,例如 Kafka、RocketMQ 等)的数据导入到 Hive 中,以供下游数仓建设以及指标统计。由于 MQ-Hive 是数仓建设第一层,因此对数据的准确性以及实时性要求比较高。

本文主要围绕 MQ-Hive 场景,针对目前字节跳动内已有解决方案的痛点,提出基于 Flink 的实时解决方案,并介绍新方案在字节跳动内部的使用现状。

已有方案及痛点

字节跳动内已有解决方案如下图所示,主要分了两个步骤:

  1. 通过 Dump 服务将 MQ 的数据写入到 HDFS 文件

  2. 再通过 Batch ETL 将 HDFS 数据导入到 Hive 中,并添加 Hive 分区

痛点

  1. 任务链较长,原始数据需要经过多次转换最终才能进入 Hive

  2. 实时性比较差,Dump Service、Batch ETL 延迟都会导致最终数据产出延迟

  3. 存储、计算开销大,MQ 数据重复存储和计算

  4. 基于原生 Java 打造,数据流量持续增长后,存在单点故障和机器负载不均衡等问题

  5. 运维成本较高,架构上无法复用公司内 Hadoop/Flink/Yarn 等现有基础设施

  6. 不支持异地容灾

基于 Flink 实时解决方案

优势

针对目前公司传统解决方案的痛点,我们提出基于 Flink 的实时解决方案,将 MQ 的数据实时写入到 Hive,并支持事件时间以及 Exactly Once 语义。相比老方案,新方案优势如下所示:

  1. 基于流式引擎 Flink 开发,支持 Exactly Once 语义

  2. 实时性更高,MQ 数据直接进入 Hive,无中间计算环节

  3. 减少中间存储,整个流程数据只会落地一次

  4. 支撑 Yarn 部署模式,方便用户迁移

  5. 资源管理弹性,方便扩容以及运维

  6. 支持双机房容灾

整体架构

整体架构如下图所示,主要包括 DTS(Data Transmission Service) Source、DTS Core、DTS Sink 三大模块,具体功能如下:

  1. DTS Source 接入不同 MQ 数据源,支持 Kafka、RocketMQ 等

  2. DTS Sink 将数据输出到目标数据源,支持 HDFS、Hive 等

  3. DTS Core 贯穿整个数据同步流程,通过 Source 读取源端数据,经过 DTS Framework 处理,最后通过 Sink 将数据输出到目标端。

  4. DTS Framework 集成类型系统、文件切分、Exactly Once、任务信息采集、事件时间、脏数据收集等核心功能

  5. 支持 Yarn 部署模式,资源调度、管理比较弹性

DTS Dump架构图

Exactly Once

Fl

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值