mogifs分布式文件系统

分布式文件系统:

1:系统的各个组件分布于网络上的多个计算机上

2:各组件彼此之间仅仅通过消息传递来通信并协调运行

分布式文件系统存在的意义:

A:  向上扩展的性价比越来越低;单机扩展存在性能的临界点

B: 出稳定性及可用性考虑,单机会存在多方面的问题

CPU   内存   IO:性能

网络IO

多进程;每个进程响应一个请求

多进程;每个进程生成多个进程,每个进程响应一个请求

多线程:每个线程响应多个请求

基于socket实现网络通信开发,实现方式

BIO:Blocaing IO:阻塞io

一个进程或者一个线程处理一个请求,

NIO:Nonblocking IO

基于事件驱动(epll)思想,采用Reactor模式

AIO:基于事件驱动(epll)思想,采用Proactor模式

如何把应用从单机扩展为多机

输入设备的变化

变得多了

输出设备的变化

分布式系统实现的难点

缺乏全局时钟

面对故障时的独立性

处理单点故障

事务处理麻烦:ACID

2pc BASE CAP Paxos

大型网站站点的架构演进方式:

LAMT  LNMT

应用从资源占用的角度分类:

CPU bound:cpu 密集型

IO bound:IO密集型

引用mysql主从面临的问题:

数据复制的问题

应用选择数据源的问题

引用缓存

页面缓存:varnish ,squid

数据缓存:key-value:memcached

主库写数据操作压力:数据库拆分

垂直拆分:把数据库中不同的业务的数据拆分到不同的数据库中

难点 :单机的ACID保证被打破:要么放弃事务,要么引入分布式事务,

一些join查询操作将变得非常困难:

原来依赖于外键实现的约束将无法保证

水平拆分:把一个单独表中的数据拆分到多个不同的数据服务器上

难点:单机的ACID保证被打破,一些join查询操作将变得非常困难,原来依赖于外键实现的约束将无法保证,自增序列号的ID的产生会有影响,针对单张表的查询可能要垮库操作,

Nosql:非关系型数据库

文档数据库

列式数据库

DFS:非结构化数据

Tfs,MogileFS:适用于海量的小文件

HDFS,GFS:少量文件

分布式的事务的实现:

事务:事物的参与者,支持事务的服务器,资源服务器,事务管理器

2PC:两段式提交协议:就是当一个事务发出请求和响应请求是同步的

Paxos:比2PC更加轻量级:不存在拜占庭将军问题,通讯网络不安全,无法完成可靠的消息传输

要同时OK在commit,当上面的请求有一个出错时,就无法commit

CAP:一致性,可用性,网络分区容错性

只能同时满足三者中的两者,因此,分布式系统的目标:AP(大多数分布式系统都选择此项)   CA(无法实现分布式)  CP(用的少,代价大)

分布式的目标:加强A和P,在C上进行妥协:

满足BASE模型:基本可用性

同时大数据给我们带来的挑战:

数据采集,数据的存储,数据的搜索,数据的共享,数据的传输,数据的分析,数据的可视化都难以实现

挂载到一个目录就可以使用le

Tracker:mogilefsd进程,实现的功能:文件的复制{replication} 删除(deletion)  query 监控(monitor)

Mysql节点:用于Tracker存储元数据:mogilefs的名称空间及文件名,实际是一个httpd服务

Storagenodes:mogstored进程,文件实际存储位置

Mogildfs:W  R N   W+R<N弱一致性

实现:三个节点:分别是172.16.249.97  172.16.249.85  172.16.249.165

172.16.249.85:tracker服务器mysql服务器

Lftp172.16.0.1/pub/Sources/6.x86_64下下载mogilefs包

Yum 安装如下包:MogileFS-Server-2.46-2.el6.noarch.rpm

MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm

MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm

perl-Net-Netmask-1.9015-8.el6.noarch.rpm

perl-Perlbal-1.78-1.el6.noarch.rpm

MogileFS-Utils-2.19-1.el6.noarch.rpm

perl-MogileFS-Client-1.14-1.el6.noarch.rpm

在yum install –y mysql-server

授权数据库用户,并初始化mysql

MariaDB [(none)]> grant all on mogdb.* to‘moguser‘@‘172.16.%.%‘ identified by ‘mogpass‘;

MariaDB[(none)]> flush privileges;

然后连接[[email protected] mogilefs]# mogdbsetup --dbname=mogdb --dbuser=moguser--dbhost=172.16.249.85 --dbpass=mogpass

会发现出现错误:大概意思需要一个root的远程连接

MariaDB[(none)]> grant all on *.* to ‘root‘@‘172.16.%.%‘ identified by ‘han‘;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;

Query OK, 0 rows affected (0.00 sec)

再次连接:[[email protected] mogilefs]# mogdbsetup --dbname=mogdb --dbuser=moguser--dbhost=172.16.249.85 --dbpass=mogpass --dbrootuser=root --dbrootpass=han

出现如下错误:

