hadoop集群:HDFS读写流程图与HDFS元数据管理机制

hadoop集群:HDFS读写流程图与HDFS元数据管理机制
1,HDFS读流程

hadoop集群:HDFS读写流程图与HDFS元数据管理机制_第1张图片

  1. 客户端通过Distributed FileSystem向NameNode请求下载文件。
  2. NameNode通过查询元数据,找到文件块所在的DataNode地址,并将该文件元数据返回给客户端。
  3. 客户端根据从namenode获得的元数据,挑选一台DataNode(就近原则,然后随机)服务器,依次请求读取块数据。
  4. DataNode开始依次将块数据传输给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。
  5. 客户端以Packet为单位接收,先在本地缓存,待该文件的所有块信息皆返回后,合并块信息,并写入目标文件。

2,HDFS写流程
hadoop集群:HDFS读写流程图与HDFS元数据管理机制_第2张图片

  1. 客户端通过Distributed FileSystem模块向NameNode请求上传文件(文件名),NameNode检查目标文件是否已存在,父目录是否存在。
  2. NameNode向客户端响应,该文件是否可以上传。
  3. 客户端请求向namenode请求上传第一个 Block,上传到哪些DataNode服务器上。
  4. NameNode向客户端返回3个DataNode节点,分别为dn1、dn2、dn3(这里默认三个副本,根据副本数返回对应的DataNode数)。
  5. 客户端通过FSDataOutputStream模块向dn1请求上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。
  6. dn3、dn2、dn1逐级应答客户端,确认可以上传该块数据。
  7. 客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet后,会放入一个确认队列等待确认。
  8. 当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block(重复执行3-7步),后续块依次类推

读写注意点:
HDFS文件系统本身并不具备拆分文件和合并文件的功能,是由客户端来执行的。
由客户端读取磁盘中的文件,并在本地内存中根据块大小对文件进行合理的拆分成块;
也同样在本地内存中,对块进行合并,再写入磁盘的文件中。

3,HDFS元数据管理机制
hadoop集群:HDFS读写流程图与HDFS元数据管理机制_第3张图片
第一阶段:NameNode启动
第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加
载编辑日志和镜像文件到内存。
客户端对元数据进行增删改的请求。
NameNode记录操作日志,更新滚动日志。
NameNode在内存中对数据进行增删改。
第二阶段:Secondary NameNode工作
Secondary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否执
行检查点操作结果。
Secondary NameNode请求执行CheckPoint。
NameNode滚动正在写的Edits日志。
将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。
Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
生成新的镜像文件fsimage.chkpoint。
拷贝fsimage.chkpoint到NameNode。
NameNode将fsimage.chkpoint重新命名成fsimage。

Fsimage文件:是namenode中关于元数据的镜像,一般称为检查点,这里包含了HDFS文件系统所有目录以及文件相关信息(Block数量,副本数量,权限等信息)
Edits文件 :存储了客户端对HDFS文件系统所有的更新操作记录,Client对HDFS文件系统所有的更新操作都会被记录到Edits文件中(不包括查询操作)
seen_txid:该文件是保存了一个数字,数字对应着最后一个Edits文件名的数字
VERSION:该文件记录namenode的一些版本号信息,比如:CusterId,namespaceID等

Edits文件内容

  1. 基本语法
    hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径

hdfs oev -p XML -i edits_0000000000000000266- 0000000000000000267 -o /opt/ouyangtao/servers/hadoop-2.9.2/edits.xml
cat /opt/ouyangtao/servers/hadoop-2.9.2/edits.xml

FSImage文件
hdfs oiv -p 文件类型(xml) -i 镜像文件 -o 转换后文件输出路径
hdfs oiv -p XML -i fsimage_0000000000000000265 -o /opt/ouyangtao/servers/fsimage.xml

checkpoint周期
[hdfs-default.xml]

dfs.namenode.checkpoint.period 3600 dfs.namenode.checkpoint.txns 1000000 操作动作次数 dfs.namenode.checkpoint.check.period 60 1分钟检查一次操作次数

你可能感兴趣的:(bigdata,hadoop,hdfs,流程图)