【高手问答 284 期汇总】 —— 为什么说存算分离是大数据平台的未来

原创
2022/06/24 16:36
阅读数 2.9K
AI总结

随着累积的数据量的增大,大数据业务量的增多,数据存储和处理的成本越来越高,企业数据基础设施的投资越来越大。同时,大数据处理组件多,不同组件使用不同的数据处理格式,比如大家熟悉的数据湖、数据仓库使用的就是不同的格式,多样化的数据格式导致数据存储变得复杂,系统中应对不同的场景,往往同样的数据需要存储多份,不同组件之间还需要大量的数据拷贝和格式转换,消耗大量的资源。

在当前越来越强调云原生的环境下,存储计算分离已经是大势所趋。传统基于 HDFS 的大数据平台架构在云上已经不太适合,随着数据量的增长 HDFS 的高运维成本问题也会逐渐凸显。同时由于对象存储并不是一个完备的文件系统(比如无法原子重命名目录、list 目录性能差等),无法完整替代 HDFS,Hadoop 社区为了支持对象存储用了很多折衷方案来实现,但是实际效果并不好。

JuiceFS 是一款开源分布式文件系统,创新地将对象存储作为底层存储介质,实现了存储空间的无限扩展。任何存入 JuiceFS 的文件都会按照特定规则被拆分成固定大小的数据块保存在对象存储,数据块的元数据则保存在 Redis、MySQL、TiKV 等数据库中。同时 JuiceFS 的 Hadoop Java SDK 完全兼容 HDFS API,提供完整的文件系统特性,大数据组件可以无缝从 HDFS 迁移到 JuiceFS。

本期高手问答 6 月 9 日 - 6 月 15 日,我们邀请到 Juicedata 技术专家 @高昌健,和大家一起探讨关于存算分离架构下的大数据存储系统选型相关的问题。

可讨论的问题包括但不限于:

  • 存算架构的发展历程
  • 大数据平台的架构设计
  • 数据湖、湖仓一体架构设计
  • 存算分离的优缺点
  • HDFS、对象存储、JuiceFS 等存储系统的特性比较

嘉宾介绍:

高昌健

十年互联网行业从业经历,曾在知乎、即刻、小红书多个团队担任架构师职位,专注于分布式系统、大数据、AI 领域的技术研究。现在 Juicedata 担任技术专家,参与建设 JuiceFS 开源社区。


问答汇总

问:HDFS,  JuiceFS, NFS 这三者的存储格式有啥优点和缺点?

答:HDFS 和 JuiceFS 比较类似,会对存储的文件进行分块(block),区别在于 HDFS 默认分块的大小是 128MiB,JuiceFS 是 4MiB。分块的好处是对于大文件可以分散存储,提高读写并发,缺点是粒度越大对小文件越不友好(HDFS 是一个很好的例子)。而 NFS 主要是一种协议,存储格式依赖的是操作系统的文件系统。

问:想了解下 JuiceFS 是否适用于  windows  server 的平台存储平台? 如果有需要在 windows server 做存储 ,有什么推荐的框架吗?  

答:JuiceFS 同时支持 Linux、Windows、macOS 3 种平台,因此可以在 Windows Server 上使用 JuiceFS,有兴趣可以参考这个文档

问:大批量的小文件,JuiceFS 处理怎么样,JuiceFS 的架构上有没有什么突出的优势,使用了什么设计模式?

答:相比一些常见的分布式文件系统(比如 HDFS),在存储同样数量文件的条件下(比如都存储 1 亿个小文件),JuiceFS 元数据引擎所需的存储空间更小(比如用 Redis 存储每个 inode 只需要 300 字节内存),因此 JuiceFS 可以很轻松地支撑存储数十亿、甚至上百亿的小文件。

问:存算分离的缺点是啥?什么情况不建议用,什么场景用了没必要?

答:1. 存算分离架构的缺点是相比存算耦合架构性能会有下降(网络 IO 延迟),以及某些存储系统(比如对象存储)因为缺失了文件系统的一些特性(比如目录原子重命名、强一致性等)从而影响计算任务的性能和稳定性; 2. 不建议使用的场景:大数据平台没有上云的需求,计算任务没有弹性伸缩的需求。

问:1. 可理解成大数据平台未来一定是存算分离的吗。2. 上面说的存算一体,缺点是在云上不够灵活,没法充分发挥云上资源弹性伸缩的特点;是云本身的问题,还是说存算一体只要离开了云就能灵活了。

答:1. 是的,这是我们的理解。云原生已经是大势所趋,大数据生态的各种组件也都在朝着云原生的方向迭代; 2. 是存算一体架构的问题,和是否使用云没有关系,不管是公有云还是私有云。

问:在云上如何跟 JuiceFS 结合使用?

答:JuiceFS 的架构主要由元数据引擎、数据存储和客户端组成,元数据引擎可以用很多流行的数据库(如 Redis、MySQL、PostgreSQL 等),在云上一般也都有托管服务可以开箱即用;数据存储主要支持对象存储(如 AWS S3、阿里云 OSS、腾讯云 COS 等),JuiceFS 已经支持超过 30 种对象存储。

问:是将计算集群和存储集群分开么,有没有相关的介绍?

答:客户端在大数据平台上是通过 JuiceFS Hadoop Java SDK 来使用,计算引擎(如 Spark、Hive 等)通过这个 SDK 来访问 JuiceFS。通过这种架构就可以将计算集群和存储集群分离,更多关于 JuiceFS 的介绍可以参考官方文档

问:JuiceFS 相对 HDFS 数据压缩比怎么样?

答:JuiceFS 默认不会对数据进行压缩,用户可以自己手动开启,可选的压缩算法包括 Zstandard 和 LZ4。不过在大数据平台这个场景不建议开启压缩功能,因为大数据平台常用的数据格式(如 Parquet、ORC)已经对数据进行了压缩,重复压缩并没有明显收益。

问:对象存储在 list objects 和 copy object 等操作方面性能不算太好,在存算分离的场景里是怎么解决这类性能问题的呢?

答:对象存储执行这两种操作性能不好的本质原因是对象存储的元数据设计上并没有类似文件系统的目录结构,因此 list 一个目录其实是遍历所有包含这个前缀的 key。JuiceFS 的元数据是完全按照文件系统来设计的,因此任何元数据相关的操作都能很快完成并保证一致性(比如重命名一个目录)。具体可以参考文档

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
AI总结
返回顶部
顶部