推荐:一款分布式的对象存储服务

简介:

最近公司在准备内部数据上云,并且内部数据库每天的数据量很大,需要采用大数据存储的方案。

方案调研
每个程序技术在实现之前,需要进行开源产品的调研,适合自己产品的技术方案才是最好的。

需求
我们需要处理是图像信息,大小在1M左右。

供以后各个项目组用来拉取图像。

自定义了一个按照标准存储的一批图像,这批图像大小可能在几百兆或者小到几兆大小

技术选型
我们选取了两种技术方案

采用hdfs的集群存储的方案,将数据进行流读取,存储二进制文;将相关的文件内容进行整合成一个大文件存储到hdfs上。

另外一个技术方案采用的是minio,分布式存储方案。

今天要给大家介绍的是minio技术方案。

Minio
什么是Minio
minio 是一款开源的对象存储服务。可以兼容亚马逊的S3存储服务接口,非常适合存储大容量的非结构化数据。

这些非结构化数据包含 图片,视频,日志文件,备份数据和容器、虚拟机镜像。

对象文件大小可以从几kb到最大5T.

我们可以用来做什么
企业上我们可以利用其分布式的功能,内部搭建图片处理服务器,文件存储服务器,公司内部的文件存储服务器,这样就不用限制存储的大小,也不限制存储位置。

我们个人可以直接在家庭内部搭建个人的云盘服务,开心的保存家里面的数据文件,再也不担心数据丢失的问题了。

怎么安装
Minio 分布式对象存储,在官网提供了很多的技术选择方案。

image
根据图中有5种不同的方案,让我们进行选择,可以使用docker 单机部署,也可以采用Docker-compose进行部署伪分布式。 可以使用Docker Swarm 和 k8s 部署分布式架构的选型。

因为是测试阶段,所以采用的是伪分布式的构建方式。使用docker-compose 方式进行部署。

部署
docker-compose 部署方案,我们需要进行安装docker 与docker-compose ,这个在docker文档中都有,可以参考docker-compose官网。为了方便小伙伴进行学习,简单流程安装给大小说下。

安装docker

centos
yum install docker 
ubuntu 
apt-get install docker.io

安装docker-compose

sudo curl -L"https://github.com/docker/compose/releases/download/1.23.1/ocker-compose-$(uname -s)-$(uname -m)"-o /usr/local/bin/docker-compose
执行下权限操作
sudo chmod +x /usr/local/bin/docker-compose

检验下版本是否是正确的
docker-compose --version
docker-compose version 1.23.1, build 1719ceb

以上步骤操作成功后,我们就可以安装minio 来进行实战演练了。

下载docker-compose.yaml文件

version: '2'
# starts 4 docker containers running minio server instances. Each
# minio server's web interface will be accessible on the host at port
# 9001 through 9004.
services:
 minio1:
  image: minio/minio:RELEASE.2018-12-19T23-46-24Z
  volumes:   
- data1:/data  
  ports:
-
 "9001:9000"
  environment:
   MINIO_ACCESS_KEY: minio
   MINIO_SECRET_KEY: minio123

  command: server http://minio1/data http://minio2/datahttp://minio3/data http://minio4/data 
 minio2:
  image: minio/minio:RELEASE.2018-12-19T23-46-24Z
  volumes:
  - data2:/data
  ports:   - "9002:9000"
  environment:
   MINIO_ACCESS_KEY: minio
   MINIO_SECRET_KEY: minio123

  command: server http://minio1/data http://minio2/data http://minio3/data http://minio4/data 
 minio3:
  image: minio/minio:RELEASE.2018-12-19T23-46-24Z

  volumes:   - data3:/data
  ports:   - "9003:9000"
  environment:
   MINIO_ACCESS_KEY: minio
   MINIO_SECRET_KEY: minio123
  command:
 server http://minio1/data http://minio2/data http://minio3/datahttp://minio4/data 
 minio4:  image:
 minio/minio:RELEASE.2018-12-19T23-46-24Z
  volumes:   - data4:/data  ports:   - "9004:9000"
  environment:
   MINIO_ACCESS_KEY: minio
   MINIO_SECRET_KEY: minio123

  command:
 server http:
