对 Ceph/GlusterFS/HDFS 分布式文件系统的理解

栏目: 服务器 · 发布时间: 7年前

内容简介:对 Ceph/GlusterFS/HDFS 分布式文件系统的理解

##HDFS&glusterfs&ceph 个人理解对比

  • glusterfs: 无元数据节点,兼容PAXOS接口的文件系统,可以理解无分片(无建条带层情况下),目录层次,ls等获取列表很卡,架构特点像网络协议栈,一层层处理后数据传到下一层。

  • ceph:基于RADOS,无元数据节点,基于CRUSH算法, 分片和二级映射 ,底层默认存储单位4M。个人觉得最优雅在于:monitor存储的各种表(类似kubernetes,swamkit的desired state一样), 客户端和OSD 获取这状态(单异常时,monitor会更新,主动或被动通知他们),osd和客户端就会以新表 数据自动迁移,自动修复,自动获取,即客户端和OSD之间无需通信 以规定的协议 来就好了,问题也导致了当有节点掉了,OSD之间自动不受控制的数据修复,很可能导致性能下降,甚至整个集群时间内不可用。

  • HDFS:设计目的是:大文件;商用硬件;追加写 ,少随机写;多顺序读,少随机读; 优化带宽而非延迟 等,可见应用场景不适合做docker,KVM等镜像文件这样有随机读写的。有MASTER节点来控制数据迁移,修复等,整体设计相对简单些,控制都由master。

  • 都要要回答的问题是:

    • 添加/删除节点的数据负载均衡的问题
    • 文件数据以 何种方式如何分布c存储在集群节点中,是否有元数据节点
    • 数据的多副本策略 与 一致性
    • IO读写流程

参考: 杨锦涛:主流开源存储方案孰优孰劣

ceph

介绍框架: architecture & Ceph架构剖析

  • 客户端 (无元数据节点,直接根据计算获取读写位置): client通过monitor获取CRUSH map等集群信息,用户看到的文件 根据文件位置 进行 分片 (ceph集群默认存储object:4M):通过librados库根据CRUSH算法( 二级映射 : object(ceph集群里的object)->PG->OSDS; CRUSH :根据一棵主机拓扑树,递归算出osd列表),映射到具体的OSDs 上,客户端 直接与osd通信,读写数据。
  • RADOS :Ceph Monitor 和 Ceph OSD Daemon集群核心,monitor基于paxos等维护表信息,osds状态等,类似协调系统,数据修复以PG为单位。Block Devices,Object Storage,Filesystem都在这RADOS上封装,
  • osd目前通过filestore机制,主备通过plog协议来保证一致性;因写log,多一次IO,写放大问题,下个版本默认将是 Newstore: ceph存储引擎bluestore解析 & Ceph Jewel 版本预览 : 即将到来的新存储BlueStore & BlueStore: a new, faster storage backend for Ceph 参考:
  • Ceph的IO模式分析
  • Ceph对象存储运维惊魂72小时

主要资源

HDFS&GFS

主要参考

  • 《大数据日知录》第八章 分布式文件系统
  • google论文:GFS
  • HADOOP权威指南 第三章 分布式Hadoop文件系统

####google论文 GFS要点 ####

  • 技术需求

    • 组件失败成为一种常态而不是异常
    • 文件是巨大的。大部分的文件更新模式是通过在尾部追加数据而不是覆盖现有数据,文件内部的随机写操作几乎是不存在的。 一旦写完,文件就是只读的,而且通常是顺序读。
  • 设计假设

    • 系统是由廉价的经常失败的商品化组件构建而来。
    • 系统存储了适度个数的大文件
    • 工作负载主要由两种类型的读组成:大的顺序流式读取和小的随机读取
    • 追加写 ,少随机写;多顺序读,少随机读 :工作负载有很多大的对文件数据的 append 操作,系统必须为多个客户端对相同文件并行 append 操作的定义良好。
    • 持续的高带宽比低延时更重要。
  • 设计原理

    • 数据路由分片 :分片:文件被划分成固定大小的 chunk,默认地我们存储三个备份,master记录位置;路由:client向master获取位置。
    • 简化设计 :采用元数据节点,Master 维护所有的文件系统元数据。包括名字空间,访问控制信息,文件与 chunk的映射信息, chunk 的当前位置。它也控制系统范围内的一些活动,比如 chunk租约管理, 无效 chunk 的垃圾回收, chunkserver 间的 chunk 迁移。 Master 与chunkserver 通过心跳信息进行周期性的通信,以发送指令和收集chunkserver 的状态。
    • 大的 chunk size : 降低了 client 与 master 的交互需 求,减少应用产生的负载是非常明显的,很有可能在一个给定的 chunk 上执行更多的操作,允许我们将元数据存放在内存中。
    • Master 存储了三个主要类型的元数据:文件和 chunk 名字空间,文件到 chunk的映射信息,每个 chunk 的备份的位置。
    • 租约机制 : 我们使用租约机制来保持多个副本间变更顺序的一致性。 Master 授权给其中的一个副本一个该 chunk 的租约,我们把它叫做主副本(primary)。
    • 元数据存储在内存里, master 的操作是很快的; Master 并没有永久保存 chunk 的位置信息,而是在 master启动或者某个 chunkserver 加入集群时,它会向每个 chunkserver 询问它的 chunks信息。
    • 操作日志包含了关键元数据改变的历史记录,Master 通过重新执行操作日志来恢复它的文件系统。

####HDFS####

  • 作为GFS的开源版,整体框架,使用场景类似:大文件;商用硬件;追加写 ,少随机写;多顺序读,少随机读; 优化带宽而非延迟 等。

  • 主控服务器 当点失效问题:**HA方案(NFS备份)**或 NameNode 联盟(二级名称节点)

  • HDFS详解 && 【漫画解读】HDFS存储原理英文版

  • Hdfs Design(官网)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

jQuery实战(第2版)

jQuery实战(第2版)

[美]Bear Bibeault、[美]Yehuda Katz / 三生石上 / 人民邮电出版社 / 2012-3 / 69.00元

jQuery 是目前最受欢迎的JavaScript/Ajax 库之一,能用最少的代码实现最多的功能。本书全面介绍jQuery 知识,展示如何遍历HTML 文档、处理事件、执行动画、给网页添加Ajax 以及jQuery UI 。书中紧紧地围绕“用实际的示例来解释每一个新概念”这一宗旨,生动描述了jQuery 如何与其他工具和框架交互以及如何生成jQuery 插件。 本书适合各层次Web 开发人......一起来看看 《jQuery实战(第2版)》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具