笔记一:hadoop之HDFS 分布式文件系统

1、特点

  • 会将大文件线性切割成块(block),分散存放在机器节点中
  • 单一文件的block大小一致,不同文件可以不一样,最后一个块,大小还是128M,但是内部存放的数据可能小于128M
  • 为了安全机制(副本机制)
  • 追加数据(append),只能尾部追加数据
  • 只支持一次写入多次读取,同一时刻只有一个写入者

2、namenode 角色

  • 管理DN,以及元数据(描述数据的数据)存储在内存中
  • 接受客户端的读写服务
  • 收集DN的信息
  • 给client一些DN的信息

3、datanode角色

  • 存储文件(block块)
  • 向NN汇报信息(存了哪些信息以及是否存活)
  • 存储block的元数据信(NN存的元数据是整个大文件的,DN存的元数据每个block块)
  • 接受client的请求

4、写操作的具体实现

  • 大文件线性切割成block块(client会优先计算一下大文件的block的块数,默认一个块的大小128M, block数 = 大文件/128M)
  • client向NN汇报情况(block数、属主、权限、上传时间)
  • client切割一个block块
  • 请求block的ID和DN的地址
  • NN就会将一些负载不高的DN的地址返回给client
  • client已经拿到地址就会找到这个DN进行数据上传并且会做备份
  • DN将block存储完毕后向NN进行汇报

5、读操作的具体实现

  • client会向NN请求block的位置信息,NN掌握元数据
  • NN返回block的信息给client
  • client拿到block的信息之后去相应的读取block的数据(就进原则)

6、备份机制?为了安全 。如何备份?

  • 如果是集群内提交:第一个block提交上传请求的服务器上;如果是集群外提交:第一个block提交负载不高的服务器上
  • 第一个备份:与第一个block不同机架的随机一台服务器
  • 第二个备份:存放在第一个备份的block相同机架但是不同服务器上
  • 更多的副本:随机存放(默认一个block有两个备份)

7、写操作 + 备份机制 (piepline管道)

  • client请求之后,NN会返回一批DN, client会与这些DN之间形成piepline管道
  • 以block形式进行存储,在piepline中会将block再次细分,分成一个个的ack packet (128K),ack在管道中流淌,DN会从管道中复制一份ack存放
  • DN从管道中获取数据放到本地,然后NN汇报存储情况 

posted on 2019-03-27 10:51  唯伊  阅读(131)  评论(0编辑  收藏  举报

导航