HDFS、Ceph、GFS、GPFS、Swift、Lustre……容器云选择哪种分布式存储更好?-51CTO.COM

容器云在使用分布式存储时,HDFS、CEPH、GFS、GPFS、Swift等分布式存储哪种更好?

公司在进行容器云技术选型,想了解相应的分布式存储如何匹配,HDFS、CEPH、GFS、GPFS、Swift等分布式存储,采用哪种更好,主要场景是容器存储应用日志、配置文件、非结构化数据文件等。

问题来自@yin986 某保险软件架构设计师,下文来自twt社区众多同行实践经验分享。

@Steven99 软件架构设计师:

日志文件随着时间会是个很大的量,所以建议考虑统一的日志中心存储处理,可以用es等,备份到hdfs。

配置文件在量上通常不是个问题,可以考虑配置中心统一管理,无需额外存储。

非结构化数据通常是大量的文件,可以采用传统nas或分布式对象存储,当然资金充裕可以采购好的存储,存储性能很重要,根据业务重要程度选择不同的存储。

@Garyy 某保险系统工程师:

容器存储的持久化,对于有状态数据的容器使用场景来说至关重要。因此,在技术选型的时候,需要明确存储的具体需求。存储按照数据类型来分,可以分为块存储,对象存储,文件存储。我们传统的环境中,使用最多的还是块存储和文件存储。随着IT的更新换代,现在对于对象存储(非结构化数据)的需求日益旺盛,对象存储在对一些Key-Value型数据的存储有着天然的优势,再加上其分布式,副本/纠删码等可以匹配传统存储的特性,日益成为温数据/冷数据存储的不二之选。

HDFS/CEPH/GFS/GPFS/Swift这类分布式存储,按照存储的类型来区分,HDFS/GPFS/GFS属于文件存储,CEPH属于统一存储--即块/对象/文件统一体,Swift属于对象存储-目前属于OpenStack下面的一个子项目。

1)HDFS

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。

HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。

2)GFS

GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。

3)GPFS

GPFS(General Parallel File System ,GPFS) 是 IBM 公司第一个共享文件系统,起源于 IBM SP 系统上使用的虚拟共享磁盘技术( VSD )。作为这项技术的核心, GPFS 是一个并行的磁盘文件系统,它保证在资源组内的 所有节点可以并行访问整个文件系统;而且针对此文件系统的服务操作,可以同时安全地在 使用此文件系统的多个节点上实现。GPFS 允许客户共享文件,而这些文件可能分布在不同节点的不同硬盘上;它提供了许多标准的 UNIX 文件系统接口,允许应用不需修改或者重新编辑就可以在其上运行。

4)CEPH

Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。

Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。

5)Swift

Swift 最初是由 Rackspace 公司开发的高可用分布式对象存储服务,并于 2010 年贡献给 OpenStack 开源社区作为其最初的核心子项目之一,为其 Nova 子项目提供虚机镜像存储服务。Swift 构筑在比较便宜的标准硬件存储基础设施之上,无需采用 RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术和数据冗余性,牺牲一定程度的数据一致性来达到高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。

@fanyqing 某银行 高级工程师:

1)Ceph的特点

Ceph支持对象存储、块存储和文件存储服务,故称为统一存储。

采用CRUSH算法,数据分布均衡,并行度高,不需要维护固定的元数据结构。

数据具有强一致,确保所有副本写入完成才返回确认,适合读多写少场景。

去中心化,MDS之间地位相同,无固定的中心节点。

Ceph存在一些缺点:

去中心化的分布式解决方案,需要提前做好规划设计,对技术团队的要求能力比较高。

Ceph扩容时,由于其数据分布均衡的特性,会导致整个存储系统性能的下降。

2)GFS特点

适合大文件场景的应用,特别是针对GB级别的大文件,适用于数据访问延时不敏感的搜索类业务。

中心化架构,只有1个master处于active状态。

缓存和预取,通过在client端缓存元数据,尽量减少与master的交互,通过文件的预读取来提升并发性能。

高可靠性,master需要持久化的数据会通过操作日志与checkpoint的方式存放多份,故障后master会自动切换重启。

3)HDFS的特点(vs GFS)

分块更大,每个数据块默认128MB;

不支持并发,同一时刻只允许一个写入者或追加者;

过程一致性,写入数据的传输顺序与最终写入顺序一致;

Master HA,2.X版本支持两个NameNode,(分别处于Active和Standby状态),故障切换时间一般几十秒到数分钟。

HDFS适合的应用场景:

适用于大文件、大数据处理,处理数据达到 GB、TB、甚至PB级别的数据。

适合流式文件访问,一次写入,多次读取。

文件一旦写入不能修改,只能追加。

HDFS不适合的场景:

低延时数据访问。

小文件存储。

并发写入、文件随机修改。

4)Swift特点

原生的对象存储,不支持实时的文件读写、编辑功能。

完全对称架构,无主节点,无单点故障,易于大规模扩展,性能容量线性增长。

数据实现最终一致性,不需要所有副本写入即可返回,读取数据时需要进行数据副本的校验。

是OpenStack的子项目之一,适合云环境的部署。

Swift的对象存储与Ceph提供的对象存储区别:客户端在访问对象存储系统服务时,Swift要求客户端必须访问Swift网关才能获得数据。而Ceph可以在每个存储节点上的OSD(对象存储设备)获取数据信息; 在数据一致性方面,Swift的数据是最终一致,而Ceph是始终跨集群强一致性)

5)Lustre特点

支持数万个客户端系统,支持PB级存储容量,单个文件最大支持320TB容量。

支持RDMA网络,大文件读写分片优化,多个OSS能获得更高的聚合带宽。

