您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[DataFunSummit2023:数据湖架构峰会]:数据湖统一元数据和存储管理 - 发现报告

数据湖统一元数据和存储管理

AI智能总结
查看更多
数据湖统一元数据和存储管理

数据湖统一元数据和存储管理 演讲人:范佚伦—阿里云 数据湖管理与存储优化 数据湖格式管理与优化 数据湖统一元数据 云上数据湖架构 云上数据湖架构 什么是数据湖 n相比于传统数仓内置存储,数据湖通过存算分离实现统一存储 A data lake is a system orrepositoryof data stored in itsnatural/rawformat, usuallyobject blobsor files. A data lake is usuallya single storeof all enterprise data includingraw copiesof sourcesystem data and transformed data used for tasks such asreporting, visualization, advancedanalytics and machine learning. A data lake can includestructured datafrom relational databases(rows and columns),semi-structured data(CSV, logs, XML, JSON),unstructured data(emails,documents, PDFs) andbinary data(images, audio, video). •统一的存储,解决数据孤岛问题•灵活性强,存算分离,开放的数据,多种引擎分析 n相比于传统数仓事前建模,数据湖可以保存原始数据 A data lake is acentralized repositorythat allows you to storeall your structured andunstructured data at any scale. You can store yourdataas-is, without having to first structure thedata, and rundifferent types of analytics—fromdashboardsandvisualizationstobig dataprocessing,real-time analytics, andmachine learningto guide better decisions. •事后建模•云上大规模、高可用、低成本的中心化存储•数据类型丰富,支持结构化、半结构化、非结构化数据类型•存储原始数据,避免数据丢失 Azure Data Lake includes all the capabilities required to make it easy for developers, datascientists, and analyststo storedata of any size, shape, and speed, and doall types of processingand analyticsacross platforms andlanguages. n相比于传统数仓,数据湖缺乏数据治理、性能 •安全,权限•事务性•数据质量•性能 数据湖是统一存储池,可对接多种数据输入方式,您可以存储任意规模的结构化、半结构化、非结构化数据。数据湖可无缝对接多种计算分析平台,直接进行数据处理与分析,打破孤岛,洞察业务价值。同时,数据湖提供冷热分层转换能力,覆盖数据全生命周期。 数据湖逐渐支持数仓能力,实现湖仓一体 n元数据统一与数据湖管理 •统一元数据层查询和定位数据•开放的数据格式支持多引擎直接读取•统一的元数据/ SQL API•统一权限提供企业级数据管理和安全的能力 n数据湖查询优化 •数据缓存加速•数据索引加速 n利用数据湖格式实现事务层 •支持ACID事务隔离,解决读写冲突•支持多版本时间旅行,指明每个Table版本所包含的数据对象•同时支持流批混合读写• n统一的数据湖存储层 •利用云上对象存储•存储原始数据,支持半结构化和非结构化数据 阿里云数据湖架构 •E-MapReduce (Hive/Spark/Presto/Impala/Starrocks)•MaxCompute、Flink、Hologres •统一元数据管理,支持跨引擎分析•统一权限管理•搭配JindoCache数据湖缓存加速•数据湖存储管理和自动冷热分层 n使用OSS作为数据湖存储 •低成本,高可靠性,无限扩展,高吞吐,免运维•开启OSS-HDFS,支持POSIX,高性能rename/list•通过冷归档降低成本 阿里云DLF(Data Lake Formation)简介 统一元数据服务 l存算分离架构下,提供全托管的有状态服务l高可用、高性能、可扩展、免运维l兼容开源HMS协议,无缝对接开源/自研引擎l总量支持超过10万DB,1亿Table,10亿Partition 权限与安全 l支持按库/表/列对湖内数据进行权限配置l支持数据访问日志审计 数据管理与优化 l存储分析与成本优化l湖表数据分布与索引加速l数据生命周期管理 数据湖统一元数据 开源元数据体系 nHive是开源数仓的事实标准 •各个引擎逐渐形成了围绕着HiveMetastore的元数据体系 nHiveMetastore管理元数据流程 •大数据引擎通过HiveMetastoreclient,使用thrift连接到HiveMetastore•Metastore接收请求,通过HMSHandler处理对应操作•最终元数据读写通过DataNucleus框架连接到外部数据库•HiveMetastore本身无状态,可以部署多个 n使用RDBMS存储元数据 •大部分使用MySQL为主•多张表存储元数据信息,如DBS,TBLS,PARTITIONS,SDS 开源元数据体系的问题和挑战 n高级特性支持有限 nHiveMetastore的具体问题举例 •com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure•MySQL慢SQL,分区总量大时常见•MySQL连接数问题•java.lang.OutOfMemoryError: Java heap space/ FGC频繁•Listpartitions等操作会读取全部分区•Metastore自身缓存占用•java.lang.StackOverflowError•常见于drop partition分区数量多•java.net.SocketTimeoutException: Read timed out•大量分区操作可能会出现 •不能通过Time-Travel查询数据/元数据的历史快照•ACID特性和Hive引擎绑定 n不易于对接内部自研引擎/云上数仓 •HiveMetastore额外部署运维,单点问题,需要网络直连•引擎需要实现Thrift协议接入 n受限于单个数据库瓶颈 •单个MySQL数据量瓶颈•高可用问题 阿里云DLF统一元数据架构 n统一元数据,多引擎支持 •SDK兼容HMS协议,无缝对接开源与自研计算引擎•标准OpenAPI,支持客户自建集群及系统集成 n全托管增强型元数据服务 •高可用、高性能、可扩展、免运维•支持多Catalog多租户•Schema多版本•Table/Partition Column Statistic统计 n统一权限控制 •一套配置,多引擎统一管控•支持RAM和LDAP账号体系 n元数据实时检索 •实时消费元数据变更,写入ES进行全文检索 阿里云DLF统一元数据特性与优化 n兼容HiveMetastore行为 •DLF客户端实现了IMetaStoreClient接口,直接对接Hive生态引擎•每个元数据操作内部行为与HiveMetastore保持一致 n客户端性能优化 •并发读取,异常重试,分页查询•合并重复sd对象,减少IO开销 n服务端性能优化 •底层基于阿里云表格存储,高扩展性,高并发性•分区值自动索引•支持异步DropCatalog/Database 阿里云DLF统一元数据特性与优化 开源元数据权限体系 nHiveAuthorization •Storage-Based Authorization•元数据操作权限映射到底层文件的权限•不支持细粒度鉴权•SQL-Standard Based Authorization•支持GRANT/REVOKE,对库、表鉴权•依赖HiveServer2 nApache Ranger •中心化的权限控制方案,支持很多Hadoop生态组件,支持PBAC•官方没有提供SparkSQL权限插件•元数据接口与权限接口分离•数据湖格式不兼容 阿里云DLF统一权限鉴权流程 n用户自定义权限开关•Catalog级别权限设置 n多种鉴权方式 •通过API/SDK/控制台访问元数据鉴权•计算引擎通过代理用户的方式进行SQL鉴权 n细粒度权限控制 •授权主体可以是RAM用户或自定义角色•授权资源包括Database、Table、Column、Function•访问资源方式包括Describe、Alter、Drop、Select、Update等 元数据迁移 n产品化元数据迁入功能 •页面配置一键迁移,兼容Hive2/Hive3•自动处理网络打通•免运维迁移任务集群和资源 n支持全量元数据迁入 •全量迁移,支持MySQL、AWS Glue迁入•提供元数据比对工具,用于校验两边数据差异•可以多次运行重跑 n支持全量元数据迁出 •提供元数据迁出工具,百万级元数据快速导出•支持迁出到MySQL、OSS 元数据抽取 n自动发现数据湖文件schema •人工维护的csv文件•导入的数据集文件•…… n格式与分区自动识别 •文件格式自动识别,包括csv/json/parquet/orc/hudi/delta•自动识别出符合Hive分区的目录结构并创建分区•支持全量或采样抽取 •发现表字段更新时,全量更新表结构或者仅新增列•发现文件已被删除时,是否删除表的元数据•支持cron定时执行 数据湖存储管理与优化 通过元仓加强元数据管理 n实时元仓架构 •基于Hologres的元数据仓库,用于补充构造元数据相关的额外指标•数据源包括计算引擎hook消息、元数据变更消息、存储分析数据等 n丰富的Dataprofile指标 •表大小、分区大小、行数、文件数•小文件数、小文件占比、文件冷热度•湖格式有效文件数、无效文件数 n元仓指标应用 •为计算引擎提供tableSize等信息•DLF元数据管理•提供OpenAPI供用户分析 DataProfile关键指标实现 n表、分区存储大小 •不同引擎写入的statistics属性不同•totalSize、spark.sql.statistics.totalSize•引擎不一定每次都更新•参数开关hive.stats.autogather、spark.sql.statistics.size.autoUpdate.enabled•DLF Data Profile通过OSS存储获取大小 DataProfile关键指标实现 n访问频次 n最后访问时间 •通过引擎hook解析plan血缘•实时通过消息推送到DLF•支持多种提交方式•支持Spark、Hive•可用于将不常访问的表设置成低频存储 •离线解析OSS访问日志,分析表/分区最后读取时间•支持OSS/OSS-HDFS•可用于将长时间不使用的表/分区删除或归档 数据湖存储优化 n生命周期管理 •基于库、表、分区粒度设定存储生命周期规则•将不常访问的数据设置为低