万字干货还原美团Flink实时数仓建设( 七 )


  • SQL 及 UDF 管理 , 管理 SQL 脚本和 UDF , 以及对 UDF 进行配置 。
  • 任务日志查看和任务监控 。
  • 调度管理 , 主要是管理任务的重导和重传 。
  • 数据资产管理 , 管理实时和离线的元数据 , 以及任务依赖信息 。
其实整个这条工具链 , 每个工具都有它自己特定的用场场景 , 下面重点讲解其中两个 。
1、元数据与血缘管理
1)元数据管理
我们在 Flink SQL 的开发过程中 , 每一个任务都要重新把元数据重新写一遍 。 因为 kafka 以及很多的缓存组件 , 如 Tair、Redis 都不支持元数据的管理 , 所以我们一定要尽早建设元数据管理系统 。
2)血缘管理
血缘其实对于实时数仓来讲比较重要 , 在上文中也提到过 , 在实时的作业的运维过程当中 , 一旦对自己的作业进行了修改 , 必须保证下游都是能够准确的解析新数据的这样一个情况 。 如果是依赖于这种人脑去记忆 , 比如说谁用我的销售表或者口头通知这种方式来讲的话 , 效率会非常的低 , 所以一定要建立一套就是血缘的管理机制 。 要知道到底是谁用了生产的表 , 然后上游用了谁的 , 方便大家再进行修改的时候进行周知 , 保证我们整个实时数仓的稳定 。
万字干货还原美团Flink实时数仓建设文章插图
元数据和血缘管理系统 , 最简单的实现方式大概分为以下三点:
① 通过元数据服务生成 Catalog
首先通过元数据系统 , 把元数据系统里的元数据信息加载到程序中来 , 然后生成 Flink Catalog。 这样就可以知道当前作业可以消费哪些表 , 使用哪些表 。
② 解析 DDL 语句创建更新表
当作业进行一系列操作 , 最终要输出某张表的时候 , 解析作业里面关于输出部分的 DDL 代码 , 创建出新的元数据信息写入到元数据系统 。
③ 作业信息和运行状态写入元数据
作业本身的元数据信息以及它的运行状态也会同步到元数据系统里面来 , 让这些信息来帮助我们建立血缘关系 。
最终的系统可以通过数据库来存储这些信息 , 如果你设计的系统没那么复杂 , 也可以使用文件来进行存储 。 重点是需要尽快建立一套这样的系统 , 不然在后续的开发和运维过程当中都会非常的痛苦 。
2、数据质量验证
将实时数据写入 Hive , 使用离线数据持续验证实时数据的准确性 。
当建设完一个数仓之后 , 尤其是第一次建立之后 , 一定会非常怀疑自己数据到底准不准 。 在此之前的验证方式就是通过写程序去仓库里去查 , 然后来看数据对不对 。 在后续的建设过程中我们发现每天这样人为去对比太累了 。
我们就采取了一个方案 , 把中间层的表写到 Hive 里面去 , 然后利用离线数据丰富的质量验证工具去对比离线和实时同一模型的数据差异 , 最后根据设定的阈值进行监控报警 。 这个方案虽然并不能及时的发现实时数据的问题 , 但是可以帮助你在上线前了解实时模型的准确程度 。 然后进行任务的改造 , 不断提高数据的准确率 。 另外这个方案还可以检验离线数据的准确性 。
以上是美团点评基于 Flink 构建的实时数仓应用经验的分享 , 希望对大家有所帮助!
作者丨黄伟伦@美团点评
来源丨Flink 中文社区(ID:gh_5efd76d10a8d)
dbaplus社群欢迎广大技术人员投稿 , 投稿邮箱:editor@dbaplus.cn
2020 DAMS中国数据智能管理峰会即将于10月30日在上海举办 , 部分精彩议题先睹为快: