发布于: Aug 22, 2022

大数据分析工具决定了数据计算与存储的性能,在这里我们会为你介绍 JuiceFS 这一分布式文件系统。这是一篇使用 JuiceFS 作为 Amazon EMR 存储后端的快速入门文章,JuiceFS 是一个专门为在云端工作而设计的 POSIX 兼容的共享文件系统并且兼容 HDFS。JuiceFS 与自建的 HDFS 相比,可以节省 50% ~ 70% 的成本,同时达到与自建 HDFS 接近的性能。

在 Hadoop 集群中使用 HDFS 是存储计算耦合架构,集群中的每个节点都同时承担计算和存储的职责。在实际业务场景中,数据量的增长通常远远快于计算需求的增长,但是在 Hadoop 存储计算耦合的架构下,扩容必须要求存储和计算同时扩容,自然会带来计算资源利用率的低下。随着存储规模的增大,HDFS 的负载压力越来越高,但又不支持横向扩展,给运维带来很高的复杂度,NameNode 重启、Full GC 等问题会给整个集群带来数十分钟到数小时的不可用,影响业务健康度。

如果将 Hadoop 存储由 HDFS 换成 Amazon S3,在兼容性、一致性、性能、权限管理等方面要一一解决差异。兼容性方面,用户如果想用 EMR 没有内建的计算引擎,可能要自己解决驱动适配的问题;性能方面的下降可能要扩大集群规模;权限管理方式的变化可能要重建整个 ACL 体系。

在 HDFS 和 Amazon S3 之间是否有一个两全其美的方案呢?JuiceFS 正是这样一个低成本弹性伸缩的全托管 HDFS 服务。可以为客户带来和 HDFS 一样的兼容性、一致性和接近的性能,和 Amazon S3 一样的全托管、弹性伸缩、低成本。

JuiceFS 是面向云原生环境设计的分布式文件系统,完全兼容 POSIX 和 HDFS,适用于大数据、机器学习训练、Kubernetes 共享存储、海量数据归档管理场景。支持全球所有公有云服务商,并提供全托管服务,客户无需投入任何运维力量,即刻拥有一个弹性伸缩,并可扩展至 100PB 容量的文件系统。

在下面的这张架构图中可以看出,JuiceFS 已经支持将各种公有云对象存储作为后端数据持久服务,同时也支持了开源对象存储,如 Ceph、MinIO、Swift 等。在 Linux 和 macOS 上提供 FUSE 客户端,在 Windows 系统上也提供原生客户端,都可以将 JuiceFS 的文件系统挂载到系统中,使用体验和本地盘一模一样。在 Hadoop 环境中提供 Java SDK,使用体验和 HDFS 一样。JuiceFS 的元数据服务在所有公有云上都部署了全托管服务,客户不用自己维护任何服务,学习和使用门槛极低。

TPC-DS 由事务性能管理委员会(TPC)发布,该委员会是目前最知名的数据管理系统评测基准标准化组织。TPC-DS 采用星型、雪花型等多维数据模式。它包含 7 张事实表,17 张纬度表,平均每张表含有 18 列。其工作负载包含 99 个 SQL 查询,覆盖 SQL99 和 2003 的核心部分以及 OLAP。这个测试集包含对大数据集的统计、报表生成、联机查询、数据挖掘等复杂应用,测试用的数据和值是有倾斜的,与真实数据一致。可以说 TPC-DS 是与真实场景非常接近的一个测试集,也是难度较大的一个测试集。

ningxia (cn-northwest-1) region
1 Master m5.2xlarge 8 vCore, 32 GiB memory, 128 GB EBS storage
3 Core m5d.4xlarge 16 vCore, 64 GiB memory, 600 SSD GB storage
emr-6.1.0 Hive 3.1.2, Spark 3.0.0, Tez 0.9.2
Juicefs-hadoop-1.0-beta.jar
Juicefs 专业试用版
使用 500GB TPC-DS 数据集 测试。

juicefs.cache-dir=/mnt*/jfs
juicefs.cache-size=10240M
juicefs.cache-full-block=false

由于完整的测试时间比较长,我们选取了部分测试集作为参考。每个测试脚本均执行 2 次并取两次的平均值作为测试结果。测试耗时时间越短表明结果越好。其中左图为每条测试脚本所花的绝对时间。右图为以 S3 为基准的相对时间。

Hive on Parquet 测试总时间开销:

  • JuiceFS 685.34 秒
  • HDFS 615.31 秒
  • S3 1887.99 秒

JuiceFS 比 S3 速度提升 175%,比 HDFS 慢 11%。

Hive on ORC 测试总时间开销:

  • JuiceFS 789.58 秒
  • HDFS 695.25 秒
  • S3 1796.34 秒

JuiceFS 比 S3 速度提升 127%,比 HDFS 慢 13%。

我们通过 Spark 来做数据写入测试,写入 143.2 GB 文本(未分区)格式的数据,具体的 SQL 语句如下:

CREATE TABLE catalog_sales2 AS SELECT * FROM catalog_sales;

Juicedata 与亚马逊云科技联合开发的解决方案通过 Amazon Web Services CloudFormation 模板可以在 Amazon EMR 中自动配置好可用的 JuiceFS 环境,并且提供一个 TPC-DS Benchmark 测试程序供使用。上述测试结果均使用该解决方案搭建环境。

相关文章