分布式虚拟文件系统,如何实现多种存储系统的融合

news2024/12/27 12:55:35

随着大数据技术和人工智能技术的发展,各种框架应运而生,比如大数据领域中的MapReduce和Spark,人工智能领域中的TensorFlow和PyTorch等。为了给不同的计算框架提供存储服务,存储的服务类型也是很多,常见的如AWS的S3存储、NFS文件系统和Ceph分布式系统等。

业务的多样化和存储系统的多样化导致计算与存储之间的关系异常复杂,如下是一个计算存储关系的示意图。企业为了维护这种复杂的关系会消耗大流量的精力。有人可能会想,有没有一种方法屏蔽存储之间的差异,为计算提供统一的接口?

想到这里,大家可能会想到我们前面介绍的Linux虚拟文件系统的概念。虚拟文件系统是应用程序和具体文件系统(如Ext4)之间的一个抽象层,为应用程序提供了统一的接口。我们是不是可以在计算和存储系统之间也构建一个这样的抽象层,为不同的计算平台提供统一的接口呢?

Alluxio就是这样一种实现,它实现了多多种存储平台的聚合,为计算平台提供统一的接口。如下是Alluxio在计算和存储系统中的关系图,可以看到Alluxio以存储系统为后端,可以管理S3、HDFS和文件系统等多种类型的存储系统,进而为计算平台提供目前市面上常见协议的接口。

其实Alluxio的功能可不仅仅是实现存储的整合和提供统一的接口,还有很多其他的功能特性。这些特性包括无拷贝的数据管理、基于缓存的数据移动和加速以及基于云的多层数据策略。

Alluxio的基本原理非常简单,首先是Alluxio节点会对后端多种存储系统的资源进行聚合,提供统一的命名空间;其次是其利用Alluxio节点的本地内存和持久化存储将计算平台需要访问的数据缓存起来,提供数据访问加速。

由于Alluxio节点处于计算与存储系统中间,很容想到Alluxio节点可能会成为性能瓶颈。为了避免Alluxio成为性能瓶颈,Alluxio设计时就采用了分布式架构,通过节点的横向扩展可以实现近似线性的性能扩展。

如下图所示是Alluxio的整体架构示意图,Alluxio的节点分为两中不同的角色,一种称为master节点,负责管理元数据和工作流;另外一种称为worker节点,负责本地数据缓存和后端数据交互。可以看出这个架构与HDFS的架构非常类似。这里Master节点采用主从架构,并借助ZooKeeper实现选主。

Alluxio的使用也比较简单,我们可以通过虚拟机部署一个单Master,单Worker的环境。在使用Alluxio需要安装JDK,大家可以自行安装,本文不再赘述这部分的内容。

二进制的安装非常简单,我们只需要从官网下载二级制包,然后解压到本地就可以。具体可以通过如下命令完成。

$tar-xzf alluxio-2.9.2-bin.tar.gz
$cd alluxio-2.9.2

下一步可以进行一些基本的配置。压缩包里面有个配置文件的模板,我们可以先拷贝到conf目录下,具体执行如下命令。

$cp conf/alluxio-site.properties.template conf/alluxio-site.properties

设置hostname项,具体方法如下。需要知道的是,这里的localhost也可以替换为本机的IP地址,这样访问会更加方便。

$echo"alluxio.master.hostname=localhost">> conf/alluxio-site.properties

到这里配置就算完成了,是不是很简单!可以运行一下下面的命令,检查一下是否具备了运行Alluxio的条件。

$./bin/alluxio validateEnv local

一切就绪后我们就可以启动Alluxio了。在启动Alluxio服务之前需要先进行格式化,具体命令如下所示。

$./bin/alluxio format

格式化主要是格式化日志目录和Worker的存储目录。完成上述格式化后就可以运行Alluxio服务了。Alluxio提供了一个脚本来启动服务,如下命令可以启动一个Master服务和一个Worker服务。

$./bin/alluxio-start.sh local SudoMount

执行上述命令后可以到如下所示的启动过程。可以看到启动的服务包括Master、Worker、job_master和Proxy等服务。

服务启动成功后可以通过http://localhost:19999查看 Alluxio master 的运行状态,通过访问http://localhost:30000查看 Alluxio worker 的运行状态。如果在配置时localhost是具体的IP地址,那么可以通过具体的IP地址访问上述服务。

如下图所示是登录Master后的控制面板,里面包含服务的状态、日志和配置信息等内容。同时,我们可以通过该GUI浏览存储系统中的资源。

