Hadoop的HDFS的学习笔记

一丶HDFS的写数据流程

Hadoop的HDFS的学习笔记
1,启动服务端的NN,DN进程,提供一个分布式文件系统client;
2,由客户端向NN发起请求,请求上传一个文件,NN对请求进行合法检查(权限,路径是否合法,路径是否存在);
3,如果合法,NN响应客户端允许上传;
4,客户端根据自己设置的blk大小,切分blk,读取第一个blk的内容,请求NN分配DN的地址列表;
5,NN参考客户端上传的文件的副本数,根据机架感知,返回对应的DN列表(按照距离从近到远返回DN地址列表);
6,客户端请求距离最近的DN节点,再由DN列表中每个DN节点都请求距离最近的DN节点,建立数据传输通道(PipeLine);
7,通道建立完成,客户端第一个blk的数据,封装为一个一个的packet,发送到通道中的下一个节点;
通道中的每一个节点在收到packet后,进行校验,合法后,放入到ByteBuffer中,最终落盘存储,将packet发送到下一个DN节点;
8,第一个blk传输完成后,DN向NN上报完成块传输的信息,只要有一个DN节点上报信息,NN就认为这个blk已经传输完成,通道关闭,开始下一个blk的传输;
9,下一个blk依次按照4-8的流程进行传输;
10,所有的blk传输完成后,NN响应客户端传输完成,客户端关闭输出流。

二丶HDFS的读数据流程

Hadoop的HDFS的学习笔记
1)客户端通过Distributed FileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。
2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。
3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。
4)客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。

三丶NN和2NN的工作机制

Hadoop的HDFS的学习笔记

  1. 第一阶段:NameNode启动
    (1)第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
    (2)客户端对元数据进行增删改的请求。
    (3)NameNode记录操作日志,更新滚动日志。
    (4)NameNode在内存中对数据进行增删改。
  2. 第二阶段:Secondary NameNode工作
    (1)Secondary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否检查结果。
    (2)Secondary NameNode请求执行CheckPoint。
    (3)NameNode滚动正在写的Edits日志。
    (4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。
    (5)Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
    (6)生成新的镜像文件fsimage.chkpoint。
    (7)拷贝fsimage.chkpoint到NameNode。
    (8)NameNode将fsimage.chkpoint重新命名成fsimage。

四丶DN的工作机制

Hadoop的HDFS的学习笔记
1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。
3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。
4)集群运行中可以安全加入和退出一些机器。