前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式文件系统Mogilefs介绍

分布式文件系统Mogilefs介绍

作者头像
小小科
发布2018-05-03 16:44:47
1.3K0
发布2018-05-03 16:44:47
举报
文章被收录于专栏:北京马哥教育

一、分布式文件系统简介:

什么是分布式存储:

分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

分布式文件系统设计目标 :
  • 访问透明
  • 位置透明
  • 并发透明
  • 失效透明
  • 硬件透明
  • 可扩展性
  • 复制透明
  • 迁移透明
CAP理论:

C:Consistency(一致性) 任何一个读操作总是能够读取之前完成的写操作。

A:Availability(可用性) 每一次操作总是能够在确定的时间返回。

P: Partition Tolerance ( 分区容错性)在出现网络分区的情况下,仍然能够满足一致性和可用性。

有科学家都在致力于CAP三元素并存的时候,Eric.Brewer教授指出CAP永远无法兼顾,只能根据具体应用来权衡和取舍,并且至多两个元素可以共存,后来由两位麻省理工学院的科学家证明此观点是具有前瞻性的,由此形成Brewer的 CAP定理。

正所谓鱼和熊掌不可兼得,关注一致性就需要处理因系统不可用而带来写操作失败的情况,反之关注可用性就无法保证每次都能读取到最新的写入操作。传统关系型数据库侧重于CA,而非关系型键值数据库则侧重于AP 。

  • 强一致性(ACID):在单机环境中,强一致性可以由数据库的事务来保证;在分布式环境中,强一致性很难做到,即便是做到也会因为分布式事物所带来的性能低下,不适合在互联网的环境中应用。
  • 弱一致性(包括最终一致性):系统不能保证后续访问返回最新的值,在访问到最新值之前这段时间称之为 不一致窗口 。
  • 最终一致性:是弱一致性的一种特例,存储系统保证如果对象有多次更新,在渡过 不一致窗口之后必将放回最后更新的值。
  • 服务器的一致性:N代表节点的个数;W代表更新的时候需要确认已经被更新的节点个数;R代表读取数据需要的节点数量。

W + R > N —->强一致性(通常N=3,W=R=2)

W=N,R=1 —-> 最佳读

W=1,R=N —-> 最佳写

W + R <= N —-> 弱一致性

分布式存储或分布式文件系统

  • 集中式:
    • NAS
    • SAN
  • 分布式存储:
    • 专用的元数据节点:集中元数据存储,数据节点至负责存储数据
    • 无专用元数据几点:所有数据均完整存储元数据,存储了部分数据

常见的分布式文件系统:

  • GFS:Google File System GFS擅长处理单个大文件 。
  • HDFS:Hadoop Distributed File System 根据GFS思想开发的,擅长处理单个大文件,使用场景,数据不太多的大文件。
  • TFS:Taobao File System 淘宝开源的文件系统,擅长处理海量小文件,适用于大规模场景。将元数据存储于关系型数据库或其他高性能存储中,从而能维护海量文件元数据。
  • GlusterFS:去中心化设计:擅长处理单个大文件
  • ceph:整合到linux内核实现的文件系统,已经被收录在内核,是一个 Linux PB级别的分布式文件系统。
  • MogilesFS:MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群

二、MogilesFS介绍:

1.MogilesFS简介:

MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括 Memcached、MogileFS、Perlbal等不错的开源项目:(注:Perlbal是一个强大的Perl写的反向代理服务器)。MogileFS是一个开源的分布式文件系统。

目前使用 MogileFS的公司非常多,比如国外的一些公司,日本前几名的公司基本都在使用这个.国内所知道的使用 MogileFS 的公司有图片托管网站 yupoo又拍,digg, 土豆, 豆瓣,1 号店,大众点评,搜狗,安居客等等网站.基本很多网站容量,图片都超过 30T 以上。

2.MogileFS特性:
  • 1) 应用层提供服务,不需要使用核心组件
  • 2)无单点失败,主要有三个组件组成,分为tracker(跟踪节点)、mogstore(存储节点)、database(数据库节点)
  • 3)自动复制文件,复制文件的最小单位不是文件,而是class
  • 4)传输中立,无特殊协议,可以通过NFS或HTTP实现通信
  • 5)简单的命名空间:没有目录,直接存在与存储空间上,通过域来实现
  • 6)不用共享任何数据
3.MogileFS的组成

1)Tracker–跟踪器,调度器

