uigy 发表于 2014-10-8 14:43:11

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
大型网站站点的架构演进方式:
      LAMTLNMT
应用从资源占用的角度分类:       CPU bound:cpu 密集型       IO bound:IO密集型引用mysql主从面临的问题:      数据复制的问题      应用选择数据源的问题引用缓存         页面缓存:varnish ,squid                数据缓存:key-value:memcached
主库写数据操作压力:数据库拆分         垂直拆分:把数据库中不同的业务的数据拆分到不同的数据库中         
             难点 :单机的ACID保证被打破:要么放弃事务,要么引入分布式事务,
一些join查询操作将变得非常困难: 原来依赖于外键实现的约束将无法保证          水平拆分:把一个单独表中的数据拆分到多个不同的数据服务器上
                难点:单机的ACID保证被打破,一些join查询操作将变得非常困难,原来依赖于外键实现的约束将无法保证,自增序列号的ID的产生会有影响,针对单张表的查询可能要垮库操作,
Nosql:非关系型数据库
      文档数据库
       列式数据库
DFS:非结构化数据
       Tfs,MogileFS:适用于海量的小文件
HDFS,GFS:少量文件分布式的事务的实现:
      事务:事物的参与者,支持事务的服务器,资源服务器,事务管理器
   http://s3./wyfs02/M00/4B/D7/wKiom1Q0ufDybQ1dAAEBPiFQg8M957.jpg      
2PC:两段式提交协议:就是当一个事务发出请求和响应请求是同步的
http://s3./wyfs02/M02/4B/D9/wKioL1Q0umLSXzr_AADqmJzIVU0340.jpg

Paxos:比2PC更加轻量级:不存在拜占庭将军问题,通讯网络不安全,无法完成可靠的消息传输
要同时OK在commit,当上面的请求有一个出错时,就无法commit   CAP:一致性,可用性,网络分区容错性
只能同时满足三者中的两者,因此,分布式系统的目标:AP(大多数分布式系统都选择此项)   CA(无法实现分布式)CP(用的少,代价大)分布式的目标:加强A和P,在C上进行妥协:       满足BASE模型:基本可用性

同时大数据给我们带来的挑战:
数据采集,数据的存储,数据的搜索,数据的共享,数据的传输,数据的分析,数据的可视化都难以实现


http://s3./wyfs02/M00/4B/D9/wKioL1Q0u1rgn_VCAALJfAZHhlo925.jpg




挂载到一个目录就可以使用le
       Tracker:mogilefsd进程,实现的功能:文件的复制{replication} 删除(deletion)query 监控(monitor)
         Mysql节点:用于Tracker存储元数据:mogilefs的名称空间及文件名,实际是一个httpd服务
       Storagenodes:mogstored进程,文件实际存储位置
   Mogildfs:WR N   W+R<N弱一致性
实现:三个节点:分别是172.16.249.97172.16.249.85172.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.rpmMogileFS-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;
然后连接# 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)再次连接:# 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)在次连接# mogdbsetup --dbname=mogdb --dbuser=moguser--dbhost=172.16.249.85 --dbpass=mogpass --dbrootuser=root --dbrootpass=han就会成功了 修改配置文件:# vimmogilefsd.confdb_dsn = DBI:mysql:mogdb:host=172.16.249.85db_user = moguserdb_pass = mogpasslisten = 172.16.249.85:7001启用:root@www 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.rpmMogileFS-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
编辑配置文件
# vim /etc/mogilefs/mogstored.confdocroot = /mogdata/datamkdir –pv /mogdata/datachown –R mogilefs.mogilefs /mogdata启动mogstored:(750l)# service mogstored start 会出现好多命令mog双击tab键盘:我们查看当前的mogstored节点# mogadm --trackers=172.16.249.85:7001 host list 加入一个mogstored节点# mogadm --trackers=172.16.249.85:7001 host add node2(自己去的) --ip 172.16.249.97 --status=alive# mogadm --trackers=172.16.249.85:7001 host add node3 --ip=172.16.249.165--status=alive我们可以使用mogadm –help查看语法使用mark时可以把各个节点下线# mogadm --trackers=172.16.249.85:7001 host mark node3 down(下线)# mogadm --trackers=172.16.249.85:7001 host listnode2 : aliveIP:       172.16.249.97:7500
node3 : downIP:       172.16.249.165:7500# mogadm --trackers=172.16.249.85:7001 host mark node3 alive(上线)添加主机上的设备:device# mogadm--trackers=172.16.249.85:7001 device list(列出设备)node2 : alive                  used(G)    free(G)total(G)weight(%)
node3 : alive                  used(G)    free(G)total(G)weight(%)添加设备:# mogadm --trackers=172.16.249.85:7001 device add node2 dev1 # mogadm --trackers=172.16.249.85:7001 device add node3 dev2 # mogadm --trackers=172.16.249.85:7001 device list   node2 : alive                  used(G)    free(G)total(G)weight(%)   dev1:   alive   0.000      0.000      0.000      100
node3 : alive                  used(G)    free(G)total(G)weight(%)   dev2:   alive   0.000      0.000      0.000      100查看整体摘要信息   # mogadm--trackers=172.16.249.85:7001 device summaryHostname      HostIDStatusused(G)free(G) total(G)    %Usednode2         [   1]: alive   0.000    0.000   0.000 node3         :alive   0.000   0.000    0.000添加一个domain(名称空间)domain内部可以有一个class代表一个dirtory 查看domain # mogadm--trackers=172.16.249.85:7001 domain list domain               class                mindevcount   replpolicyhashtype-------------------- -------------------- ------------- 添加一个域:   #mogadm --trackers=172.16.249.85:7001domain add files 我们要在响应的、/mogdata/data下建立相应的devn并且把其属主属组该我mogilefs这样就可以使用了在上传文件就好了上传数据:# mogupload --trackers=172.16.249.85:7001 --domain=files--key='/fstab.html' --file='/etc/fstab'查看数据:# clear# mogfileinfo --trackers=172.16.249.85:7001 --domain=files--key='/fstab.html'- file: /fstab.html   class:            defaultdevcount:                  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查看# mogadm --trackers=172.16.249.85:7001 domain add images也可以上传一个图片与其上Mogilefs:W写节点 R读节点 N所有节点:
页: [1]
查看完整版本: mogifs分布式文件系统