服务起来后我们就能访问其中的存储资源。当然,目前Alluxio并没有任何资源,因此如果想浏览其中的内容,其实什么也看不到。可以通过如下命令浏览其中的内容。

$./bin/alluxio fs ls /

执行上述命令后可以看到什么也没有。我们可以向其中拷贝一些文件,然后再观察一下其中的内容有什么变化。通过如下命令可以将本地文件拷贝到Alluxio中。

$./bin/alluxio fs copyFromLocal /root/test.conf /test.conf_remote

再次执行一下ls命令可以看到我们拷贝的内容。

在上述配置中,我们并没有配置后端存储。Alluxio利用的是本地存储空间,我们可以在Alluxio目录下找到一个名称为underFSStorage的目录,刚才我们拷贝的文件都在这里。

前文我们说了,Alluxio可以是对S3、HDFS、Ceph和Minio等市面上大多数存储系统的对接。实际上Alluxio对接后端存储也非常简单,以对接Minio为例,在配置文件alluxio-site.properties中添加如下内容就可以实现对Minio的对接。

alluxio.master.mount.table.root.ufs=s3://<MINIO_BUCKET>/<MINIO_DIRECTORY>
alluxio.underfs.s3.endpoint=http://<MINIO_ENDPOINT>/
alluxio.underfs.s3.disable.dns.buckets=true
alluxio.underfs.s3.inherit.acl=false
s3a.accessKeyId=<MINIO_ACCESS_KEY_ID>
s3a.secretKey=<MINIO_SECRET_KEY_ID>

上面有些配置项需要根据实际情况做更改。比如MINIO_ENDPOINT是IP地址加端口号,比如http://192.168.2.100:9000。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1420333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自然语言nlp学习四

5-5 BMTrain--ZeRO_哔哩哔哩_bilibili 5-6 BMTrain--Pipeline Parallel (流水线并行)_哔哩哔哩_bilibili 5-12 BMCook--背景介绍_哔哩哔哩_bilibili

梦幻水母生图咒语

中文&#xff1a; 珍珠和透明水晶水母漂浮在水池中&#xff0c;浅粉色风格&#xff0c;千年美学&#xff0c;柔和的雾气&#xff0c;转瞬即逝&#xff0c;山寨核&#xff0c;迷人&#xff0c;不加修饰 比例9:16&#xff0c;模型V6&#xff0c;风格默认 StartAI提示词翻译&am…

客户点赞,“信”任满满 | 竹云喜获近百封感谢信!

玉兔辞旧岁&#xff0c;威龙迎新春 在新春佳节来临之际 一封封感谢信、表扬信 纷至沓来 纸短情长 每一封感谢信的背后 都记载着一个动人的故事 字里行间情真意切 激励着竹云继续前行&#xff01; 国家电投 竹云项目组成员凭借丰富的业务、技术经验、专业的职业素养和较…

redhat8.6配置本地yum源

第一步先挂载本地镜像 df -h 查看是否有镜像&#xff0c;没有默认在/dev/dr0 以下为没有挂载图片2. 挂载本地镜像 mkdir /mnt/rd8 mount /dev/sr0 /mnt/rd8/ 挂载完毕再df -h 看一眼。已经存在/dev/sr03. 填写文件 [rootlinux-server ~]# cd /etc/yum.repos.d/ [rootlinux…

MySQL数据库基础合集

MySQL数据库基础合集 目录 MySQL数据库基础合集SQL关键字DDL关键字DML关键字DQL关键字DCL关键字约束关键字 SQL基础数据类型整数类型字符类型浮点类型时间类型 数据定义语言DDL1.查看数据库2.创建库3.删除库4.切换库5.创建表6.删除表7.查看表8.查看表属性9.插入列10.修改列11.设…

设计模式——模板方法模式(Template Method Pattern)

概述 模板方法模式&#xff1a;定义一个操作中算法的框架&#xff0c;而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种基于继承的代码复用技术&#xff0c;它是一种类行为型模式。模板方法模式是结…

氢气传感器报警值:守护实验室安全的隐形卫士

随着科技的发展&#xff0c;我们的生活变得越来越便捷&#xff0c;但是与此同时&#xff0c;安全问题也日益凸显。其中&#xff0c;氢气作为一种清洁能源&#xff0c;被广泛应用于各个领域&#xff0c;但是如果不加以控制&#xff0c;氢气泄漏也可能带来严重的安全隐患。因此&a…

成都源聚达:抖音开店卖什么最好