MogileFS的核心,是一个调度器,mogilefsd进程就是trackers进程程序,trackers的主要职责有:删除数据、复制数据、监控、查询等等.这个是基于事件的( event-based ) 父进程/消息总线来管理所有来之于客户端应用的交互(requesting operations to be performed),包括将请求负载平衡到多个”query workers”中,然后让mogilefs的子进程去处理.

mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡.trackers也可以只运行在一台机器上,使用负载均衡时可以使用搞一些简单的负载均衡解决方案,如haproxy,lvs,nginx等,tarcker的配置文件为/etc/mogilefs/mogilefsd.conf,监听在TCP的7001端口

2)Database–数据库部分

主要用来存储mogilefs的元数据,所有的元数据都存储在数据库中,因此,这个数据相当重要,如果数据库挂掉,所有的数据都不能用于访问,因此,建议应该对数据库做高可用

3)mogstored–存储节点

数据存储的位置,通常是一个HTTP(webDAV)服务器,用来做数据的创建、删除、获取,任何 WebDAV 服务器都可以, 不过推荐使用 mogstored . mogilefsd可以配置到两个机器上使用不同端口… mogstored 来进行所有的 DAV 操作和流量,IO监测,并且你自己选择的HTTP服务器(默认为 perlbal)用来做 GET 操作给客户端提供文件.

典型的应用是一个挂载点有一个大容量的SATA磁盘. 只要配置完配置文件后mogstored程序的启动将会使本机成为一个存储节点.当然还需要mogadm这个工具增加这台机器到Cluster中.

配置文件为/etc/mogilefs/mogstored.conf,监听在TCP的7500端口

4.基本工作流程:

应用程序请求打开一个文件 (通过RPC 通知到 tracker, 找到一个可用的机器). 做一个 “create_open” 请求.

tracker 做一些负载均衡(load balancing)处理,决定应该去哪儿,然后给应用程序一些可能用的位置。

应用程序写到其中的一个位置去 (如果写失败,他会重新尝试并写到另外一个位置去).

应用程序 (client) 通过”create_close” 告诉tracker文件写到哪里去了.

tracker 将该名称和域命的名空间关联 (通过数据库来做的)

tracker, 在后台,开始复制文件,知道他满足该文件类别设定的复制规则

然后,应用程序通过 “get_paths” 请求 domain+key (key == “filename”) 文件, tracker基于每一位置的I/O繁忙情况回复(在内部经过 database/memcache/etc 等的一些抉择处理), 该文件可用的完整 URLs地址列表.

应用程序然后按顺序尝试这些URL地址. (tracker’持续监测主机和设备的状态,因此不会返回死连接,默认情况下他对返回列表中的第一个元素做双重检查,除非你不要他这么做..)

5.MogileFS的组成:

1) server:主要包括mogilefsd和mogstored两个应用程序。mogilefsd实现的是tracker,它通过数据库来保存元数据信息,包括站点domain、class、 host等;mogstored是存储节点(store node),它其实是个WebDAV服务,默认监听在7500端口,接受客户端的文件存储请求。在MogileFS安装完后,要运行mogadm工具将所有的store node注册到mogilefsd的数据库里,mogilefsd会对这些节点进行管理和监控。

2) utils(工具集):主要是MogileFS的一些管理工具,例如mogadm等。

3) 客户端API:MogileFS的客户端API很多,例如Perl、PHP、Java、Python等,用这个模块可以编写客户端程序,实现文件的备份管理功能等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是分布式存储:
  • 分布式文件系统设计目标 :
  • CAP理论:
  • 二、MogilesFS介绍:
    • 1.MogilesFS简介:
      • 2.MogileFS特性:
        • 3.MogileFS的组成
          • 4.基本工作流程:
            • 5.MogileFS的组成:
            相关产品与服务
            云 HDFS
            云 HDFS(Cloud HDFS,CHDFS)为您提供标准 HDFS 访问协议,您无需更改现有代码,即可使用高可用、高可靠、多维度安全、分层命名空间的分布式文件系统。 只需几分钟,您就可以在云端创建和挂载 CHDFS,来实现您大数据存储需求。随着业务需求的变化,您可以实时扩展或缩减存储资源,CHDFS 存储空间无上限,满足您海量大数据存储与分析业务需求。此外,通过 CHDFS,您可以实现计算与存储分离,极大发挥计算资源灵活性,同时实现存储数据永久保存,降低您大数据分析资源成本。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档