缺少副本机制,存在单点故障。如果一个客户端或节点发生故障,存储在该节点上的数据在重新启动前将不可访问。

适用高性能计算HPC领域,适用于大文件连续读写。

几种主流分布式存储技术的特点比较如下:

 

HDFS、Ceph、GFS、GPFS、Swift、Lustre……容器云选择哪种分布式存储更好?的更多相关文章

  1. 【容器云】传统金融企业的 Docker 实践

    基于 Docker 的容器云-Padis 目前市面上基于容器云的产品有很多,对于平安而言,则是基于 Docker 的 Padis 平台.所谓 Padis,全称是 PingAn Distribution ...

  2. IBM基于Kubernetes的容器云全解析

    基于Kubernetes的容器云 容器云最主要的功能是以应用为中心,帮助用户把所有的应用以容器的形式在分布式里面跑起来,最后把应用以服务的形式呈现给用户.容器云里有两个关键点,一是容器编排,二是资源调 ...

  3. Kubernetes容器云平台建设实践

    [51CTO.com原创稿件]Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署.大规模可伸缩.应用容器化管理.伴随着云原生技术的迅速崛起,如今Kubernetes 事实上已经 ...

  4. 支持100+业务线、累计发布17万次|宜信容器云的A点与B点(分享实录)

    宜信公司从2018年初开始建设容器云,至今,容器云的常用基本功能已经趋于完善,主要包括服务管理.应用商店.Nginx配置.存储管理.CI/CD.权限管理等,支持100+业务线.3500+的容器运行.伴 ...

  5. 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)

    [编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...

  6. 容器云平台No.1~基于Docker及Kubernetes构建的容器云平台

    开篇 最近整理笔记,不知不觉发现关于kubernetes相关的笔记已经达99篇了,索性一起总结了.算是对这两年做容器云平台的一个总结,本文是开篇,先介绍下所有用到的组件.首先来看下架构图(实在画的太丑 ...

  7. 【容器云】十分钟快速构建 Influxdb+cadvisor+grafana 监控

    本文作者:七牛云布道师@陈爱珍,DBAPlus社群联合发起人.前新炬技术专家.多年企业级系统的应用运维及分布式系统实战经验.现专注于容器.微服务及DevOps落地的研究与实践. 安装过程 三个都直接下 ...

  8. 【原创译文】基于Docker和Rancher的超融合容器云架构

    基于Docker和Rancher的超融合容器云架构 ---来自Rancher和Redapt 超融合架构在现代数据中心是一项巨大的变革.Nutanix公司发明了超融合架构理论,自从我听说他们的“iPho ...

  9. 容器云技术选择之kubernetes和swarm对比

    swarm和k8s本质都是容器编排服务.它们都能把底层的宿主机抽象化,然后将应用从以构建好的镜像开始,最终以docker的方式部署到宿主机上.   应该选择哪种方案作为我们的容器云服务呢? 我觉得k8 ...

  10. 基于Kubernetes构建企业容器云

    前言 团队成员有DBA.运维.Python开发,由于需要跨部门向公司私有云团队申请虚拟机, 此时我在思考能否在现有已申请的虚拟机之上,再进行更加细粒度的资源隔离和划分,让本团队的成员使用, 也就是在私 ...

随机推荐

  1. ES-索引库

    数据准备 本次学习涵盖ES简单查询,聚合查询,所以在创建测试库时会可以涵盖一些个性化字段,用于学习搜索用法 索引创建 几个疑问 1.能否用中文命名 安排:我用"蓝闪test",中英 ...

  2. ptyhon基础课程_2

    10 输入 # 例一 user_name = input ("请输入姓名:") message = user_name + "shaobing" print ( ...

  3. springboot gradle 加速问题

    初始化项目使用阿里云 seriver url : https://start.spring.io 直接修改为: https://start.aliyun.com 关键的gradle 修改安装包地址 g ...

  4. MyBatis_06(自定义映射resultMap)

    主题:自定义映射resultMap "自定义映射resultMap",可以解决什么问题: 1-"属性" 和 "字段名" 不一致的情况 2-& ...

  5. Angular中播放RTSP

    要使用这个库需要先安装 我使用了npm来安装 https://www.npmjs.com/package/webrtc-streamer 需要启动webrtc-streamer后端,这里有下载地址 h ...

  6. Winfrom ComboBox中的性能探索

    在为Control维护元素列表的过程中,会不可避免的造成性能损耗,我们接下来要探究的就是哪种方式才是我们的最优解. 方案比较 以ComboBox为例,常见的方式一共有两种:Add.AddRange. ...

  7. firefox 安装旧版flash播放器

    国内恶心的特供版flash用是不可能在用了,用旧版的火狐和旧版的flash播放器,亲测可用. 下载旧版本的火狐浏览器67.04 https://ftp.mozilla.org/pub/firefox/ ...

  8. hbase修改表TTL

    创建表时可以指定TTL create 'test_lwt',{NAME=>'d',TTL=>3600}  设置test_lwt表数据TTL为3600秒 修改已存在的表TTL disable ...

  9. Mybatis拦截器,修改Date类型数据。设置毫秒为0

    1:背景 Mysql自动将datetime类型的毫秒数四舍五入,比如代码中传入的Date类型的数据值为  2021.03.31 23:59:59.700     到数据库   2021.04.01 0 ...

  10. centos7 启动报错 Failed to mount /sysroot

    centos7 启动报错 Failed to mount /sysroot   场景: centos7系统异常关闭后,启动后进入不了图形化界面 解决方法: 1. 定位报错原因 进入单用户模式后执行下面 ...