程序员的资源宝库

网站首页 > gitee 正文

大数据存储系统一_分布式系统、分布式文件系统、HDFS

sanyeah 2024-03-29 16:53:58 gitee 7 ℃ 0 评论

 目录

一、分布式系统基本概念

1.网络通信协议

2.通信方式

3.分布式系统类型

4.故障类型

5.CAP

二、分布式文件系统

1.NFS

2.AFS

三、google File System \HDFS

(本文为陈世敏老师的课程笔记)

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

一、分布式系统基本概念

1.网络通信协议

1.1 OSI模型

1.2 IP/TCP/UDP

+IP (Internet Protocol)
  IPv4地址:例如210.76.211.7,唯一标识一台联网的机器
  Connectionless (无连接), unordered(无序), best-effort (不保证可靠)
+ TCP (Transmission Control Protocol)
  在IP基础上实现
  Port端口号:不同的进程/socket
  Reliable (可靠的), ordered (有顺序), connection-oriented (有连接),error checked (数据校验)
+ UDP (User Datagram Protocol)
  在IP基础上实现
  Port端口号:不同的进程
  进行数据校验,其它与IP相同,不需建立连接,速度快,但是应用程序要自己检查数据是否收到、顺序等

2.通信方式

2.1 process/thread

+Process (进程)
  创建:fork
  私有的虚存空间,私有的打开文件 (files, sockets, devices, pipes …)
+Thread (线程)
  创建:pthread_createclone
  共享的虚存空间,共享的打开文件,一个进程中可以有多个线程

2.2应用程序通信方式

+shared memory共享内存

  访问同一物理空间地址,一方修改另外一方可以看到,需要并发控制

+Message passing消息传递

  多进程之间或者多机,socket、pipe等

3.分布式系统类型

+client/server

  客户端请求,服务器响应

+P2P

  节点功能相似,没有中心节点

+Master/workers

  一个节点进行调控

4.故障类型

+fail to stop

  故障,进程停止

+fail slow

  故障,运行变慢

+Byzantine failure

  包含恶意攻击

5.CAP定理

  数据一致性(consistency)\容忍网络断开(partition tolerance)\可用性(Availability)三者不可兼

二、分布式文件系统

1.NFS

1.1目的1:

  从不同终端可以访问同一个目录,多用户共享,集中管理

 

  为了服务器出现故障时候,可以简单快速恢复-fail-stop模型,这需要:

+stateless

  server不保存任何状态

+idempotent

  Read 读多次结果一样

  write 在同样的位置写同样的数据结果一样

  以上两条加起来使得NFS有一个简单的Crash Recovery策略:Server只需要重启,因为stateless;client接收不到响应不断重试,因为       idempotent.

1.2目的2

  远程文件访问性能高->client cache里面缓存数据->但是会有cache一致性问题->解决flush-on-close 在文件关闭时候,必须将缓存数据   写回server,而client每次在使用缓存数据前必须验证是否过时,用GETATTR请求去poll获得最新的文件属性,比较文件修改时间,但是使   用polling性能差->AFS

2.AFS

  目标:scalability 尽可能支持多的客户端,解决polling问题

  Invalidation:

  client获得一个文件时候在server上登记->当server发现文件修改,向登记client发送callback->client收到callback,删除缓存的文件。

3.NFS和AFS比较

NFS AFS
数据页为单位 缓存整个文件
缓存在内存 缓存在本地硬盘
可以mount到任何地方 统一命名空间,详细权限

 

三、google File System \HDFS

1.posix和应用文件系统比较

2.GFS设计目标

  大块顺序读+并行追加    !不支持文件修改

3.系统架构

  Name Node:存放元数据

  Data Node:存储数据块,默认64MB大小数据块,默认存储三份Rack-aware(本机、本机架、不同机架)

4.文件操作

  open:与Name Node通信一次

  read:open拿到了元数据,所以之后的操作绕过了Name Node,可以从多个副本选择最佳的Data Node读取,可以支持很多并发读请求

  write:向Name Node请求写,拿到要写入的Data Node信息->写到主节点,主节点给副节点,副节点再给另外一个节点,pipeline传递,最大   限度利用带宽,返回是否收到。此时发送的数据块还在各个机器的内存中缓存!->client发出写命令到主节点,主节点直接发送到两个副   节  点,真正执行写到文件系统中操作,返回是否成功,主节点汇总给client.

5.并发写问题

  如果允许写,跨越两个数据块并发可能出现覆盖,所以只允许append.

 

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表