今天就跟大家聊聊有关如何基于Flink+ClickHouse 构建实时数据分析平台,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
一、业务场景与现状分析
二、Flink-to-Hive 小时级场景
1.小时级实现架构图
2.实现原理
第一, forBulkFormat 支持 avro、parquet 格式,即列式存储格式。
第二, withBucketAssigner 自定义按数据时间分桶,此处会定义一个EventtimeBucket,既按数据时间进行数据落地到离线中。
第三, OnCheckPointRollingPolicy,根据 CheckPoint 时间进行数据落地,在一定的 CheckPoint 时间内数据落地并回稳。按照 CheckPoint 落地还有其它策略,如按照数据大小。
第四, StreamingFileSink 是 Exactly-Once 语义实现。
initializeState
invoke
snapshotState
notifyCheckpointComplete
3.跨集群多 nameservices
4.多用户写入权限
三、Flink-to-ClickHouse 秒级场景
1.秒级实现架构图
2.Why Flink+ClickHouse
指标实现 sql 化描述:分析师提出的指标基本都以 SQL 进行描述。
指标的上下线互不影响:一个 Flink 任务消费 Topic,如果还需要其它指标,可以保证指标的上下线互不影响。
数据可回溯,方便异常排查:当日活下降,需要回溯排查是哪些指标口径的逻辑问题,比如是报的数据差异或是数据流 Kafka 掉了,或者是因为用户没有上报某个指标导致日活下降,而 Flink 则无法进行回溯。
计算快,一个周期内完成所有指标计算:需要在五分钟内将成百上千的所有维度的指标全部计算完成。
支持实时流,分布式部署,运维简单:支持 Kafka 数据实时流。
3.Why ClickHouse so Fast
Merge Tree:如下图所示。第一层为实时数据写入。后台进行每一层级数据的merge。merge 时会进行数据排序,做 Index 索引。
ClickHouse Connector:ClickHouse 有两个概念,Local table 和Distributed table。一般是写 Local table ,读 Distributed table。ClickHouse 一般以 5~10w一个批次进行数据写入,5s一个周期。趣头条还实现了 RoundRobinClickHouseDataSource。
BalancedClickHouseDataSource :MySQL 中配置一个 IP 和端口号就可以写入数据,而 BalancedClickHouseDataSource 需要写 Local 表,因此必须要知道该集群有多少个 Local 表,每一个 Local 表的 IP 和端口号。如有一百台机器,需要将一百台机器的 IP 和端口号全部配置好,再进行写入。BalancedClickHouseDataSource 有两个 schedule。scheduleActualization和 scheduleConnectionsCleaning 。配置一百台机器的 IP 和端口号,会出现某些机器不连接或者服务不响应问题,scheduleActualization 会定期发现机器无法连接的问题,触发下线或删除 IP 等动作。scheduleConnectionsCleaning 会定期清理 ClickHouse 中无用的 http 请求。
RoundRobinClickHouseDataSource:趣头条对BalancedClickHouseDataSource 进行加强的结果,实现了三个语义。testOnBorrow 设置为 true,尝试 ping 看能否获取连接。用 ClickHouse 写入时是一个 batch,再将 testOnReturn 设置为 false,testWhileIdel 设置为true,填入官方 scheduleActualization 和 scheduleConnectionsCleaning 的功能。ClickHouse 后台不断进行 merge,如果 insert 过快使后台 merge 速度变慢,跟不上 insert,出现报错。因此需要尽量不断往下写,等写完当前机器,再写下一个机器,以5s间隔进行写入,使 merge 速度能够尽量与 insert 速度保持一致。
4.Backfill
未来发展与思考
1.Connector SQL 化
2.Delta lake
看完上述内容,你们对如何基于Flink+ClickHouse 构建实时数据分析平台有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。