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

随着大数据技术和人工智能技术的发展,各种框架应运而生,比如大数据领域中的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.hqwc.cn/news/439823.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker(第三部分)

1&#xff0c;Docker复杂安装说明 今天的优势会被明天趋势所取代 一切在云端 安装mysql主从复制 主从复制原理&#xff0c;默认你懂 主从搭建步骤 1&#xff0c;新建主从服务器容器实例3307 docker run -p 3307:3306 --name mysql-master\ -v /mydata/mysql-master/log:…

设计模式_观察者模式_Observer

案例引入 有一个天气预报项目&#xff0c;需求如下&#xff1a; 气象站可以将每天测量到的温度、湿度、气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)需要设计开放型API&#xff0c;便于其他第三方也能接入气象站获取数据提供温度、气压、湿度的接口测量数据更…

Java规则引擎:实现高效SQL变量数据处理的关键

SQL变量加工 SQL加工背景&#xff0c;在决策配置过程中&#xff0c;一些复杂的逻辑或模型可通过自定义SQL脚本编写创建数据变量&#xff0c;通过SQL脚本可以便捷的从数据库中取数&#xff0c;并且自定义SQL支持传参&#xff0c;可满足更复杂多变的数据加工处理。 注意&#x…

蓝桥杯2024/1/28----十二届省赛题笔记

题目要求&#xff1a; 2、 竞赛板配置要求 2.1将 IAP15F2K61S2 单片机内部振荡器频率设定为 12MHz。 2.2键盘工作模式跳线 J5 配置为 KBD 键盘模式。 2.3扩展方式跳线 J13 配置为 IO 模式。 2.4 请注意 &#xff1a; 选手需严格按照以上要求配置竞赛板&#xff0c;编写和调…

时序预测 | PyTorch基于改进Informer模型的时间序列预测(锂电池SOC估计)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 时序预测 | PyTorch基于改进Informer模型的时间序列预测&#xff0c;锂电池SOC估计 时间序列预测&#xff1a;informer改进模型[new][new][new]&#xff08;Fourier-Mixed Window Informer 采用傅里叶混合窗口注意力机…

【GAMES101】Lecture 12 曲面

目录 贝塞尔曲面 曲面细分 Loop细分&#xff08;Loop Subdivision&#xff09; Catmull-Clark 细分&#xff08;Catmull-Clark Subdivision&#xff09; 曲面简化 贝塞尔曲面 然后前面讲了贝塞尔曲线&#xff0c;这里讲一下这个贝塞尔曲面 那怎么样从贝塞尔曲线到贝塞尔曲…

Windows系统本地安装Wnmp服务并结合内网穿透公网远程访问

目录 前言 1.Wnmp下载安装 2.Wnmp设置 3.安装cpolar内网穿透 3.1 注册账号 3.2 下载cpolar客户端 3.3 登录cpolar web ui管理界面 3.4 创建公网地址 4.固定公网地址访问 结语 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊Windows…

vite+vue3+ts项目上线docker 配置反向代理API

这次重点的坑是反向代理。 1。项目中配置代理&#xff0c;为了跨域请求数据 项目根目录中新建vite.config.ts文件 在文件中添加配置代理 注意&#xff1a;其中 /api 和target 的地址后面没有 / 2。在项目根目录中新建Httprequest.ts文件&#xff0c;引入axios&#xff0c;并…

打击者H5小游戏

欢迎来到程序小院 打击者 玩法&#xff1a;点击飞机上下左右移动躲过子弹射击&#xff0c;打掉上方敌人飞机&#xff0c; 遇到药包会增加能量&#xff0c;弹药包会升级武器&#xff0c;快去射击吧^^。开始游戏https://www.ormcc.com/play/gameStart/262 html <div id"…

【XR806开发板试用】在 xr806 上用 ncnn 跑神经网络 mnist

在 xr806 上用 ncnn 跑神经网络 mnist 0x0 介绍 xr806 和 ncnn https://xr806.docs.aw-ol.com/ XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片&#xff0c;支持鸿蒙L0系统 https://github.com/Tencent/ncnn ncnn是腾讯开源的高性…

uniapp瀑布流实现

1. 图片瀑布流&#xff1a; 不依赖任何插件&#xff0c;复制即可见效&#xff1a; <template><view class"page"><view class"left" ref"left"><image class"image" v-for"(item,i) in leftList" :k…

[GXYCTF2019]禁止套娃(特详解)

刚打开页面什么都没有&#xff0c;抓包也什么都没有 那就dirsaerch扫一下&#xff0c;发现状态码都是429&#xff0c;访问太快了&#xff08;这里很多师傅都没有说明或者说清楚&#xff09; 这里改了一下线程&#xff08;kali自带的&#xff0c;如果用的脚本要加前面要加python…