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

方案调研

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

需求

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

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

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

技术选型

我们选取了两种技术方案

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

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

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

Minio

什么是Minio

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

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

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

我们可以用来做什么

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

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

怎么安装

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

根据图中有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

。这个两个内容的值在我们配置文件中已存在,直接查看配置文件内容然后填写

浏览器页面展示:

出现以上界面就代表我们安装成功了

使用

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

结束

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

总结

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

原文发布时间为:2018-12-20

本文作者: 琪琪

本文来自云栖社区合作伙伴“ LuckQI”,了解相关信息可以关注“LuckQI”微信公众号

python分布式对象存储_推荐:一款分布式的对象存储服务相关推荐

  1. python 性能优化监控工具_推荐一款非常实用的JVM性能调优监控工具(亲测好用)...

    前言 现实企业级Java开发中,有时候我们会碰到下面这些问题: 1.OutOfMemoryError,内存不足 2.内存泄露 3.线程死锁 4.锁争用(Lock Contention) 5.Java进 ...

  2. java反向映射_推荐一款Java对象映射神器,别再傻傻手动转换了!

    点击蓝色字免费订阅,每天收到这样的好信息 前言:最近有不少粉丝关注本公众号.并且我已经成功开通了流量主同时会赚一点点广告费,我打算每个月把这部分钱拿出来给大家买点书刊,算是给大家一点福利吧.大家想买什 ...

  3. # 对象json互相转换_推荐一款 Java 对象映射神器

    阅读本文大概需要 5 分钟. 来自:网络 前言按照日常开发习惯,对于不同领域层使用不同JavaBean对象传输数据,避免相互影响,因此基于数据库实体对象User衍生出比如UserDto.UserVo等 ...

  4. python分布式爬虫系统_如何构建一个分布式爬虫:理论篇

    前言 本系列文章计划分三个章节进行讲述,分别是理论篇.基础篇和实战篇.理论篇主要为构建分布式爬虫而储备的理论知识,基础篇会基于理论篇的知识写一个简易的分布式爬虫,实战篇则会以微博为例,教大家做一个比较 ...

  5. java 开源监控_推荐一款强大的国产开源监控系统!

    项目简介 集监控点监控.日志监控.数据可视化以及监控告警为一体的国产开源监控系统,直接部署即可使用. 监控数据类型丰富,提供多种富有表现力的图表,满足对数据可视化的需要,目前支持折线图.饼图.地理位置 ...

  6. 366万常用的中 txt 网盘_推荐三款我常用于备份文件的网盘,堪称精品中的精品,建议收藏!...

    不管在生活中还是在工作中,我们常常会使用一些工具来备份我们重要的资料,如图片.视频.音频.文档等等这些.最常用的用来备份文件的工具就是U盘,但是在早几年U盘的容量并不是很大,几乎不能满足我们备份文件的 ...

  7. mdx词典包_推荐几款实用的英语词典

    这篇文章之前发过一次,这里做了一些修改,并补充了一些离线词典的下载链接. 今天来跟大家聊一聊英英词典.为什么要说英英词典呢?因为正确的使用英英词典对于提高我们的写作水平有很大的帮助.如果同学们在平时阅 ...

  8. 手机浏览器推荐_推荐一款手机上最好用的浏览器

    最近小编有点忙, 不好意思哈,小编也要干活吃饭的呀. 昨天,小编的朋友问小编手机上用的浏览器是啥,我说"夸克"啊! "那是啥?" 小编当时的表情就是这样的 后来 ...

  9. 倾斜模型精细化处理_推荐一款好用的倾斜摄影精细化单体建模软件——OSketch...

    原标题:推荐一款好用的倾斜摄影精细化单体建模软件--OSketch 倾斜摄影测量已成为大规模城市三维重建的重要手段. 目前市面上许多倾斜摄影测量商业软件,仅可提供DSM/DOM等LOD0级产品,仅为三 ...

最新文章

  1. mysql更新索引不影响业务_mysql索引更新要多久
  2. 大丈夫不可一日无权啊!——项目经理的误区(转)
  3. linux swap 交换空间 设置多大合适
  4. Oracle作业队列入门图文解说
  5. 百度Google搜索框中,你不知道的变化
  6. LeetCode 296. 最佳的碰头地点(坐标独立+中位数的地方最近)
  7. ssh连接阿里云服务器遇到的坑
  8. 子类怎么继承父类方法中的变量_JavaOOP_04 封装 继承
  9. 【Linux笔记(000) 】-- 系统启动过程
  10. 一、Java入门基础
  11. FLASH中打开网页链接,本地打不开的问题。
  12. 计算机查用户名,怎样查自己电脑用户名_查自己电脑用户名命令
  13. C/C++类型到Ada
  14. 【报告分享】汽车数字营销新度量衡-懂车帝(附下载)
  15. 618蓝牙耳机选哪一款比较好?推荐口碑最好的无线蓝牙耳机品牌
  16. IOS开发:如何修改 SwiftUI 模板项目的启动页面
  17. mixin机器人java开发_mixin_labs-java-bot
  18. http authorization 基本认证
  19. 中国剩余定理与孙子问题
  20. Web前端开发的就业前景怎么样,薪资待遇如何

热门文章

  1. linux 普通io实现pwm,用普通IO口做PWM输出 - 51单片机 - 电子工程世界-论坛 - 手机版...
  2. python怎么输入两个数然后求差值_python两个日期之间天差值获取
  3. python如何创建一个列表_在python中创建列表的最佳和/或最快方法
  4. C++将01数组转换为二进制对应的数值
  5. MATLAB(四)在高等数学中的应用
  6. OpenCV与图像处理学习二——图像直方图与色彩空间
  7. Linux学习之Linux历史
  8. BP神经网络识别手写数字项目解析及matlab实现
  9. 安卓逆向_24 ( 二 ) --- frida 学习记录
  10. linux的grub损坏,如何利用Grub命令启动损坏的Linux系统?