—2023— 数据湖统一元数据和存储管理 演讲人:范佚伦—阿里云 云上数据湖架构数据湖统一元数据 数据湖管理与存储优化 数据湖格式管理与优化 云上数据湖架构 什么是数据湖 Adatalakeisasystemorrepositoryofdatastoredinitsnatural/rawformat,usuallyobjectblobsorfiles.Adatalakeisusuallyasinglestoreofallenterprisedataincludingrawcopiesofsourcesystemdataandtransformeddatausedfortaskssuchasreporting,visualization,advancedanalyticsandmachinelearning.Adatalakecanincludestructureddatafromrelationaldatabases(rowsandcolumns),semi-structureddata(CSV,logs,XML,JSON),unstructureddata(emails,documents,PDFs)andbinarydata(images,audio,video). Adatalakeisacentralizedrepositorythatallowsyoutostoreallyourstructuredandunstructureddataatanyscale.Youcanstoreyourdataas-is,withouthavingtofirststructurethedata,andrundifferenttypesofanalytics—fromdashboardsandvisualizationstobigdataprocessing,real-timeanalytics,andmachinelearningtoguidebetterdecisions. AzureDataLakeincludesallthecapabilitiesrequiredtomakeiteasyfordevelopers,datascientists,andanalyststostoredataofanysize,shape,andspeed,anddoalltypesofprocessingandanalyticsacrossplatformsandlanguages. 数据湖是统一存储池,可对接多种数据输入方式,您可以存储任意规模的结构化、半结构化、非结构化数据。数据湖可无缝对接多种计算分析平台,直接进行数据处理与分析,打破孤岛,洞察业务价值。同时,数据湖提供冷热分层转换能力,覆盖数据全生命周期。 相比于传统数仓内置存储,数据湖通过存算分离实现统一存储 •统一的存储,解决数据孤岛问题 •灵活性强,存算分离,开放的数据,多种引擎分析 相比于传统数仓事前建模,数据湖可以保存原始数据 •事后建模 •云上大规模、高可用、低成本的中心化存储 •数据类型丰富,支持结构化、半结构化、非结构化数据类型 •存储原始数据,避免数据丢失 相比于传统数仓,数据湖缺乏数据治理、性能 •安全,权限 •事务性 •数据质量 •性能 数据湖逐渐支持数仓能力,实现湖仓一体 元数据统一与数据湖管理 •统一元数据层查询和定位数据 •开放的数据格式支持多引擎直接读取 •统一的元数据/SQLAPI •统一权限提供企业级数据管理和安全的能力 数据湖查询优化 •数据缓存加速 •数据索引加速 利用数据湖格式实现事务层 •支持ACID事务隔离,解决读写冲突 •支持多版本时间旅行,指明每个Table版本所包含的数据对象 •同时支持流批混合读写 • 统一的数据湖存储层 •利用云上对象存储 •存储原始数据,支持半结构化和非结构化数据 阿里云数据湖架构 支持多引擎计算分析 •E-MapReduce(Hive/Spark/Presto/Impala/Starrocks) •MaxCompute、Flink、Hologres 通过DLF进行数据湖管理优化 •统一元数据管理,支持跨引擎分析 •统一权限管理 •搭配JindoCache数据湖缓存加速 •数据湖存储管理和自动冷热分层 使用OSS作为数据湖存储 •低成本,高可靠性,无限扩展,高吞吐,免运维 •开启OSS-HDFS,支持POSIX,高性能rename/list •通过冷归档降低成本 阿里云DLF(DataLakeFormation)简介 统一元数据服务 存算分离架构下,提供全托管的有状态服务 高可用、高性能、可扩展、免运维 兼容开源HMS协议,无缝对接开源/自研引擎 总量支持超过10万DB,1亿Table,10亿Partition 权限与安全 支持按库/表/列对湖内数据进行权限配置 支持数据访问日志审计 数据管理与优化 存储分析与成本优化 湖表数据分布与索引加速 数据生命周期管理 数据湖统一元数据 开源元数据体系 开源引擎及组件 Thrift协议 HiveMetastore HiveMetastore Jdbc协议 DB Hive是开源数仓的事实标准 •各个引擎逐渐形成了围绕着HiveMetastore的元数据体系 HiveMetastore管理元数据流程 •大数据引擎通过HiveMetastoreclient,使用thrift连接到HiveMetastore •Metastore接收请求,通过HMSHandler处理对应操作 •最终元数据读写通过DataNucleus框架连接到外部数据库 •HiveMetastore本身无状态,可以部署多个 使用RDBMS存储元数据 •大部分使用MySQL为主 •多张表存储元数据信息,如DBS,TBLS,PARTITIONS,SDS 开源元数据体系的问题和挑战 高级特性支持有限 •不能通过Time-Travel查询数据/元数据的历史快照 •ACID特性和Hive引擎绑定 不易于对接内部自研引擎/云上数仓 •HiveMetastore额外部署运维,单点问题,需要网络直连 •引擎需要实现Thrift协议接入 受限于单个数据库瓶颈 •单个MySQL数据量瓶颈 •高可用问题 HiveMetastore的具体问题举例 •com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communicationslinkfailure •MySQL慢SQL,分区总量大时常见 •MySQL连接数问题 •java.lang.OutOfMemoryError:Javaheapspace/FGC频繁 •Listpartitions等操作会读取全部分区 •Metastore自身缓存占用 •java.lang.StackOverflowError •常见于droppartition分区数量多 •java.net.SocketTimeoutException:Readtimedout •大量分区操作可能会出现 阿里云DLF统一元数据架构 Spark Presto StarRocks Impala Flink HiveServer E-MapReduce MaxComputeHologres Flink DLFMetastoreClient(兼容HMS) 数据湖存储 DLFOpenAPI 统一元数据服务 (DLF)认证 RAM鉴权 对象存储 元数据管理 权限管理 文件存储 Catalog Database ACL RBAC Function Table PBAC TBAC 数据湖格式 阿里云表格存储 统一元数据,多引擎支持 •SDK兼容HMS协议,无缝对接开源与自研计算引擎 •标准OpenAPI,支持客户自建集群及系统集成 全托管增强型元数据服务 •高可用、高性能、可扩展、免运维 •支持多Catalog多租户 •Schema多版本 •Table/PartitionColumnStatistic统计 统一权限控制 •一套配置,多引擎统一管控 •支持RAM和LDAP账号体系 元数据实时检索 •实时消费元数据变更,写入ES进行全文检索 阿里云DLF统一元数据特性与优化 兼容HiveMetastore行为 •DLF客户端实现了IMetaStoreClient接口,直接对接Hive生态引擎 16 •每个元数据操作内部行为与HiveMetastore保持一致 14 300w分区表listPartitionsByFilter耗时(秒) 14.1 5.2 5.4 5.6 2.6 0.5 12 客户端性能优化10 •并发读取,异常重试,分页查询8 •合并重复sd对象,减少IO开销6 4 服务端性能优化 •底层基于阿里云表格存储,高扩展性,高并发性 •分区值自动索引 •支持异步DropCatalog/Database 2 0 分区全部命中 仅一级分区命中 DLF元数据HiveMeta+MySQL 超大表的元数据操作性能和 稳定性优于HMS+MySQL 一级分区范围查询 阿里云DLF统一元数据特性与优化 元数据多版本 元数据审计 元数据检索 开源元数据权限体系 LDAP/AD Unix RangerUserSync WebUIRestAPI Crud RangerAdminStorePolicy DB PullPolicy RangerPlugins HivePlugin HDFSPlugin SparkPlugin ...Plugin HiveAuthorization •Storage-BasedAuthorization •元数据操作权限映射到底层文件的权限 •不支持细粒度鉴权 •SQL-StandardBasedAuthorization •支持GRANT/REVOKE,对库、表鉴权 •依赖HiveServer2 ApacheRanger •中心化的权限控制方案,支持很多Hadoop生态组件,支持PBAC •官方没有提供SparkSQL权限插件 •元数据接口与权限接口分离 •数据湖格式不兼容 阿里云DLF统一权限鉴权流程 E-MapReduce DLF控制台 LDAP SparkThriftServer 元数据管理 权限授权 SQL权限拦截 (代理用户) 获取元数据 DLF统一元数据 元数据服务 鉴权 权限服务 用户自定义权限开关 •Catalog级别权限设置 多种鉴权方式 •通过API/SDK/控制台访问元数据鉴权 •计算引擎通过代理用户的方式进行SQL鉴权 细粒度权限控制 •授权主体可以是RAM用户或自定义角色 •授权资源包括Database、Table、Column、Function •访问资源方式包括Describe、Alter、Drop、Select、Update等 以Spark为例 元数据迁移 Spark Presto Impala HiveServer …… 计算引擎 DLF元数据迁移 HiveMetastore 全量迁入 全量迁出 DLF统一元数据 MySQL 产品化元数据迁入功能 •页面配置一键迁移,兼容Hive2/Hive3 •自动处理网络打通 •免运维迁移任务集群和资源 支持全量元数据迁入 •全量迁移,支持MySQL、AWSGlue迁入 •提供元数据比对工具,用于校验两边数据差异 •可以多次运行重跑 支持全量元数据迁出 •提供元数据迁出工具,百万级元数据快速导出 •支持迁出到MySQL、OSS 元数据抽取 元数据抽取任务 格式推断 全量模式 oss://my-bucket/ 快速模式 (采样) 分区识别 my-table/ my-table2/ 对象存储 dt=20220101/ dt=20220102/ 自动发现数据湖文件schema •人工维护的csv文件 •导入的数据集文件 •…… DLF统一元数据TableSchema