//minio1/data http://minio2/data http://minio3/data http://minio4/data 
## By default this config uses default local driver,
## For custom volumes replace with volume driver configuration.

volumes:  data1:
  data2:
  data3:
  data4:

在上面我们需要注意两点。

volumes 全局:如果我们不进行配置的话,使用的是默认的路径文件。

在这里向找到相关的存储的文件内容我们可以使用docker inspect 镜像id 来查看。

不配置全局:我们每个镜像id配置一个路径那么我们需要改下文件配置文件

version: '2'

# starts 4 docker containers running minio server instances. Each

# minio server's web interface will be accessible on the host at port

# 9001 through 9004.

services:
 minio1:
  image: minio/minio:RELEASE.2018-12-19T23-46-24Z
  volumes:   - /media/data1:/data:z  
  ports:   - "9001:9000"  environment:
   MINIO_ACCESS_KEY:minio
   MINIO_SECRET_KEY: minio123
  command: server http://minio1/data http://minio2/data http://minio3/data http://minio4/data 
 minio2:
  image: minio/minio:RELEASE.2018-12-19T23-46-24Z
  volumes:   - /meida/data2:/data:z  ports:-"9002:9000"
  environment: 
  MINIO_ACCESS_KEY: minio
   MINIO_SECRET_KEY: minio123

  command: server http:
//minio1/data http://minio2/data http://minio3/data http://minio4/data 
 minio3:
  image: minio/minio:RELEASE.2018-12-19T23-46-24Z
  volumes:   -/media/data3:/data:z
  ports:   - "9003:9000"
  environment:  
 MINIO_ACCESS_KEY: minio
   MINIO_SECRET_KEY: minio123

  command:
 server http://minio1/data http://minio2/data http://minio3/datahttp://minio4/data 

 minio4:
  image: minio/minio:RELEASE.2018-12-19T23-46-24Z
  volumes:   - /media/data4:/data:z
  ports:   -"9004:9000"
  environment:

   MINIO_ACCESS_KEY: minio
   MINIO_SECRET_KEY: minio123

  command: server http://minio1/data http://minio2/datahttp://minio3/data http://minio4/data 

在这个文件中,我们主要做了两项修改:

/media/data1:/data ,我们将data里面的数据映射到media/data1本地目录下。

在:/data 后面增加:z ,这个是为了解决权限问题所增加的。

权限问题是这样的,在我们后面加上:
z 
就是我们就可以启动成功了
 
ERROR 
Unable
 to initialize posix backend: 
Unable
 to write to the backend.
minio3_1_2ce510efd213 |
       > 
Please 
ensure 
Minio
 binary has write permissions 
for
 the backend

启动

首先拉取镜像
docker-compose pull
镜像启动
docker-compose up
如果没有出现错误,那么我们程序就启动成功了  

浏览器查看

ip:9001

访问,第一次登陆我们需要填写
ACCESS_KEY 
与
SECRET_KEY 
。这个两个内容的值在我们配置文件中已存在,直接查看配置文件内容然后填写

浏览器页面展示:
image
image
出现以上界面就代表我们安装成功了

使用

进入界面后我们需要先点击右下角的加号,然后创建文件目录,我们的图像是存储在文件目录下的。
image
结束

这样我们的一个分布式系统就搭建完成了,怎么样是不是很简单?嘿嘿。

总结
分布式文件系统存储,是我们搭建开始的第一步,后面性能问题,存储压力都是我们需要面临的。做好准备工作才能更好的服务我们的产品。

原文发布时间为:2018-12-20
本文作者: 琪琪
本文来自云栖社区合作伙伴“ LuckQI”,了解相关信息可以关注“LuckQI”微信公众号

