数据写入hive_趣头条基于Flink+ClickHouse的实时数据分析平台

本文介绍了趣头条如何利用Flink+ClickHouse构建实时数据分析平台,覆盖实时数据报表、Adhoc查询等多个场景,大部分响应时间在1秒内。Flink-to-Hive实现小时级数据写入,通过StreamingFileSink确保Exactly-Once语义。同时,趣头条通过Flink对接ClickHouse,解决了指标上下线、数据回溯等问题,实现快速计算和查询。
摘要由CSDN通过智能技术生成

趣头条一直致力于使用大数据分析指导业务发展。目前在实时化领域主要使用 Flink+ClickHouse 解决方案,覆盖场景包括实时数据报表、Adhoc 即时查询、事件分析、漏斗分析、留存分析等精细化运营策略,整体响应 80% 在 1 秒内完成,大大提升了用户实时取数体验,推动业务更快迭代发展。

本次分享主要内容:

  • 业务场景与现状分析
  • Flink to Hive 的小时级场景
  • Flink to ClickHouse 的秒级场景
  • 未来规划
2ae4436f229ab1cbffab3066d1caea94.png

趣头条的查询页面,分为离线查询和实时查询。离线查询有 presto,spark,hive 等,实时查询则引入了 ClickHouse 计算引擎。

662448b8a029b145c637bbe9da66dd00.png

上图为实时数据报表,左边为数据指标的曲线图,右边为详细数据指标,目前数据指标的采集和计算,每五分钟一个时间窗口,当然也会有三分钟或者一分钟的特殊情况。数据都是从 Kafka 实时导入 ClickHouse 进行计算的。

23575738d75babd9e7b5a261c97bf35f.png

1. 小时级实现架构图

fefb2bdcff4ec313e99474dc4735d72f.png

Flink-to-Hive 小时级实现架构图如图所示,架构实现的思路如下:

Database 中的 Binlog 抽数据到 Kafka,同时 Log server 数据也会上报到 Kafka,所有的实时数据落地到 Kafka 之后,通过 Flink 抽取到 HDFS 上。HDFS 到 Hive 之间有条虚线,即 Flink 落地到 HDFS 后,通过程序监控,Flink 在消费完成时,数据落地到 Hive 中可能是小时级的或者是半小时级的,甚至是分钟级的,此时需要知道数据的 Event time 已经到了什么时间,然后再去触发比如 alert table、add partition、 add location 等,把分区写进 Hive 中。这时还需要看一下当前的 Flink 任务的数据时间消费到了什么时间,如9点的数据要落地时,需要看一下 Kafka 里 Flink 数据消费是否到了9点,然后在 Hive 中触发分区写入。

2. 实现原理

182ed1f9c12573fc3baebab4cbb148db.png

这块的实现原理主要是使用 Flink 高阶版本的特性 StreamingFileSink。

StreamingFileSink 的主要功能如下:

  • forBulkFormat 支持 avro、parquet 格式,也就是支持链式的存储格式
  • withBucketAssigner 自定义按数据时间分桶,支持数据时间的分桶,上图用到该功能的地方定义了一个 EventtimeBucket,按照数据的时间落地到离线中
  • OnCheckpointRollingPolicy,会根据 CheckPoint 时间来进行数据的落地,此处可以理解为按照数据的时间,比如按照一定的 CheckPoint 时间内进行数据落地、回滚,数据落地策略还可以按照数据大小落地
  • Exactly-Once 语义实现,Flink 中自带的 StreamingFileSink 是用 Exactly-Once 语义来实现的。Flink 中有两个 Exactly-Once 的实现,第一个是 Kafka 的 Exactly-Once,第二个是 StreamingFileSink 实现了 Exactly-Once 语义,像上图中 CheckpointRollingPolicy 设置的是十分钟落地一次到 HDFS 文件中

下面来具体说一下 Exactly-Once 是如何实现的。

① Exactly-Once

6de2d1fad6bd2160c0d099ed8d4173d2.png

具体实现 Exac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值