简介: 最佳实践,以DLA为例子。DLA致力于帮助客户构建低成本、简单易用、弹性的数据平台,比传统Hadoop至少节约50%的成本。其中DLA Meta支持云上15+种数据数据源(OSS、HDFS、DB、DW)的统一视图,引入多租户、元数据发现,追求边际成本为0,免费提供使用。DLA Lakehouse基于Apache Hudi实现,主要目标是提供高效的湖仓,支持CDC及消息的增量写入,目前这块在加紧产品化中。DLA Serverless Presto是基于Apache PrestoDB研发的,主要是做联邦交互式查询与轻量级ETL。
背景
数据湖当前在国内外是比较热的方案,MarketsandMarkets (https://www.marketsandmarkets.com/Market-Reports/data-lakes-market-213787749.html)市场调研显示预计数据湖市场规模在2024年会从2019年的79亿美金增长到201亿美金。一些企业已经构建了自己的云原生数据湖方案,有效解决了业务痛点;还有很多企业在构建或者计划构建自己的数据湖。Gartner 2020年发布的报告显示(https://www.gartner.com/smarterwithgartner/the-best-ways-to-organize-your-data-structures/)目前已经有39%的用户在使用数据湖,34%的用户考虑在1年内使用数据湖。随着对象存储等云原生存储技术的成熟,一开始大家会先把结构化、半结构化、图片、视频等数据存储在对象存储中。当需要对这些数据进行分析时,会选择比如Hadoop或者阿里云的云原生数据湖分析服务DLA进行数据处理。对象存储相比部署HDFS在分析性能上面有一定的劣势,目前业界做了广泛的探索和落地。
一、基于对象存储分析面临的挑战
1、什么是数据湖
Wikipedia上说数据湖是一类存储数据自然/原始格式的系统或存储,通常是对象块或者文件,包括原始系统所产生的原始数据拷贝以及为了各类任务而产生的转换数据,包括来自于关系型数据库中的结构化数据(行和列)、半结构化数据(如CSV、日志、XML、JSON)、非结构化数据(如email、文档、PDF、图像、音频、视频)。
从上面可以总结出数据湖具有以下特性:
- 数据来源:原始数据、转换数据
- 数据类型:结构化数据、半结构化数据、非结构化数据、二进制
- 数据湖存储:可扩展的海量数据存储服务
2、数据湖分析方案架构
主要包括五个模块:
- 数据源:原始数据存储模块,包括结构化数据(Database等)、半结构化(File、日志等)、非结构化(音视频等);
- 数据集成:为了将数据统一到数据湖存储及管理,目前数据集成主要分为三种形态外表关联、ETL、异步元数据构建;
- 数据湖存储:目前业界数据湖存储包括对象存储以及自建HDFS。随着云原生的演进,对象存储在扩展性、成本、免运维有大量的优化,目前客户更多的选择云原生对象存储作为数据湖存储底座,而不是自建HDFS。
- 元数据管理:元数据管理,作为连接数据集成、存储和分析引擎的总线;
- 数据分析引擎:目前有丰富的分析引擎,比如Spark、Hadoop、Presto等。
3、面向对象存储分析面临的挑战
对象存储相比HDFS为了保证高扩展性,在元数据管理方面选择的是扁平的方式;元数据管理没有维护目录结构,因此可以做到元数据服务的水平扩展,而不像HDFS的NameNode会有单点瓶颈。同时对象存储相比HDFS可以做到免运维,按需进行存储和读取,构建完全的存储计算分离架构。但是面向分析与计算也带来了一些问题:
- List慢:对象存储按照目录/进行list相比HDFS怎么慢这么多?
- 请求次数过多:分析计算的时候怎么对象存储的请求次数费用比