饿了么元数据管理实践之路

  • 时间:
  • 浏览:1
  • 来源:5分3DAPP下载_5分3DAPP官网

提供动态的表依赖血缘关系查询。节点是表基础信息,节点之间的边是Operation信息,并肩附加任务执行Id、执行时间等属性。列血缘行态展示等同表血缘行态。

Q2:质量监控会影响到任务调度编排么?

A:会影响质量编排,构建DAG依赖执行。

三、饿了么主次使用场景

当然,你须要针对主次类型SQL设置Hive Conf,比如“开启动态分区非严格模式”。对于CTAS类型,须要设置Context。UDF函数须要修改主次Hive源码,处理UDF Registry检查。

元数据定义与价值

静态的Hive MetaStore表,比如DBS、TBLS、SDS、COLUMNS_V2、TABLE_PARAMS、PARTITIONS,保存表、字段、分区、Owner等基础信息,便于表、字段的信息检索功能。

DB保存任务的SQL数据、任务基础信息、执行引擎上下文信息;

Extract循环抽取SQL并解析成表、列级血缘Lineage;

DataSet涵盖Lineage关系数据+任务信息+引擎上下文;

将DataSet数据集保存到Neo4j,并提供关系查询;保存ES,提供表、字段等信息检索。

Q5:亲戚亲戚朋友是为啥做热度分析的?刚才的讲解里,這個点讲得比较少。

A:任务操作的SQL产生input output表,对表进行counter就能top counter,列也一样。

Q3:把从SQL中的架构设计 数据存储到MySQL中,是怎样才能规划的?哪些地方地方架构设计 信息不应该像是日志数据一样被处理吗?存储在MySQL中是有自增全局ID的么?还是说亲戚亲戚朋友是对任务和表分别有MySQL表,也不更新MySQL表中任务和表甚至列的信息么?这里的MySQL表也不您说的DataSet么?

A:任务jobid进行唯一,MySQL只保存执行的SQL,以及任务并与否的信息,比如owner time jobid等等。



SQL架构设计 与架构设计

二、饿了么元数据系统架构

Q4:当前的支持非SQL形式生成表么?比如直接用Spark RDD任务可能性Spark MLlib任务取表和生成表?

A:只支持SQL表达。

举个栗子,根据里面的SQL,分别产生表、列血缘行态。

开源处理方案

列血缘行态

饿了么解析血缘的SQL支持的操作有:Query(涵盖selectinsert intoinsert overwrite)、CreateTable、CreateTableAsSelect、DropTable、CreateView、AlterView。基本覆盖饿了么生产环境99%+的SQL语法。

原文发布时间为:2018-07-26

本文作者:王金海

本文来自云栖社区媒体商务合作伙伴“DBAplus社群”,了解相关信息须要关注“DBAplus社群”。

综上所述,饿了么的SQL解析方案,直接参考Hive的底层源码实现。

元数据是数据管理、数据内容、数据应用的基础。這個须要利用元数据构建任务、表、列、用户之间的数据图谱;构建任务DAG依赖关系,编排任务执行序列;构建任务画像,进行任务质量治理;数据分析时,使用数据图谱进行字典检索;根据表名查看表详情,以及每张表的来源、去向,每个字段的加工逻辑;提供买车人或BU的资产管理、计算资源消耗概览等。

Atlas是Apache开源的元数据治理方案。Hook执行中架构设计 数据(比如HiveHook),发送Kafka,消费Kafka数据,生成Relation关系保存图数据库Titan,并提供REST接口查询功能,支持表血缘,列级支持不完善。

数据疑问:多种执行、存储引擎,分钟、小时、天级的任务调度,怎样才能梳理数据的时间线变化?

数据使用:任务、表、列、指标等数据,怎样才能进行检索、复用、清理、热度Top计算?

数据管理:怎样才能对表、列、指标等进行权限控制、任务治理以及上下游依赖影响分析?

解析SQL的方案,以Hive为例。先定义词法规则和语法规则文件,也不使用Antlr实现SQL的词法和语法解析,生成AST语法树,遍历AST语法树完成后续操作。

下面是饿了么在元数据应用上的主次场景:



有了input、operation、output关系,将input、output保存为图节点,operation保存为图边。图数据库选泽Gremlin+Neo4j。

列式也一样:

EDW是饿了么的调度系统,移觉开源的AirFlow。调度系统执行任务,并将任务相关的信息,比如appId、jobId、owner、SQL等信息存入DB。

input:name,

operation: coalesce(name, count(id)),

output: lineage_name;

根据SQL的input、output构建表的依赖关系,进一步构建任务的DAG依赖行态。须要对任务进行DAG调度,重新编排任务执行序列。

Q6:亲戚亲戚朋友管理的表分线上表和线下表么?在处理的之前 用到了有之前 临时表该为啥处理?

