郑锴,花名铁杰,阿里巴巴高级技术专家,Apache Hadoop PMC。深耕分布式系统开发和开源大数据多年,目前专一于在阿里云上研发业界领先的 Hadoop/Spark 大数据平台和数据湖解决方案产品。
本文内容来自由阿里云计算平台事业部与阿里云开发者社区联合主办的
大数据+AI meetup 2020第二站·上海
讲师郑锴的分享《数据湖存储架构选型》
1、数据湖是个潮流
简单来说,数据湖的理念就是说从一个企业的视角来说,把整个数据集中的统一的存储在一块儿,主要经过 BI 和 AI 的手段来计算分析原始的数据。数据的类型不光是结构化、半结构化的,还包括音视频,这样的一些材料。
咱们为何要基于数据湖来作这样的一个转型呢,数据湖可以给咱们带来什么样的好处呢。
第一,打破数据孤岛。就是说原始的数据咱们先不考虑怎么去处理它、分析它,甚至是说咱们先不考虑它到底会不会解决很大的业务上面的问题,咱们先把它放在一块儿,打破数据孤岛,为后面的业务发展演化和计算,可能就提供了很好的一个机会。
第二,基于统一的、集中的整个数据的收集,能够支持各类各样的计算。
第三,弹性。咱们数据湖自己是有弹性的,而后支持的计算也是有弹性的。弹性可能在云上面带来成本的很大的伸缩性的空间,为咱们优化存储和计算的成本带来了这样一个可能。
第四,管理。咱们把数据放在一块儿,能够提供统一的、集中的这样一个管理控制。
熟悉 Hadoop 整个生态的话,过去常常会谈到一个很是大的、很是复杂的生态的大图。那个图里面涉及到很是多的组件,结构关系很是复杂。而基于数据湖的架构,能够获得大大的简化。
以下图所示,最下面是数据湖自己,基于这样的一个数据湖存储,咱们能够有一个统一的元数据服务,作数据湖的建立管理,而后围绕数据湖作数据的治理开发,和各类数据源的集成打通。可是这个并非目的,最主要的做用仍是说咱们要作计算。数据湖的计算,简单来说就是说咱们有各类各样的开源的 BI 的引擎,或者 AI 的引擎,每一个引擎可能有本身的集群,而后基于数据湖来进行相应的计算场景的处理。而后知足咱们最上面的基于数据湖的各类应用,好比说数据大屏,数据报表,数据挖掘,机器学习。
2、湖存储/加速:挑战很大
第一,最大的一个因素是数据量的问题。按照数据湖的理念,咱们要把全部的数据所有都放在一块儿,那么在数据的规模上来说是很是大的,数据规模能够膨胀到 PB、EB 级别。
第二,文件的规模。从存储系统的角度来说,文件的规模能够说也是很是大,要么就是层次很是深,要么就是很是扁平。扁平就是说一个目录下可能会有几百万的文件数,造成这样一个超大的目录。
第三,成本。我要收集那么多的数据,我要把所有原始的数据放在一块儿,成本上怎么去优化。
另一个挑战就是说,按照数据湖的架构,它背后的本质是存储和计算分离。如今是专业化的分工,存储的作存储,计算的作计算,这个带来很是大的研发效率的这样一个提高。可是分离了以后,怎么知足计算的吞吐,怎么知足计算对性能的这样一个需求,这也是带来很大挑战的一个缘由。
另外,在数据湖的整个的方案下面,要考虑到计算场景是很是丰富的,计算的环境也是错综复杂的。大数据,咱们要支持分析、交互式、实时计算。而后 AI 有本身的各类各样的引擎来训练。
而后是计算的场景,包括 EMR 、ECS 自建、云原生、混合云。这样的一些环境可能都会涉及到,咱们怎么提供一个统1、集中的存储的解决方案,来知足这样一个丰富的计算场景和环境。
假设咱们可以克服数据量上面的挑战,知足各类计算的环境,也可以提供缓存加速,也可以知足存储的这样一个性能。如今架构师决定了咱们要作数据迁移,实施层面的挑战是什么。咱们要作大量数据的迁移,以后要作正确性的比对。另外,好比说, Hive 数仓,Spark 做业,可能上千上万的做业咱们决定要迁移,迁移了以后要作结果的比对。迁移上来以后,可能我过去有一套成熟的治理、运维的体系,在新的架构下面,我怎么可以尽可能少改,可以继续获得支持。这是实施层面的挑战。
3、完美选项之 checklist
数据湖架构下面,从存储、加速的视角,咱们能够看到有这样一些挑战,那么理想的选型是什么样子的,要考虑到哪些因素,这里作了一个总结。
第一, 基于对象存储,大规模存储能力。
第二,大目录元数据操做能力。
第三,策略灵活的缓存加速能力。
第四,和计算打通优化的能力。
第五,支持数据湖新型表格存储的能力。
第六,归档/压缩/安全存储的能力。
第七,全面的大数据+ AI 生态支持。
第八,强大迁移能力,甚至是无缝迁移能力。
以上就是做为一个理想的数据湖的存储、加速方案,最好具有的一个 checklist 。考虑升级到数据湖架构的这样一些架构师能够对照一下这个 checklist ,来作方案的选型。
4、阿里云上的 JindoFS
接下来看一下阿里云上面在作的 JindoFS 这样一个方案具体是什么样的状况。简单来说咱们在作三个事情。
第一个事情就是说,咱们是基于阿里云 OSS ,就是面向 Hadoop , Spark 和 AI 的生态,作了这样的一个 SDK ,而后是优化版本的。咱们知道 Hadoop 是具备 OSS 的支持的,咱们为何要作一个新的。简单来说,就是说咱们要作好优化。首先,咱们要作好元数据操做的优化,特别是对于大目录要作好优化。另一个就是 Rename 优化。咱们知道对象存储一个关键的元数据操做就是目录的 rename 操做,它是一个很是大的挑战,这是对象存储的本质决定的。由于对象存储不是文件系统,它其实没有目录的概念,它的目录彻底是模拟出来的。也就是说,你对一个目录进行操做,就必需要对成千上万个对象相应的进行操做来模拟。甚至是说,在一些计算场景里面,是否是可以作到跳过 rename 。另一个是读写 IO 优化,能不可以充分的利用好对象存储带来的水平扩展的这样一个能力,来作好lO的优化。最后, OSS 的多版本,或者 OSS 的归档,咱们是否是可以支持。以上是咱们第一个层面的工做。
第二个事情是为 OSS 存储提供一个缓存加速的分布式系统。首先是数据的一致性,包括元数据的一致性和缓存数据的一致性。而后是磁盘缓存,包括写时缓存,读时缓存,以及磁盘的负载均衡。最后是水位清理,包括缓存块 LRU 淘汰。
第三个事情是说,咱们也打造了一个基于 OSS 的存储扩展的系统。首先是管理元数据,包括内存缓存,细粒度锁。其次是文件数据分块存放, OSS 1备份,缓存1备份。而后是性能优化,元数据操做广泛 > HDFS ,缓存读 + OSS 读 > HDFS 。最后是高扩展,基于 OSS 的大规模水平扩展。
下面对照以前提到的 checklist ,看一下 JindoFS 的支持状况。
-
第一,基于对象存储,大规模存储能力。支持,基于阿里云对象存储 OSS , OSS 支持 EB 级海量存储。
-
第二,大目录元数据操做能力。支持,JindoFS 在超大目录数据加载、检索、统计、rename 上具备几倍的性能优点。
-
第三, 缓存加速的能力。支持,JindoFS 支持在大数据分析场景、交互式查询场、机器学习训练 场景和云原生应用场景提供策略灵活的分布式缓存加速能力;缓存加速的性能提高大于 50% 的效果优于开源方案。
-
第四,和计算打通优化的能力。支持,和 JindoFS co-design 的 JindoTable 提供对数仓表的缓存、计算加速、治理优化和归档存储支持。
-
第五,支持数据湖新型表格存储的能力。支持,JindoFS 提供 Delta 、Hudi 和 Iceberg 所须要的存储接口和事务支持语义,并支持 Flink 实时入湖。
-
第六,归档/压缩/安全存储的能力。支持, JindoFS 在目录、表、分区级别支持 OSS 归档;提供透明压缩;支持 AK 免密保护,Ranger 受权和审计扩展功能。
-
第七,全面的大数据+ AI 生态支持。支持,JindoFS 全面兼容和支持开源生态,提供:Hadoop JindoFS SDK;Jindo Job Committer ; POSIX fuse 支持 JindoFuse ;TensorFlow FileSystem ;Flink connector ;Kite SDK 。
-
第八,强大迁移能力甚至是无缝迁移的能力。部分支持,提供优化的 JindoDistCp 工具,支持 Hadoop 数据源导入。
本次分享详细PPT请扫码下方二维码关注“数据湖技术圈”微信公众号回复“1101数据湖领取”!
推荐相关阅读:
更多数据湖相关信息交流请加入
阿里巴巴数据湖技术钉钉群
本文分享自微信公众号 - Delta Lake技术圈(deltalake-emr2020)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。web