在数字化浪潮的推动下&#xff0c;抖音已成为一个集娱乐与商业于一体的平台&#xff0c;吸引着无数商家和创作者。但在这个竞争激烈的市场中&#xff0c;选择什么样的产品才能在抖音上脱颖而出呢? 自然是那些符合抖音用户喜好的产品。据统计&#xff0c;服饰、美妆、食品、家居…

[k8s系列]:kubernetes·概念入门

文章目录 序言1 kubernetes概述1.1 kubernetes解决的问题1.1.1 部署方式的演变1.1.2 容器化部署——容器编排问题 1.2 kubernetes组件1.2.1 kubernetes组件调用关系1.2.2 调用逻辑示例 序言 序言&#xff1a;本文将从&#xff0c;第一节&#xff1a;kubernetes解决的问题、组件…

Linux实验记录:使用iptables

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; 防火墙作为公网与内网的屏障&#…

2023年黄金市场行业分析(电商数据查询软件):年销售额激增104%,黄金消费持续走热

近日&#xff0c;社交平台上不少年轻人将实物金条在黄金加工店加工成黄金首饰的帖子爆火&#xff0c;不少人也在评论区表示要跟随。可以看到&#xff0c;黄金的热潮还在持续。 根据世界黄金协会《2022年中国金饰市场趋势洞察》报告显示&#xff0c;黄金市场被认为是销售大头的…

Flask 入门1:一个简单的 Web 程序

1. 关于 Flask Flask诞生于2010年&#xff0c; Armin Ronacher的一个愚人节玩笑。不过现在已经是一个用python语言基于Werkzeug工具箱编写的轻量级web开发框架&#xff0c;它主要面向需求简单&#xff0c;项目周期短的小应用。 Flask本身相当于一个内核&#xff0c;其他几乎所…

idea报错:Cannot resolve symbol ‘springframework‘

说明maven没有配置好或者加载好 解决&#xff1a; 1&#xff09;File–>Invalidate Caches… 清理缓存&#xff0c;重启idea客户端 然后我这里只进行了第一步就不报错了&#xff01;&#xff01;&#xff01; 如果你依然报错&#xff0c;就继续第二步&#xff1a; 2&…

实战教程:如何用Spring Boot和MySQL存储共享单车数据

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

数字孪生项目开发的注意事项

数字孪生是指使用数字化技术创建物理实体的数字副本&#xff0c;通常用于模拟、监测和优化实际系统的运行。数字孪生项目的开发涉及多个方面&#xff0c;以下是一些注意事项&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#…

Node.js-express

1.了解Ajax 1.1 什么是ajax Ajax的全称是Asynchronous Javascript And XML&#xff08;异步Js和XML&#xff09;. 通俗的理解&#xff1a;在网页中利用XMLHttpRequest对象和服务器进行数据交互的方式&#xff0c;就是Ajax 1.2 为什么要学习Ajax 之前所学的技术&#xff0c…

想查大数据信用报告,这几点高性价比查询平台的特点要了解!内附查询平台推荐

随着大数据技术的不断发展&#xff0c;大数据信用报告成为不少人全方位了解自身个人信用的重要工具。在众多大数据信用报告查询平台中&#xff0c;选择高性价比的查询平台是很多人都想了解的&#xff0c;本文就为大家介绍大数据信用报告查询高性价比平台的特点&#xff0c;希望…

如何在群晖NAS部署office服务实现多人远程协同办公编辑文档

文章目录 本教程解决的问题是&#xff1a;1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是&#xff1a; 1.Word&#xff0c;PPT&#xff0c;Excel等重要文件存在本地环境&#xff0c;如何在编…

阿里云幻兽帕鲁服务器4核16G配置报价

自建幻兽帕鲁服务器租用价格表&#xff0c;2024阿里云推出专属幻兽帕鲁Palworld游戏优惠服务器&#xff0c;配置分为4核16G和4核32G服务器&#xff0c;4核16G配置32.25元/1个月、10M带宽66.30元/1个月、4核32G配置113.24元/1个月&#xff0c;4核32G配置3个月339.72元。ECS云服务…

RabbitMQ之三种队列之间的区别及如何选型

目录 不同队列之间的区别 Classic经典队列 Quorum仲裁队列 Stream流式队列 如何使用不同类型的队列​ Quorum队列 Stream队列 不同队列之间的区别 Classic经典队列 这是RabbitMQ最为经典的队列类型。在单机环境中&#xff0c;拥有比较高的消息可靠性。 经典队列可以选…