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- -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

[HDFS_add_1] HDFS 启动过程分析的更多相关文章

  1. ASP.Net Core MVC6 RC2 启动过程分析[偏源码分析]

    入口程序 如果做过Web之外开发的人,应该记得这个是标准的Console或者Winform的入口.为什么会这样呢? .NET Web Development and Tools Blog ASP.NE ...

  2. 开机SystemServer到ActivityManagerService启动过程分析

    开机SystemServer到ActivityManagerService启动过程 一 从Systemserver到AMS zygote-> systemserver:java入层口: /** ...

  3. Neutron分析(2)——neutron-server启动过程分析

    neutron-server启动过程分析 1. /etc/init.d/neutron-server DAEMON=/usr/bin/neutron-server DAEMON_ARGS=" ...

  4. linux视频学习7(ssh, linux启动过程分析,加解压缩,java网络编程)

    回顾数据库mysql的备份和恢复: show databases; user spdb1; show tables; 在mysql/bin目录下 执行备份: ./mysqldump -u root - ...

  5. Activity启动过程分析

    Android的四大组件中除了BroadCastReceiver以外,其他三种组件都必须在AndroidManifest中注册,对于BroadCastReceiver来说,它既可以在AndroidMa ...

  6. Spark Streaming应用启动过程分析

    本文为SparkStreaming源码剖析的第三篇,主要分析SparkStreaming启动过程. 在调用StreamingContext.start方法后,进入JobScheduler.start方 ...

  7. ActivityManagerService启动过程分析

    之前讲Android的View的绘制原理和流程的时候,讲到过在Android调用setContentView之后,Android调用了一个prepreTravle的方法,这里面就提到了Activity ...

  8. Disconf源码分析之启动过程分析下(2)

    接上文,下面是第二次扫描的XML配置. <bean id="disconfMgrBean2" class="com.baidu.disconf.client.Dis ...

  9. Service启动过程分析

    Service是一种计算型组件,用于在后台执行一系列的计算任务.由于工作在后台,因此用户是无法直接感知到它的存在.Service组件和Activity组件略有不同,Activity组件只有一种运行模式 ...

随机推荐

  1. RecyclerView的简单使用

    使用 RecyclerView 要做下面这些操作, 1.在build.gradle添加 RecyclerView的依赖,因为RecyclerView不是内置在android系统中的,请注意版本要一致 ...

  2. 本地k8s环境minikube搭建过程

    首先要安装docker这个环境是需要自己安装的.相关步骤如下: 1 2 3 4 5 6 7 8 9 10 11 yum install -y yum-utils device-mapper-persi ...

  3. python解析处理snmp回显----snmp

    查看服务端配置:https://www.cnblogs.com/dpf-10/p/9175409.html 查看内容示例: D:\python>snmpwalk -v 2c -c public ...

  4. [TJOI 2018]智力竞赛

    Description 题库链接 给出一张 \(m\) 个点的有向图.问可重最小路径覆盖是否 \(\leq n+1\) .若不,求最多用 \(n+1\) 条路径去覆盖,最大化未覆盖点点权最小值. \( ...

  5. Shell 函数定义与调用

    linux shell 可以用户定义函数,然后在 shell 脚本中可以随便调用. 以一个计算两数之和的函数为例: #! /bin/bash # 函数定义 sum(){ return $(($1+$2 ...

  6. C#winform窗体用户控件自定义事件

    C#许多事情都和事件有关系,大部分的事情我们可以通过C#自己的事件来完成,但如果我们自己新建了一个自定义控件,我们该如何定义自己想要的事件呢?下面我就来为大家粗略的讲解一番. 假设我们自定义了一个控件 ...

  7. XML部分

    XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? 两种形式:DTD以及schema: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展sc ...

  8. Task.Run Vs Task.Factory.StartNew 【收藏】

    在.Net 4中,Task.Factory.StartNew是启动一个新Task的首选方法.它有很多重载方法,使它在具体使用当中可以非常灵活,通过设置可选参数,可以传递任意状态,取消任务继续执行,甚至 ...

  9. [android] 手机卫士手机定位的原理

    手机定位的三种方式:网络定位,基站定位,GPS定位 网络定位,手机连上wifi 2g 3g的时候,手机会有一个ip,误差很大 基站定位,精确度与基站的多少有关,几十米到几公里的误差 GPS定位,至少需 ...

  10. mysql允许所有机器访问

    1.进入到MySQL安装的bin目录. 2.运行mysql -uroot 3. 授权用户,你想root使用密码从任何主机连接到mysql服务器 GRANT ALL PRIVILEGES ON *.* ...