大数据血缘分析系统设计(二)

  |   0 评论   |   7,969 浏览

概述

数据血缘分析属于元数据管理的重要一部分,能够使开发者直观的了解数据的来龙去迈,快速上手

广义上,血缘分析包含以下3个级别:

  1. 任务级别

  2. 数据级别

  3. 字段级别

下面分别介绍

任务级别

大数据平台当中的数据,往往由一个个的任务生成,虽然在不同的应用系统中虽然有不同的名字,如Yarn中的application、Oozie中的Job、Spark/MR/Hive中的Job,但本质上都是同一类东西:都有input/output Data,有的Job会有多个input/output Data。

通过查看任务级别的血缘关系,可以了解到更高层级的信息,如服务器、运行时长、等待时长、当前任务流状态等

如下图为笔者公司内部一个简单的流程,从中可以看到

  • 前置任务状态,如执行失败,或是依赖任务失败;

  • 任务执行时长

  • 等待依赖项满足所需的时长

  • 任务流

  • 任务所在服务器信息

  • 。。。

image.png

数据级别

数据,也叫表、目录等,广义上包括HDFS、HBase、关系型数据库、Kafka、Ftp、本地文件等。

通过查看数据级别的血缘关系,可以看到:

  • 表的依赖链条

  • 表的重要程度(后续的使用者多少)

  • 表的基础信息

image.png

进而可以基于此,做一些数据质量、影响分析的工作

字段级别

在实际使用中,有时会有一些稍显苛刻的需求,如更改字段的影响有多大、字段是如何产生的等,此时就需要字段级别的血缘关系

按照Hive当中的定义,分为两种:Projection和Predicate

Projection

投影只影响单一输出字段

image.png

Predicate

断言,影响所有输出字段

image.png

实际应用中,由于Predicate影响所有字段,绘制到图标当中会产生很多条线,因此,我们默认展示Projection

设计

核心概念

名词

含义

例子

Job任务、或代表业务流程中一个阶段如一个定时任务、一个批处理
Dataset数据集,可以存储数据的对象

Hive表、MySQL表、HDFS目录

Field字段,Dataset的属性如User表有userId和userName属性
Dag有向无环图 ( Directed Acyclic Graph),图形化展示血缘关系JobDag、DataDag、FieldDag
Job Lineage
job血缘关系,即Job依赖关系job2依赖job1,则表示为job2→job1
Data LineageData血缘关系,即Data的Input/Output关系data3是通过data1和data2 join出来的,则data3→data1,data2
Field Lineage字段血缘关系,即字段的predicate/projection关系如as是projection关系,where是predicate关系

DB Model

image.png

三张表映射表说明

表名用途
ref_job_lineage用于存储Job级别的血缘关系
ref_dataset_lineage用于存储数据级别的血缘关系
ref_field_lineage用于存储字段级别的血缘关系
读后有收获可以支付宝请作者喝咖啡