Failed to connect to DBI:mysql:mysql;host=172.16.249.85;port=3306 asspecified root user (root): Access denied for user ‘root‘@‘www.http3.com‘(using password: NO)

解决:MariaDB [(none)]> grant all on *.* to ‘root‘@‘www.han3.com‘ identifiedby ‘han‘;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;

Query OK, 0 rows affected (0.00 sec)

在次连接[[email protected] mogilefs]# mogdbsetup --dbname=mogdb --dbuser=moguser--dbhost=172.16.249.85 --dbpass=mogpass --dbrootuser=root --dbrootpass=han

就会成功了

修改配置文件:

[[email protected] mogilefs]# vimmogilefsd.conf

db_dsn = DBI:mysql:mogdb:host=172.16.249.85

db_user = moguser

db_pass = mogpass

listen = 172.16.249.85:7001

启用:[email protected] mogilefs]# service mogilefsd restart

如果出现错误:使用mogilefsd –-help查看

172.16.249.97:mogstored节点

172.16.249.165:mogstored节点

scp  -r mogilefs/172.16.249.165:/root/

scp  -r mogilefs/ 172.16.249.97:/root/

分别安装

Yum 安装如下包:MogileFS-Server-2.46-2.el6.noarch.rpm

MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm

MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm

perl-Net-Netmask-1.9015-8.el6.noarch.rpm

perl-Perlbal-1.78-1.el6.noarch.rpm

perl-IO-AIO

编辑配置文件

[[email protected] mogilefs]# vim /etc/mogilefs/mogstored.conf

docroot = /mogdata/data

mkdir –pv /mogdata/data

chown –R mogilefs.mogilefs /mogdata

启动mogstored:(750l)

[[email protected] mogilefs]# service mogstored start

会出现好多命令mog双击tab键盘:

我们查看当前的mogstored节点

[[email protected] mogilefs]# mogadm --trackers=172.16.249.85:7001 host list

加入一个mogstored节点

[[email protected] mogilefs]# mogadm --trackers=172.16.249.85:7001 host add node2(自己去的) --ip 172.16.249.97 --status=alive

[[email protected] mogilefs]# mogadm --trackers=172.16.249.85:7001 host add node3 --ip=172.16.249.165--status=alive

我们可以使用mogadm –help查看语法

使用mark时可以把各个节点下线

[[email protected] mogilefs]# mogadm --trackers=172.16.249.85:7001 host mark node3 down(下线)

[[email protected] mogilefs]# mogadm --trackers=172.16.249.85:7001 host list

node2 [1]: alive

IP:       172.16.249.97:7500

node3 [2]: down

IP:       172.16.249.165:7500

[[email protected] mogilefs]# mogadm --trackers=172.16.249.85:7001 host mark node3 alive(上线)

添加主机上的设备:device

[[email protected] mogilefs]# mogadm  --trackers=172.16.249.85:7001 device list(列出设备)

node2 [1]: alive

used(G)    free(G)  total(G)  weight(%)

node3 [2]: alive

used(G)    free(G)  total(G)  weight(%)

添加设备:[[email protected] mogilefs]# mogadm --trackers=172.16.249.85:7001 device add node2 dev1

[[email protected] mogilefs]# mogadm --trackers=172.16.249.85:7001 device add node3 dev2

[[email protected] mogilefs]# mogadm --trackers=172.16.249.85:7001 device list

node2 [1]: alive

used(G)    free(G)  total(G)  weight(%)

dev1:   alive     0.000      0.000      0.000        100

node3 [2]: alive

used(G)    free(G)  total(G)  weight(%)

dev2:   alive     0.000      0.000      0.000        100

查看整体摘要信息

[[email protected] mogilefs]# mogadm  --trackers=172.16.249.85:7001 device summary

Hostname        HostID  Status  used(G)  free(G) total(G)    %Used

node2           [   1]: alive     0.000    0.000   0.000

node3           [  2]:  alive     0.000   0.000    0.000

添加一个domain(名称空间)domain内部可以有一个class代表一个dirtory

查看domain

[[email protected] mogilefs]# mogadm  --trackers=172.16.249.85:7001 domain list

domain               class                mindevcount   replpolicy  hashtype

-------------------- -------------------- -------------

添加一个域:

[[email protected]]#mogadm --trackers=172.16.249.85:7001domain add files

我们要在响应的、/mogdata/data下建立相应的devn并且把其属主属组该我mogilefs这样就可以使用了在上传文件就好了

上传数据:

[[email protected] ~]# mogupload --trackers=172.16.249.85:7001 --domain=files--key=‘/fstab.html‘ --file=‘/etc/fstab‘

查看数据:

[[email protected] ~]# clear

[[email protected] ~]# mogfileinfo --trackers=172.16.249.85:7001 --domain=files--key=‘/fstab.html‘

- file: /fstab.html

class:              default

devcount:                    1

domain:                files

fid:                    6

key:          /fstab.html

length:                  921

- http://172.16.249.165:7500/dev2/0/000/000/0000000006.fid

我们也可以在浏览器上输入http://172.16.249.165:7500/dev2/0/000/000/0000000006.fid查看

