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

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

方案调研

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

需求

我们需要处理是图像信息,大小在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”微信公众号

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

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

相关文章

php如何检测键盘按键,js键盘事件,判断按下的是哪个键

在写页面的时候,尤其是桌面端的时候,我们有时候要知道用户按下了那个按键,对于这个问题我们可以使用js提供的keyCode属性来操作,如:document.onkeydown function (e) {alert(e.keyCode)}这时你在页面上随意按键盘的按…

bch纠错码 码长8_BCH码-BCH码原理-BCH码分类-BCH码的应用-什么是BCH码-测控百科-CK365测控网...

1BCH码概述BCH码取自 Bose、Ray-Chaudhuri 与 Hocquenghem 的缩写,是自1959年发展起来的一种能纠正多位错误的循环码,是编码理论尤其是纠错码中研究得比较多的一种编码方法。用术语来说,BCH 码是用于校正多个随机错误模式的多级、循环、错误校…

oracle 左取,oracle 取子串(转)

SUBSTRING返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效Microsoft SQL Server? 数据类型的更多信息,请参见数据类型。语法SUBSTRING ( expression , start , lengt…

js 中转换成list集合_js将类数组对象转换成数组对象

javascript与dom有许多瑕疵,如著名的类数组对象Arguments,其他诸如HTMLCollection,NodeList如果它们都是数组的子类,那多省时啊。在标准浏览器中,好像只要对象存在length属性,就能把它转换为数组,但IE就不尽…

oracle插入未调用并行,oracle并行之概念篇

概念 串行执行: 串行执行时候,sql语句由一个server process处理(既只运行在一个cpu上),所以sql语句所能使用的资源受cpu限制,除去异步i/o外server process 处理cpu操作时,不可访问disk。 并行处理: 就是多个slave process一起处理同一个sql语…

三维数据平滑处理_黑白象片的密度信息 卫星数据处理 遥感制图 三维建模 善图科技...

黑白象片的密度信息象片上的黑白变化,可划分为若干等级,此等级称之为灰阶。象片上的灰阶数受洗印技术及目视分辨能力的限制,一般不超过10个灰阶。灰阶较多时,象片上层次分明易于分辨一些细节。但灰阶的增多必导至对比度相对下降&a…

oracle左连接数据会对不上吗,一周工作总结–左连接造成的一些问题-Oracle

一周工作总结–左连接造成的一些问题今天有同事告诉我,有个SQL执行了好久好久执行不出来,我说好就是多久?她说一天左右了。真是令人咋舌的SQL。于是我要来了SQL看了看执行计划,确实让人咋舌。下图中就是执行计划的截图&#xff1a…

android开发 视图联动_新版首页技术设计和实现方案(Android)

动效设计1、两级吸顶CoordinatorLayoutAppBarLayout可以轻松的实现一级吸顶的功能,两级吸顶并不支持。要实现两级吸顶,可以有两种思考:一,在此基础之上再完成一次吸顶;二,直接重写两次吸顶的逻辑&#xff0…

oracle 获取一周七天,Oracle中求出本礼拜第一天和第七天的日期

<1>西方应用是周日是first day&#xff0c;中国人思维则为&#xff0c;周日是最后一天。其实&#xff0c;只需要计算到周一&#xff0c;就可直接获得周日。<2>应用实例--Sundayselect to_date(next_day(to_date(2015-02-09 22:00:00, yyyy-mm-dd hh24:mi:ss) - 7, …

网页设计上机考试原题_全国计算机三级信息安全考试 经验分享

为什么选择信息安全&#xff1f;误打误撞报的名&#xff0c;正好又听说是三级里面最好过的。1&#xff09;时间&#xff1a;九月份的考试&#xff0c;大概六月份报名。我在9月2日开学后&#xff0c;才开始准备的&#xff0c;也就二十几天的时间&#xff0c;而且我白天课不少&am…

oracle to_char 数值,oracle to_char格式数值

C:\Users\XXX>sqlplus / as sysdbaSQL*Plus: Release 10.2.0.5.0 - Production on 星期日 8月 28 15:51:42 2016Copyright (c) 1982, 2010, Oracle. All Rights Reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit ProductionWith the Par…

linux环境特性的文件夹,在Linux环境下如何消减可执行文件或者动态库的大小

为了简化描述&#xff0c;下文提到目标时&#xff0c;如无特殊说明&#xff0c;均指代目标可执行文件或者目标动态库。操作步骤如下&#xff1a;选型时&#xff0c;在同等功能时&#xff0c;尽量选择代码量少、占用空间小的开源的软件。控制C特性的使用&#xff0c;如无必要&am…

newifi mini固件_如何在vmware虚拟机中安装OpenWrt系统,含x86固件编译教程

"OpenWrt项目是针对嵌入式设备的Linux操作系统"&#xff0c; 这是官方给出的定义。OpenWrt确实是一个非常好的嵌入式学习系统&#xff0c;目前市面上上千款设备支持运行OpenWrt&#xff0c;如小米路由、newifi、netgear路由、360路由等。各大wifi芯片厂商sdk开始采用…

宝塔linux忘记密码,宝塔忘记登录入口了怎么解决 宝塔面板密码忘记了怎么办

因为性能和安全性上的突出优势&#xff0c;现在用宝塔LINUX面板配置网站环境的站长越来越多&#xff0c;但一些粗心大意的站长经常会遇到这个问题&#xff0c;密码想不起来了&#xff0c;入口链接忘记了&#xff0c;宝塔忘记登录入口了怎么解决 宝塔面板密码忘记了怎么办呢&…

minitab怎么算西格玛水平_六西格玛黑带培训工具因子分析的使用

六西格玛黑带培训工具因子分析的使用-张驰咨询一、该命令用于将数据结构简化为较少的量&#xff0c;因子分析的重点是确定能够解释数据变异大的因子数量。二、对话框内容。1、variables&#xff1a;输入需包含在分析中的变量栏。2、Numberoffactorstoextract&#xff1a;输入需…

ssh linux 配置文件详解,Linux ssh服务常用配置的详细描述及建议配置

SSH服务常用选项描述配置文件&#xff1a; /etc/ssh/sshd_config1、AddressFamliy any&#xff1b;支持那IP协议&#xff1b;比如ipv4,ipv6,&#xff1b;默认 any&#xff1b;2、Port 22 &#xff1a;SSH端口号配置&#xff0c;默认22;3、Protocol 2 &#xff1b; SSH协议的2版…

python set集合内部实现_Python 实现集合Set的示例

Python的集合set原理集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合&#xff0c;注意&#xff1a;创建一个空集合必须用 set() 而不是 { }&#xff0c;因为 { } 是用来创建一个空字典。class Array(object):def __init__(self, size32, ini…

linux curl 编译命令,linux 编译 curl 出错

编译curl make 死活不通过&#xff0c;唉执行参数如下&#xff0c;谢谢各位帮忙看看这一步一切正常rootdebian:~/curl-7.45.0# ./configure --with-sslmake一顿编译之后 ...... 然后出错了../lib/.libs/libcurl.so: undefined reference to SSLv2_client_method../lib/.libs/li…

r语言echarts画箱线图_R语言之数据可视化---交互式图表recharts

环图一.安装方式&#xff1a;if (!require(devtools)) library(devtools)install_github("madlogos/recharts")二.使用方法&#xff1a;1.散点图/气泡图echartr(iris, xSepalWidth, yPetalWidth)多个维度&#xff1a;series控制echartr(iris, xSepalWidth, yPetalWid…

linux内核err实现,Linux中IS_ERR()函数的理解

在Linux源码中的fs部分&#xff0c;经常会碰到这样的函数(位于kernel/include/linux/fs.h)&#xff1a;/** Kernel pointers have redundant information, so we can use a* scheme where we can return either an error code or a dentry* pointer with the same return value…