• [HDFS_add_1] HDFS 启动过程分析



    0. 说明

       HDFS 文件概念 && HDFS 启动过程分析


    1. HDFS 文件概念 

      【1.1 NameNode 职能】

      存储文件类型、大小、权限、路径等等元数据

      通过 edits(编辑日志) 和 fsimage(镜像文件) 进行存储

      查看编辑日志命令

    # 查看当前目录
    [centos@s101 current]$ pwd
    /home/centos/ha/dfs/name1/current
    
    # 查看编辑日志文件并输出到指定目录
    [centos@s101 current]$ hdfs oev -i edits_0000000000000000508-0000000000000000508 -o ~/testdata/edits.xml -p xml

      编辑日志文件分析

    <RECORD>
        <!-- OP_ADD是添加文件 -->
        <OPCODE>OP_ADD</OPCODE>
        <DATA>
                     
            <TXID>10</TXID>    //   <!-- 事务id -->
            <LENGTH>0</LENGTH>    //   长度为0
            <INODEID>16386</INODEID>    //文件id
            <PATH>/1.sh._COPYING_</PATH>    //复制中文件
            <REPLICATION>3</REPLICATION>
            <MTIME>1532249632886</MTIME>
            <ATIME>1532249632886</ATIME>
            <BLOCKSIZE>134217728</BLOCKSIZE>
            <CLIENT_NAME>DFSClient_NONMAPREDUCE_300367892_1</CLIENT_NAME>
            <CLIENT_MACHINE>192.168.23.101</CLIENT_MACHINE>
            <OVERWRITE>true</OVERWRITE>
            <PERMISSION_STATUS>
            <USERNAME>centos</USERNAME>
            <GROUPNAME>supergroup</GROUPNAME>
            <MODE>420</MODE>
            </PERMISSION_STATUS>
            <RPC_CLIENTID>afd88564-d970-4754-81fe-0b427f52d389</RPC_CLIENTID>
            <RPC_CALLID>3</RPC_CALLID>
        </DATA>
    </RECORD>

      编辑日志中,存放的是操作步骤,包括用户写操作和系统内部写操作

      eg:在写操作过程中,整个流程分为以下阶段

    1. 创建copying文件
    2. 在copying文件中写入数据
    3. 重命名文件

      查看镜像文件,镜像文件中,存放所有文件和文件夹的源信息的树形结构

    # 查看当前所在目录
    [centos@s101 current]$ pwd
    /home/centos/ha/dfs/name1/current
    
    # 查看镜像文件并保存到指定目录
    [centos@s101 current]$ hdfs oiv -i fsimage_0000000000000000817 -o ~/testdata/fsimage.xml -p XML

      【1.2 DataNode 职能】

      存储真实数据,通过blk(块)方式存储

      真实数据存储目录(/home/centos/hadoop 为 HDFS 工作目录)如下:

    /home/centos/hadoop/dfs/data1/current

      【1.3 副本概念】

      文件备份数,通过 hdfs-site.xml 指定副本数


      【1.4 块】

      HDFS 文件在存储时,是以块为单位进行存储,块大小即文件块的最大值
      块大小为 128M

      【1.5 HDFS 配置文件 hdfs-site.xml】

      除了以下还可以设置 副本数 [dfs.replication] 、块大小 [dfs.blocksize]

    <configuration>
        <!-- value标签需要写本机ip -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://s101</value>
            <description>指定文件系统</description>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/centos/hadoop</value>
            <description>指定工作目录</description>
        </property>
    </configuration>

     2. HDFS 启动过程分析

      【2.1 启动 NameNode】

      0. NameNode 先进入安全模式,在此模式下,文件均处于只读状态
      1. NameNode 将 fsimage 文件加载到内存
      2. 将 edits_inprogress 实例化为 edits 文件
      3. NameNode 将 edits 文件加载到内存
      4. 将 fsimage 文件与 edits 文件进行融合,通过旧的 fsimage 文件重现 edits 文件的操作步骤,生成新的 fsimage 文件
      5. 退出安全模式,文件可写

      【2.2 安全模式 Safemode】

       安全模式,在此模式下,文件均处于只读状态

    # 进入安全模式
    hdfs dfsadmin -safemode enter
    
    # 离开安全模式
    hdfs dfsadmin -safemode leave
    
    # 得到当前的状态
    hdfs dfsadmin -safemode get
    
    # 等待
    hdfs dfsadmin -safemode wait

      【2.3 edits_inprogress 文件说明】

       edits_inprogress 文件为 Hadoop 从开始到停止过程中做的操作

      

       【2.4 手动滚动镜像文件 && 编辑日志】

    # 编辑日志滚动
    hdfs dfsadmin -rollEdits
    
    # 先进入安全模式,然后手动滚动镜像文件
    hdfs dfsadmin -safemode enter
    hdfs dfsadmin -saveNamespace

  • 相关阅读:
    python 【第一篇】初识python
    python 【目录】
    python 爬虫必知必会
    MySQL测试代码
    MySQL学习笔记
    pycharm社区版无database 解决方法
    windows python flask上传文件出现IOError: [Errno 13] Permission denied: 'E:\git\test\static\uploads'的解决方法
    ubuntu下python flask环境搭建
    windows下的python flask环境搭建
    Mockito (十四)
  • 原文地址:https://www.cnblogs.com/share23/p/9681331.html
Copyright © 2020-2023  润新知