[[email protected] ~]# mogadm --trackers=172.16.249.85:7001 domain add images也可以上传一个图片与其上

Mogilefs:W写节点 R读节点 N所有节点:

时间: 2024-11-06 10:20:54

mogifs分布式文件系统的相关文章

分布式文件系统--GFS

分布式文件系统      Google File System:是由google开发并设计的一个面向大规模数据处理的一个分布式文件系统. 我们首先来简单的说明一下这个分布式,我们都知道现在要存储的数据量越来越大,但是一台电脑的存储能力是有限的,尽管我们可以通过提高某台电脑的存储能力来解决这个问题,但是这是无法根本解决这个问题,所以我们通过很多很多台廉价的电脑来分布式存储这些数据.简单说就是把要存的文件分割成一份一份存到许多台电脑上. 为了满足Google迅速增长的数据处理需求,Google设计并

分布式文件系统--------GlusterFS最佳实战

1. 背景 GlusterFS 是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端.GlusterFS借助TCP/IP或InfiniBand RDMA(一种支持多并发链接的"转换线缆"技术)网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据.GlusterFS基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能. GlusterFS支持运行在任何标准IP网络上标准应用程序的标准客户端 2. 优势 * 线性横向扩展

CentOS7安装gluster分布式文件系统(取名glustervol1),附CentOS7安装git

虚拟机:192.168.2.21 虚拟机:192.168.2.22 首先,把两个虚拟的防火墙关闭,再次根据 上一篇文档:  CentOS7配置本地镜像及安装gluster服务,在两台虚拟机安装gluster. [停止防火墙] sudo systemctl stop firewalld.service      --停止防火墙 sudo systemctl disable firewalld.service   --开机关闭防火墙 [安装apache httpd服务] cat /etc/yum.r

Hive数据导入——数据存储在Hadoop分布式文件系统中,往Hive表里面导入数据只是简单的将数据移动到表所在的目录中!

转自:http://blog.csdn.net/lifuxiangcaohui/article/details/40588929 Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop分布式文件系统中.Hive本身是没有专门的数据存储格式,也没有为数据建立索引,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据.所以往Hive表里面导入数据只是简单的将数据移动到表所在的目录中! Hive的几种常见的数据导入方式这里介绍四种:(1).从本地文件系统中

分布式文件系统之&mdash;&mdash;mogilefs

本节我们将来认识下分布式文件系统,不过我主要讲的是关于其中的一个比较流行的mogilefs进行介绍,好了其他的不多说了,下面我们就开始吧. 什么是分布式文件系统? 什么是分布式文件系统(Distributed File System)?顾名思义,就是分布式+文件系统.它包含了2方面,从文件系统的客户端的角度来看,他就是一个标准的文件系统,提供了API,由此可以进行文件的创建.删除.读写等操作:从内部来看的话,分布式文件系统则与普通的文件系统不同,它不在是本地的磁盘中,它的内容和目录都不是存储在本

CentOS 6.5 分布式文件系统之MogileFS工作原理及实现过程

   MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上.MogileFS由3个部分组成:    第1个部分:是server端,包括mogilefsd和mogstored两个程序.前者即是mogilefsd的tracker,它将一些全局信息保存在数据库里,例如站点domain,class,host等.后者即是存储节点(store node),它其实是个HTTP Daemon,默认侦听在7500端口,接受客户端的文件备份

pilicat-dfs 霹雳猫-分布式文件系统

pilicat-dfs 霹雳猫-分布式文件系统 一种可以将网站图片或上传的文件,进行分布式存放的服务,可自动复制到多台物理机器,可满足高可用和负载均衡 已编译好的程序包 http://git.oschina.net/tavenli/pilicat-dfs/releases 功能介绍 支持多个dfs-node 支持对上传的文件自动复制到多个dfs-node 支持 RestfulAPI 接口,方便各种语言调用 可以对dfs-node进行分组 为什么要使用pilicat-dfs 可使每个应用系统上传的

分布式文件系统---GlusterFS介绍

GlusterFS概述 GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够 支持数PB存储容量和处理数千客户端.GlusterFS借助TCP/IP或InfiniBand RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据.GlusterFS基于可堆叠的用户空间设计,可为各种不同的数据负载提 供优异的性能. GlusterFS支持运行在任何标准IP网络上标准应用程序的标准客户端,如图2所

分布式文件系统(DFS命名空间)

分布式文件系统DFS 分布式文件系统(DFS)包括DFS命名空间和DFS复制两种技术,DFS命名空间可以使用户从一个入口(一个共享文件夹)访问位于多台计算机中的共享资源:DFS复制技术可以通过网络连接多个服务器上的文件夹,提供容错且灵活的文件共享和复制技术. 今天来介绍下DFS命名空间的配置和使用. 在Windows 7 客户端上访问DFS命名空间服务器,就可以直接访问到文件服务器上的共享文件 1.在服务器管理器,添加角色 2.选择文件服务 3.选择分布式文件系统 4.完成安装 5.打开DFS文