相关实践学习
对象存储OSS快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
相关文章
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
714 3
|
存储 监控 负载均衡
检索服务elasticsearch分布式结构
【8月更文挑战第22天】
348 3
|
消息中间件 人工智能 监控
文生图架构设计原来如此简单之分布式服务
想象一下,当成千上万的用户同时要求AI画图,如何公平高效地处理这些请求?文生图/图生图大模型的架构设计看似复杂,实则遵循简单而有效的原则:合理排队、分工明确、防患未然。
639 14
文生图架构设计原来如此简单之分布式服务
|
SQL 分布式计算 DataWorks
MaxCompute MaxFrame评测 | 分布式Python计算服务MaxFrame(完整操作版)
在当今数字化迅猛发展的时代,数据信息的保存与分析对企业决策至关重要。MaxCompute MaxFrame是阿里云自研的分布式计算框架,支持Python编程接口、兼容Pandas接口并自动进行分布式计算。通过MaxCompute的海量计算资源,企业可以进行大规模数据处理、可视化数据分析及科学计算等任务。本文将详细介绍如何开通MaxCompute和DataWorks服务,并使用MaxFrame进行数据操作。包括创建项目、绑定数据源、编写PyODPS 3节点代码以及执行SQL查询等内容。最后,针对使用过程中遇到的问题提出反馈建议,帮助用户更好地理解和使用MaxFrame。
|
消息中间件 存储 安全
分布式系统架构3:服务容错
分布式系统因其复杂性,故障几乎是必然的。那么如何让系统在不可避免的故障中依然保持稳定?本文详细介绍了分布式架构中7种核心的服务容错策略,包括故障转移、快速失败、安全失败等,以及它们在实际业务场景中的应用。无论是支付场景的快速失败,还是日志采集的安全失败,每种策略都有自己的适用领域和优缺点。此外,文章还为技术面试提供了解题思路,助你在关键时刻脱颖而出。掌握这些策略,不仅能提升系统健壮性,还能让你的技术栈更上一层楼!快来深入学习,走向架构师之路吧!
868 12
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
463 1
|
人工智能 分布式计算 数据处理
云产品评测:MaxFrame — 分布式Python计算服务的最佳实践与体验
阿里云推出的MaxFrame是一款高性能分布式计算平台,专为大规模数据处理和AI应用设计。它提供了强大的Python编程接口,支持分布式Pandas操作,显著提升数据处理速度(3-5倍)。MaxFrame在大语言模型数据处理中表现出色,具备高效内存管理和任务调度能力。然而,在开通流程、API文档及功能集成度方面仍有改进空间。总体而言,MaxFrame在易用性和计算效率上具有明显优势,但在开放性和社区支持方面有待加强。
333 9
|
分布式计算 数据处理 MaxCompute
云产品评测|分布式Python计算服务MaxFrame
云产品评测|分布式Python计算服务MaxFrame
440 2
|
存储 Java 开发工具
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
阿里云OSS(Object Storage Service)是一种安全、可靠且成本低廉的云存储服务,支持海量数据存储。用户可通过网络轻松存储和访问各类文件,如文本、图片、音频和视频等。使用OSS后,项目中的文件上传业务无需在服务器本地磁盘存储文件,而是直接上传至OSS,由其管理和保障数据安全。此外,介绍了OSS服务的开通流程、Bucket创建、AccessKey配置及环境变量设置,并提供了Java SDK示例代码,帮助用户快速上手。最后,展示了如何通过自定义starter简化工具类集成,实现便捷的文件上传功能。
6240 7
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
|
人工智能 分布式计算 数据处理
有奖评测,基于分布式 Python 计算服务 MaxFrame 进行数据处理
阿里云MaxCompute MaxFrame推出分布式Python计算服务MaxFrame评测活动,助力开发者高效完成大规模数据处理、可视化探索及ML/AI开发。活动时间为2024年12月17日至2025年1月31日,参与者需体验MaxFrame并发布评测文章,有机会赢取精美礼品。