设为首页 收藏本站
查看: 1569|回复: 0

[经验分享] mogifs分布式文件系统

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-10-8 14:43:11 | 显示全部楼层 |阅读模式
分布式文件系统:
    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:少量文件
分布式的事务的实现:
      事务:事物的参与者,支持事务的服务器,资源服务器,事务管理器
   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模型:基本可用性


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






挂载到一个目录就可以使用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;
然后连接[iyunv@www 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)
再次连接:[iyunv@www 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)
在次连接[iyunv@www mogilefs]# mogdbsetup --dbname=mogdb --dbuser=moguser--dbhost=172.16.249.85 --dbpass=mogpass --dbrootuser=root --dbrootpass=han
就会成功了
修改配置文件:
  [iyunv@www 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
启用: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.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
编辑配置文件
[iyunv@www mogilefs]# vim /etc/mogilefs/mogstored.conf
docroot = /mogdata/data
mkdir –pv /mogdata/data
chown –R mogilefs.mogilefs /mogdata
启动mogstored:(750l)
[iyunv@www mogilefs]# service mogstored start
会出现好多命令mog双击tab键盘:
我们查看当前的mogstored节点
[iyunv@www mogilefs]# mogadm --trackers=172.16.249.85:7001 host list
加入一个mogstored节点
[iyunv@www mogilefs]# mogadm --trackers=172.16.249.85:7001 host add node2(自己去的) --ip 172.16.249.97 --status=alive
[iyunv@www mogilefs]# mogadm --trackers=172.16.249.85:7001 host add node3 --ip=172.16.249.165--status=alive
我们可以使用mogadm –help查看语法
  使用mark时可以把各个节点下线
[iyunv@www mogilefs]# mogadm --trackers=172.16.249.85:7001 host mark node3 down(下线)
[iyunv@www 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
[iyunv@www mogilefs]# mogadm --trackers=172.16.249.85:7001 host mark node3 alive(上线)
添加主机上的设备:device
  [iyunv@www 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(%)
添加设备:[iyunv@www mogilefs]# mogadm --trackers=172.16.249.85:7001 device add node2 dev1
[iyunv@www mogilefs]# mogadm --trackers=172.16.249.85:7001 device add node3 dev2
[iyunv@www 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
查看整体摘要信息
   [iyunv@www 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
[iyunv@www mogilefs]# mogadm  --trackers=172.16.249.85:7001 domain list
domain               class                mindevcount   replpolicy  hashtype
-------------------- -------------------- -------------
添加一个域:
   [iyunv@wwwmogilefs]#mogadm --trackers=172.16.249.85:7001domain add files
我们要在响应的、/mogdata/data下建立相应的devn并且把其属主属组该我mogilefs这样就可以使用了在上传文件就好了
上传数据:
[iyunv@www ~]# mogupload --trackers=172.16.249.85:7001 --domain=files--key='/fstab.html' --file='/etc/fstab'
查看数据:
  [iyunv@www ~]# clear
[iyunv@www ~]# 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查看
[iyunv@www ~]# mogadm --trackers=172.16.249.85:7001 domain add images也可以上传一个图片与其上  
  Mogilefs:W写节点 R读节点 N所有节点:


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25662-1-1.html 上篇帖子: Dell MD3220I存储配置总结 下篇帖子: ISCSI网络存储
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表