• HDFS


    HDFS体系结构

      1:namenode[守护进程]作用:

        -->管理文件系统名称空间;【fsimage元数据镜像文件】

        -->管理客户端对文件的访问;【edits操作文件】

        -->Namenode执行文件系统命名空间操作,如打开,关闭,重命名文件和目录【edits操作文件】

        -->确定block到Datanode的映射(注意:通过心跳机制,status和blockreport:默认3秒一次)

      2:datanode[守护进程]:

        -->用于管理连接到它们所运行的节点的存储。【block信息:block和block.mate】

        -->负责提供来自文件系统客户端的读取和写入请求

        -->还执行块创建,删除

      3:block:文件被分成一个或多个块,这些块存储在一组Datanode中(默认3份)

    元数据

      1:查看fsimage文件

        命令:$>hdfs oiv -i fsimage_0000000000000000022 -o ~/fs22.xml -p XML

        含义:将fsimage0000000000000000022的这个文件导出到~/fs22.xml 以XML的格式

    <?xml version="1.0"?>
            <fsimage>
                <NameSection>
                    <genstampV1>1000</genstampV1>
                    <genstampV2>1002</genstampV2>
                    <genstampV1Limit>0</genstampV1Limit>
                    <!-- 描述当前镜像的最后一个块ID -->
                    <lastAllocatedBlockId>1073741826</lastAllocatedBlockId>
                    <!-- 事务ID-对应的是fsimage_0000000000000000022 -->
                    <txid>22</txid>
                </NameSection>
                <INodeSection>
                    <lastInodeId>16390</lastInodeId>
                    <!-- inode节点描述HDFS文件系统所有信息 
                    我们保留文件/块层次结构的内存中表示。这是一个基本的INode类,它包含文件和文件的公共字段目录inode。
                    -->
                    <inode>
                        <id>16385</id>
                        <type>DIRECTORY</type>
                        <name></name>
                        <mtime>1528043810446</mtime>
                        <permission>hyxy:supergroup:rwxr-xr-x</permission>
                        <nsquota>9223372036854775807</nsquota>
                        <dsquota>-1</dsquota>
                    </inode>
                    <inode>
                        <id>16386</id>
                        <type>DIRECTORY</type>
                        <name>user</name>
                        <mtime>1528043865470</mtime>
                        <permission>hyxy:supergroup:rwxr-xr-x</permission>
                        <nsquota>-1</nsquota>
                        <dsquota>-1</dsquota>
                    </inode>
                    <inode>
                        <id>16387</id>
                        <type>DIRECTORY</type>
                        <name>hyxy</name>
                        <mtime>1528044944833</mtime>
                        <permission>hyxy:supergroup:rwxr-xr-x</permission>
                        <nsquota>-1</nsquota>
                        <dsquota>-1</dsquota>
                    </inode>
                    <inode>
                        <id>16388</id>
                        <type>DIRECTORY</type>
                        <name>20180603</name>
                        <mtime>1528044017284</mtime>
                        <permission>hyxy:supergroup:rwxr-xr-x</permission>
                        <nsquota>-1</nsquota>
                        <dsquota>-1</dsquota>
                    </inode>
                    <inode>
                        <id>16390</id>
                        <type>FILE</type>
                        <name>text.txt</name>
                        <replication>3</replication>
                        <mtime>1528044017272</mtime>
                        <atime>1528044016919</atime>
                        <perferredBlockSize>134217728</perferredBlockSize>
                        <permission>hyxy:supergroup:rw-r--r--</permission>
                        <blocks>
                            <block>
                                <id>1073741826</id>
                                <genstamp>1002</genstamp>
                                <numBytes>12</numBytes>
                            </block>
                        </blocks>
                    </inode>
                </INodeSection>
                <INodeReferenceSection></INodeReferenceSection>
                <SnapshotSection>
                    <snapshotCounter>0</snapshotCounter>
                </SnapshotSection>
                <INodeDirectorySection>
                    <directory>
                        <parent>16385</parent>
                        <inode>16386</inode>
                    </directory>
                    <directory>
                        <parent>16386</parent>
                        <inode>16387</inode>
                    </directory>
                    <directory>
                        <parent>16387</parent>
                        <inode>16388</inode>
                    </directory>
                    <directory>
                        <parent>16388</parent>
                        <inode>16390</inode>
                    </directory>
                </INodeDirectorySection>
                <FileUnderConstructionSection></FileUnderConstructionSection>
                <SnapshotDiffSection>
                    <diff>
                        <inodeid>16385</inodeid>
                    </diff>
                </SnapshotDiffSection>
                <SecretManagerSection>
                    <currentId>0</currentId>
                    <tokenSequenceNumber>0</tokenSequenceNumber>
                </SecretManagerSection>
                <CacheManagerSection>
                    <nextDirectiveId>1</nextDirectiveId>
                </CacheManagerSection>
            </fsimage>

      hdfs:分布式文件系统【分布式{切块和复本}---文件系统{逻辑上的}】

      镜像文件当中包含哪些信息,参照上述XML

      2:查看edits文件

        命令:$>hdfs oev -i edits_inprogress_0000000000000000040 -o ~/ed.xml

        含义:将edits_inprogress_0000000000000000040文件导出到~/ed.xml 默认为XML格式

        

    <?xml version="1.0" encoding="UTF-8"?>
            <EDITS>
              <EDITS_VERSION>-63</EDITS_VERSION>
              <RECORD>
                <OPCODE>OP_START_LOG_SEGMENT</OPCODE>
                <DATA>
                  <TXID>40</TXID>
                </DATA>
              </RECORD>
              <RECORD>
                <OPCODE>OP_MKDIR</OPCODE>
                <DATA>
                  <TXID>41</TXID>
                  <LENGTH>0</LENGTH>
                  <INODEID>16392</INODEID>
                  <PATH>/hyxy</PATH>
                  <TIMESTAMP>1528055285399</TIMESTAMP>
                  <PERMISSION_STATUS>
                <USERNAME>hyxy</USERNAME>
                <GROUPNAME>supergroup</GROUPNAME>
                <MODE>493</MODE>
                  </PERMISSION_STATUS>
                </DATA>
              </RECORD>
            </EDITS>

      edits文件记录的是我们的操作,里面有个record标签,下面就是记录的我们的操作。

    namenode的开启和运行过程

      一:开启

        1:默认目录下{hadoop.tmp.dir/dfs/name/current},fsimage文件存储为2个,加载fsimage_txid最后一个。

        2:加载edits_txid操作文件至内存中,元数据已经全部加在在内存上。

        3:保存checkpoint(检查点):合并fsimage和edits文件,重新生成新的镜像文件。

        4:等待接受来自datanode的block report。

      二:运行(内存)

        1:记录对hdfs的编辑操作,追加到edits_inprogress_txid

        2:更新内存中的元数据,达到一定的阈值后,运行checkpoint(检查点)

        3:接受来自datanode的心跳信息

    checkpoint检查点机制(相关属性)

      1:checkpoint周期,默认为3600秒

    <property>
          <name>dfs.namenode.checkpoint.period</name>
          <value>3600</value>
          <description>
              两个定期检查点之间的秒数。
          </description>
        </property>

      2:txid的次数达到1百万次,也执行checkpoint,与周期无关

            <property>
          <name>dfs.namenode.checkpoint.txns</name>
          <value>1000000</value>
          <description>
            无论'dfs.namenode.checkpoint.period'是否已经过期,Secondary NameNode或CheckpointNode都会为每个'dfs.namenode.checkpoint.txns'事务创建名称空间的检查点。
          </description>
        </property>

      3:每隔60秒检查txid操作次数

           <property>
          <name>dfs.namenode.checkpoint.check.period</name>
          <value>60</value>
          <description>
            SecondaryNameNode和CheckpointNode会每隔60秒查询NameNode以查询未检查点的事务数量。
          </description>
        </property>

      上述两个条件均可以触发checkpoint。

  • 相关阅读:
    ES6判断对象是否为空
    mui、拍照、个推推送消息【问题链接】
    查找SAP某个Tcode下已经实施的增强
    MySQL 事务
    Go 学习线路图
    Nginx 限流配置
    Redis 内存优化
    2021年 github被墙最新hosts-每日更新
    Nginx 反向代理与负载均衡详解
    完美实现跨域 iframe 高度自适应
  • 原文地址:https://www.cnblogs.com/lyr999736/p/9135241.html
Copyright © 2020-2023  润新知