共计 4512 个字符,预计需要花费 12 分钟才能阅读完成。
摘要:本文整顿自阿里云开源大数据高级开发工程师杨庆苇在 7 月 17 日阿里云数据湖技术专场交流会的分享。本篇内容次要分为两个局部:
- 数据湖元数据仓库介绍
- 阿里云 DLF 数据湖治理与优化
点击查看直播回放
数据湖元数据仓库介绍
数据湖的实际过程中,咱们面临了诸多挑战:
第一,数据难以辨认和查找。数据湖内存在大量未被无效辨认的数据,可能是历史遗留或未被治理的数据,比方通过文件拷贝上传或其余工具引擎写入湖内的数据。其次,传统元数据服务里不足无效的检索服务,数据增长到肯定规模时,很难从大量元数据中搜寻和定位到特定场景下的数据。
第二,数据资产治理能力弱,湖上不足无效的数据资产剖析和优化工具,难以精细化把握库、表分区级别的数据明细。对 schema 维度存储分层计划落地艰难,数据冷热难以分别,无奈在库、表分区维度实现分层。
第三,湖格局优化不足零碎的解决方案。比方小文件合并操作须要用户对湖格局有肯定的理解,能被动发现局部 schema 存在不合理的小文件,且利用计算引擎运行小文件合并工作,存在肯定的应用门槛。此外,须要用户可能辨认有效的历史数据以对其进行清理。
为了解决数据湖实际过程中遇到的挑战,综合湖上数据特点以及计算引擎特点,阿里云提出了基于元仓数据底座,以云原生资源池的海量计算能力为根底,联合管控的在线服务能力,为用户提供全托管的湖治理和优化的解决方案。
数据湖元数据仓库架构
元仓组成湖上元数据以及剖析和计算数据,为湖治理和优化提供了参考指标。通过数据采集、ETL、数据分析、计算等过程,将湖上散布在各处的数据进行整合,提取出有意义的指标,构建出剖析库、指标库和索引库,为下层利用提供数据撑持。
上图右侧是云原生计算池,通过 Spark 引擎利用云上的可伸缩资源运行 Analyze、Indexing、Compaction、Tiering 等剖析和优化工作,并实时将计算结果写回元仓,参加指标库与索引库的建设,丰盛和扩大元仓的指标资产,如在计算池内运行 stats 工作、获取表行数大小等指标,并回写到元仓指标库,用户可在第一工夫查看表的根底信息,并以此为参考做数据品质剖析等操作。
管控层提供用了在线服务能力,如在线目录、检索服务、指标服务等,优化引擎负责剖析元仓上的指标,并根据规定生成优化工作提交给云原生计算池进行计算。在此之上延长出了很多湖治理优化的能力:
①元数据能力:解决了数据难以辨认和操作的问题。比方针对元数据检索,通过建设检索库,疾速搜寻元数据以及相干的 schema 明细。元数据发现通过云原生池计算运行工作提取元数据信息,无效辨认湖内未知数据。
②存储优化能力:解决了数据资产治理能力弱的痛点。比方存储统计分析,通过元仓的指标库剖析库、表分区级别的数据明细、冷热分层,通过指标库提供的表分区,最近拜访工夫、拜访频率、冷热指标对表分区主动分层。
③查问优化能力:如小文件合并,通过指标库提取出小文件表和分区信息,依据规定在云原生资源池上运行小文件合并工作。此为全托管过程,用户侧无感知。
④湖格局治理优化:实现了元数据减速和主动优化。
以上计划解决了数据湖治理与优化的局部问题,帮忙用户更好地应用和治理数据湖。
数据湖元数据仓库建设
湖上元仓的原始数据由三类数据形成:
①存储数据:文件级别的 OSS 存储数据信息,包含大小、存储门路、存储类型、最近更新工夫等,均来自存储拜访日志和明细清单,这些根底数据形成存储属性的元数据,是剖析和治理对象存储的根底。
②元数据:形容目录、库、表、分区、函数等的数据,包含索引、属性、存储以及 stats 的统计数据。次要来自于引擎元数据服务存储以及 stats 的计算裁减,是大表治理、小文件合并等优化操作的根底数据。
③引擎行为数据:包含血统数据、引擎工作执行数据,比方文件大小、文件数、工作上下游依赖信息数据。这些数据在引擎计算时产生,是建设数据地图、生命周期治理的根底数据。
以上数据通过日志服务生产、Spark 批工作、离线同步、Spark Structured Streaming、流工作实时生产等形式集成到元仓,作为元仓的原始数据。元仓抉择 Hologres 作为存储库,因为 Hologres 对于海量数据的实时写入、实时更新、实时剖析能提供较好的反对。
对于实时性要求不高,但有较大数据量剖析的场景,比方库表存储剖析,能够通过 MaxCompute 离线数据加工的形式,将原始数据转换成明细数据,并提供离线指标给管控层;对于有较高实时性要求的场景,比方获取表分区行数、执行更新工夫等,通过 Hologres 实时剖析能力,实时计算出剖析指标,并提供给 DLF 管控。
元仓蕴含了实时和离线场景,为数据湖治理和优化提供了稳固、高质量的数据根底。
阿里云 DLF 数据湖治理与优化
元数据检索
元数据检索解决了数据湖上数据难以查找的痛点。次要提供了两种搜寻形式,一是全文检索,通过对元数据所有列属性建设索引,满足对任意单词的搜寻都能在毫秒级别内做出响应;二是提供了多列准确查问,满足在特定条件场景下的搜寻,比方按库名、表名、列名、Location 地址、创立工夫、最初批改工夫等非凡属性准确匹配搜寻。
索引库抉择了阿里云 Elasticsearch 计划。ES 是实时分布式的搜寻与剖析引擎,能够近乎准实时地存储、查问和剖析超大数据集,非常适合元数据的实时搜寻场景。为了达到搜寻后果秒级提早的成果,咱们选用 Spark Streaming 流技术,实时同步和解析引擎生产的 DML 日志写入 ES 库。
但生产日志存在着两个人造的问题:一是音讯的程序性,无奈保障程序产生的 DML 事件能被程序地生产并写入 ES 库;二是音讯的可靠性,日志服务无奈保障集群日志可能百分百被捕获并写入到 hub。
为了解决上述痛点,一方面会通过音讯内的最近更新工夫做判断,逻辑上保障了音讯的程序性;另一方面,通过每日的离线工作同步元数据库做索引弥补,保障了每日元数据信息的可靠性。通过流技术、离线弥补技术、ES 检索能力,实现了湖内从大量元数据中疾速搜寻和定位的能力。
数据资产剖析
剖析维度:
湖上资产剖析能力可能更高效、简洁地帮忙用户剖析和治理湖上资产,蕴含了资源统计、趋势变动、存储排名、存储分层。
资源统计提供了总存储量、总库表数量、API 访问信息总量,为用户提供了直观的数据感触,对湖上资产进行全局把握。
趋势变动反映了上述统计指标近 7 天、30 天和 1 年的增减变动。通过数据稳定可能发现业务的倒退状态,比方判断某业务近期的倒退态势,并依据态势调整资源投入。
存储排名反映了库表在肯定范畴内的排序状况,用户能够依据这一排名发现表的数据老本问题,比方 80% 的存储集中在 20% 表里。
存储分层形容了对象存储上存储类型的散布状况、存储格局散布状况以及大小文件散布状况。通过散布状况判断以后数据分层是否正当。
以上剖析数据一方面可能帮忙用户更好地了解和把握湖上资产,另一方面为用户治理和优化湖数据提供了事实根据。
数据模型:
资产剖析的模型建设遵循数仓的分层范式,从下至上别离为源数据层、数据公共层、数据应用层。OSS 存储的日志、明细数据、元数据和审计数据通过离线工作同步至元仓 ODS 层,而后通过离线加工计算出公共层数据,包含元数据、维表、文件存储、明细表、库表汇总等,而后依据业务需要将公共数据退出到利用数据并输入给管控,最初进行报表展现。
库表维度精细化剖析 -DataProfile
DataProfile 模块在库表元素之上,减少扩大了 stats 指标。stats 是引擎对于表的统计信息,包含表的记录数、表大小、文件数量等根底数据。在此基础上做了 stats 扩大,包含小文件数据、小文件占比、冷热度、分层信息指标等。因为数据湖对接多种引擎,Spark、Hive 等。每种引擎 stats 计算结果都无奈保障全面精确,且触发条件不统一,指标的覆盖度较低。默认状况下,如果分区表的记录数、大小文件指标覆盖度有余 20%,则无奈间接应用元数据 stats 指标。因而,咱们通过被动提交 stats 剖析工作,帮忙用户计算表的 stats 数据。
首先,引擎做 DML 工作后会产生一个事件,元仓记录这一事件,stats 集群实时生产 DML 事件,并拉起对应的 stats 剖析工作,同时扩大了 analyze 命令,反对小文件数量、数据分层占比等剖析指标。整个 stats 集群运行在云原生资源池内,为防止元数据服务与业务库的抵触,工作运行实现后会实时写入指标库。
上述计划补充了云原生计算引擎 stats 数据笼罩准确度不高的问题,为表剖析和优化提供了根底数据。Stats 能为管控页面提供库、表分区级别的明细数据,也能为其余优化引擎提供数据反对,比方剖析表的小文件数量指标进行小文件合并,同时也能服务多种引擎做 CBO 优化。
生命周期治理
生命周期治理模块可能对 schema 维度存储分层,无效地帮忙用户升高存储老本。OSS 对象存储提供了文件级别的分层能力,OSS 不同存储类型价格不同,由热到冷别离为规范、低频、归档、冷归档,老本顺次递加。基于此能力,能够将不常应用的数据冷冻,待应用时再冻结,以此升高存储老本。
基于 OSS 的分层能力,联合引擎元数据,提供库表分区粒度的生命周期治理能力,依据规定对表和分区进行冷冻或冻结,以此升高用户对数据湖内冷热分层的应用门槛。
规定核心通过元仓提供的指标制订,包含最近批改工夫、创立工夫、分区值、拜访频率等指标,其中拜访频率由剖析引擎工作明细产生,通过 hook 的形式采集 Spark 或 Hive 执行工作时的工作明细,通过计算加工提取拜访频率和最近拜访的工夫冷热信息。最近批改工夫、创立工夫分区值等根底指标由元仓计算而来。
决策核心定期触发规定判断,在满足规定的状况下会产生归档工作,由工作核心履行。整个工作核心通过散布式调度,定时或手动执行冻结或归档工作,利用 JindoSDK 的高并发、高稳固个性,执行目录级别的文件归档操作。
生命周期治理过程对于用户而言非常便捷,用户无需操作 OSS 文件,极大进步了用户对湖上数据的分层治理能力。
以上为阿里云数据湖团队在数据湖治理优化过程中的实际,在理论利用过程中,帮忙客户优化存储老本的同时,进步了数据的应用效率。
更多信息:
产品官网
[1] 数据湖构建 Data Lake Formation:https://www.aliyun.com/produc…
[2] 开源大数据平台 EMR:https://www.aliyun.com/produc…
[3] 大数据常识图谱:https://developer.aliyun.com/…
数据湖系列
[1] 数据湖揭秘—Delta Lake:https://developer.aliyun.com/…
[2] 数据湖构建—如何构建湖上对立的数据权限:https://developer.aliyun.com/…
[3] 对于 Data Lake 的概念、架构与利用场景介绍:https://developer.aliyun.com/…
[4] 数据湖架构及概念简介:
https://developer.aliyun.com/…
[5] 数据湖对立元数据和权限
https://developer.aliyun.com/…