传统应用挂载对象存储,满足集群高并发的大数据分析场景

百家 作者:QingCloud 2021-04-19 22:19:07
对象存储为用户提供了可无限扩展的通用数据存储服务,具有安全可靠、简单易用、高性能、低成本等特点,这使得对象存储成为海量数据场景的最佳选择。

为了使用对象存储,应用需要基于 API 或 SDK 开发,但是很多使用本地目录访问数据的传统应用并不具备修改的条件。因此需要通过挂载工具,比如 S3fs 等,将对象存储挂载为本地文件系统,使得传统应用对接上对象存储。然而, S3fs 等方案并不支持多个客户端同时写入,这就无法满足部分大数据应用多节点部署的要求。

为了解决上述问题,这里介绍一个基于对象存储服务的分布式 POSIX 文件系统 —— JuiceFS,它将 Metadata 存储在外部的 Key-Value 服务中(比如 Redis),而实际数据存储在对象存储服务上,这样集群内的应用可以挂载同一个目录并获得统一的视图, 支持上千个客户端同时并发读写同一个目录 。

目前 JuiceFS 已经完成了与 QingStor 对象存储服务的对接。本文将会以 Ubuntu 平台为例,详细讲解如何基于 QingStor 对象存储来搭建 JuiceFS 集群,并展示相应的测试结果。


1. 部署

  • 下载 JuiceFS

# curl -ssL https://github.com/juicedata/juicefs/releases/download/v0.11.0/juicefs-0.11.0-linux-amd64.tar.gz > juicefs.tar.gz# tar -xvf juicefs.tar.gz && cd juicefs

  • 启动 Redis

# apt install redis

可以通过 systemd 来查看 redis 运行的状态。
# systemctl status redis.service


  • 创建 Volume


使用 JuiceFS 进行格式化:
# ./juicefs format \--storage qingstor \ --bucket https://<bucket_name>.pek3b.qingstor.com \ --access-key <access_key> \ --secret-key <secret_key> \ <redis-url> test

 

  • 挂载 Volume


使用 JuiceFS 将对象存储挂载到 ~/jfs:
# ./juicefs mount -d <redis-url> ~/jfs

该步骤在多个节点上重复执行,就可以建立起集群,只要求这些节点都访问同一个 Redis 节点。

图 1  JuiceFS 集群架构图

现在我们已经创建好了一个 JuiceFS 集群,这个集群的架构如图 1 所示。

Node 1~3 是部署了 JuiceFS 的应用节点。此外,我们还部署了一个独立的 Redis 服务作为 JuicsFS 的 metadata 服务,所有的实际数据会写入 QingStor 对象存储中。

接下来我们就在这个目录里创建一些文件进行测试,对比测试下 JuiceFS 的效果。

2. 测试


  • 测试一:在单个节点上创建文件


Node 1
root@i-8cvklc58:~/jfs# dd if=/dev/urandom of=example bs=1M count=10241024+0 records in1024+0 records out1073741824 bytes (1.1 GB, 1.0 GiB) copied, 42.1686 s, 25.5 MB/s

  • 测试二:在不同的节点上并发创建文件


Node 1
root@i-ywbaq5jc:~/jfs# dd if=/dev/urandom of=example1 bs=1M count=10241024+0 records in1024+0 records out1073741824 bytes (1.1 GB, 1.0 GiB) copied, 42.1694 s, 25.5 MB/s

Node 2
root@i-8cvklc58:~/jfs# dd if=/dev/urandom of=example2 bs=1M count=10241024+0 records in1024+0 records out1073741824 bytes (1.1 GB, 1.0 GiB) copied, 42.1925 s, 25.4 MB/s

Node 3
root@i-7gksnd1q:~/jfs# dd if=/dev/urandom of=example3 bs=1M count=10241024+0 records in1024+0 records out1073741824 bytes (1.1 GB, 1.0 GiB) copied, 42.1689 s, 25.5 MB/s

从测试结果中可以发现,JuiceFS 的性能没有受到多个节点并发的影响。我们可以在多个节点上并发写入文件,充分发挥对象存储并发吞吐高的特点,这对大数据应用来说是非常友好的。

  • 查看 JuiceFS 写入的数据


图 2  JuiceFS 写入的数据文件

如图 2 所示,我们注意到JuiceFS 写入的数据文件与 S3fs 有所不同,由于 JuiceFS 选择了在 Redis 服务中维护文件系统的 metadata,因此我们在 QingStor 对象存储中看到的是经过 JuiceFS 切分后的 chunk 文件而不是写入的原始文件。

3. More ...


现在,青云QingCloud 公有云与 JuiceFS 联合推出了完全托管的分布式 POSIX 文件系统,非常适合数据备份、共享空间、容器持久存储和大数据分析等业务,大家可以点击阅读原文解更多。

 作者:QingStor 资深攻城狮 xuanwo


点击阅读原文或扫描二维码
免费试用 QingStor 企业级分布式存储

- FIN -


相关文章推荐






QingStor 对象存储架构设计及最佳实践(下)


QingStor 对象存储架构设计及最佳实践(上


数据版本化,破解机器学习重现性难题的正确方法




点击了解JuiceFS



关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接