A:对的,线上还是线下,任务调度系统架构设计 ,临时表根据temp就知道了。

input是表、列输入值;output是表、列输出值;operation代表操作类型。比如表A+B通过insert,生成表C,则延展成A insert C; B insert C。

Q & A

input: id,

operation: coalesce(name, count(id)),

output:lineage_name

表血缘行态



举个栗子

大数据挑战

饿了么的SQL数据,以执行中架构设计 为主+保存前submit为辅。可能性任务的SQL可能性包涵盖之前 时间变量,比如dt、hour,以及任务可能性是天调度、小时调度。执行中架构设计 SQL实时性更高,也更容易处理。

图存储

计算引擎实现相关的监听接口,比如Hive实现Execute With Hook Context接口;Spark实现Spark Listener接口;Presto实现Event Listener接口。将计算引擎相关的上下文Context、元数据MetaData、统计Statistics等信息存入DB。



大数据时代,饿了么面临数据管理、数据使用、数据疑问等多重挑战。具体须要参考下图:

Q1:咱们的数据生命周期是怎样才能管理的,能具体说下吗?

A:表级数据进行热度分析,比如近五个 多月没法 访问,与否须要下线,一阵一阵是有之前 临时表 须要定时清理。

SQL解析

但对于SELECT *、CTAS等操作,直接遍历AST,不去获取Schema信息来检查表名、列名,就无法判定SQL的正确性,是因为数据污染。

Gremlin是图语言,存储实现方案比较多,Cypher查询不太直观,且可否 了Neo4j使用。社区版Neo4j可否 了单机跑,亲戚亲戚朋友正在测试OrientDB。

以本土做简单示例,先经过Semantic Analyzer Factory类进行语法分析,再根据Schema生成执行计划QueryPlan。关于表、列的血缘,须要从LineageInfo、LineageLogger类中获得处理方案。

WhereHows是LinkedIn开源的元数据治理方案。Azkaban调度器抓取job执行日志,也也不Hadoop的JobHistory,Log Parser后保存DB,并提供REST查询。WhereHows太重,须要部署Azkaban等调度器,以及只支持表血缘,功能局限。



Q8:解析那种复杂度很高的HQL的血缘,亲戚亲戚朋友平台的解析思路是哪些地方样子的?怎样才能保证正确率呢?

A:会有有之前 有之前 复杂的ppt有代码示例,会有主次SQL须要修改Hive解析实现。

元数据打通数据源、数据仓库、数据应用,记录了数据从产生到消费的全部链路。它涵盖静态的表、列、分区信息(也也不MetaStore);动态的任务、表依赖映射关系;数据仓库的模型定义、数据生命周期;以及ETL任务调度信息、输入输出等。

Q9:表血缘图里面的上下级关系也不数据的流向?从上到下?字段的血缘是哪些地方样子的跟表的血缘哪些地方地方不同?有字段的血缘图吗?

A:ppt里解析那里须要想看 ,字段也一样,input output列也不operation

一、背景

Q7:数据血缘关系可能性使用Hive hook最好的办法 获取,是须要在每个执行节点中做捕捉吗?

A:Hive hook也不执行时调用,须要去了解下底层。

Q10:SQL架构设计 ,引擎架构设计 ,是要去重写Hive等的源码吗?

A:重写倒不至于,若果实现ppt里的接口,很简单。

猜你喜欢

开发者和生态伙伴 如何接入阿里云Link Security

大数据开发套件(DataIDE),提供可视化开发界面、离线任务调度运维、快速数据集成、多人协同工作等功能,为您提供有有有另另三个 多高效、安...浏览量:1739收藏:0下载

2020-02-25

Flink Forward China ——袋鼠云基于实时计算的反黄牛算法

阿里云机器学习是基于阿里云分布式计算引擎的一款机器学习算法平台。用户通过拖拉拽的辦法 可视化的操作组件来进行试验,使得越来越机器学习...浏览量:625收藏:0下载数:58所

2020-02-25

1441247606838277的主页

TA还越来越 发布过内容~光戈MaxCompute生态文章:2丨粉丝:64143丨话题:0暂无文章:1丨粉丝:64110丨话题:0暂未提供文章:5丨粉丝:64181丨话题:0

2020-02-25

获得诺贝尔文学奖的中国人是哪几个

钱永健(1952.2.1-)RogerYonchienTsien美籍华裔生物化学家,1952年生于美国纽约,祖籍浙江杭州,是中国导弹之父钱学森的堂侄。美国国家科学院院士,美国国

2020-02-25

【2019阿里云峰会上海站】许文奇

浏览量:1269收藏:1下载数:467所需积分:0所需积分:0下载人数:467立即下载云计算两种稳定、可靠、容量和服务能力可弹性伸缩的分布式关系型数据库服务。为您提供简单高效、

2020-02-24