[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- -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:在写操作过程中,整个流程分为以下阶段
- 创建copying文件
- 在copying文件中写入数据
- 重命名文件
查看镜像文件,镜像文件中,存放所有文件和文件夹的源信息的树形结构
# 查看当前所在目录
[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 启动过程分析的更多相关文章
- ASP.Net Core MVC6 RC2 启动过程分析[偏源码分析]
入口程序 如果做过Web之外开发的人,应该记得这个是标准的Console或者Winform的入口.为什么会这样呢? .NET Web Development and Tools Blog ASP.NE ...
- 开机SystemServer到ActivityManagerService启动过程分析
开机SystemServer到ActivityManagerService启动过程 一 从Systemserver到AMS zygote-> systemserver:java入层口: /** ...
- Neutron分析(2)——neutron-server启动过程分析
neutron-server启动过程分析 1. /etc/init.d/neutron-server DAEMON=/usr/bin/neutron-server DAEMON_ARGS=" ...
- linux视频学习7(ssh, linux启动过程分析,加解压缩,java网络编程)
回顾数据库mysql的备份和恢复: show databases; user spdb1; show tables; 在mysql/bin目录下 执行备份: ./mysqldump -u root - ...
- Activity启动过程分析
Android的四大组件中除了BroadCastReceiver以外,其他三种组件都必须在AndroidManifest中注册,对于BroadCastReceiver来说,它既可以在AndroidMa ...
- Spark Streaming应用启动过程分析
本文为SparkStreaming源码剖析的第三篇,主要分析SparkStreaming启动过程. 在调用StreamingContext.start方法后,进入JobScheduler.start方 ...
- ActivityManagerService启动过程分析
之前讲Android的View的绘制原理和流程的时候,讲到过在Android调用setContentView之后,Android调用了一个prepreTravle的方法,这里面就提到了Activity ...
- Disconf源码分析之启动过程分析下(2)
接上文,下面是第二次扫描的XML配置. <bean id="disconfMgrBean2" class="com.baidu.disconf.client.Dis ...
- Service启动过程分析
Service是一种计算型组件,用于在后台执行一系列的计算任务.由于工作在后台,因此用户是无法直接感知到它的存在.Service组件和Activity组件略有不同,Activity组件只有一种运行模式 ...
随机推荐
- Java访问文件夹中文件的递归遍历代码Demo
上代码: import java.io.File; /* * 需求:对指定目录进行所有内容的列出(包含子目录中的内容) * 也可以理解为 深度遍历. */ public class FindAllFi ...
- laravel框架的安装与配置
正常安装: 1.composer.(https://getcomposer.org/Composer-Setup.exe) 安装之前要确保目录:wamp\bin\php\php5.4.3下的php.i ...
- 从零开始学 Web 之 ES6(六)ES6基础语法四
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- docker storage driver
docker默认有2种方式用于持久化数据,volumes和bind mounts,也可以使用tmpfs,其中使用volume是持久化数据的最好方式,volume由docker控制管理,使用docker ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十八):注册中心(Spring Cloud Consul)
什么是 Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与 ...
- Java中锁分类
锁的分类大致如下:公平锁/非公平锁可重入锁/不可重入锁独享锁/共享锁乐观锁/悲观锁分段锁 1.公平锁/非公平锁公平锁就是严格按照线程启动的顺序来执行的,不允许其他线程插队执行的:而非公平锁是允许插队的 ...
- 模型评估——ROC、KS
无论是利用模型对信用申请人进行违约识别,还是对授信申请人进行逾期识别……在各种各样的统计建模中,永远必不可少的一步是对模型的评价,这样我们就可以根据模型评价指标的取值高低,来决定选取哪个模型.本篇主要 ...
- leetcode — zigzag-conversion
/** * Source : https://oj.leetcode.com/problems/zigzag-conversion/ * * Created by lverpeng on 2017/6 ...
- Angularjs 通过asp.net web api认证登录
Angularjs 通过asp.net web api认证登录 Angularjs利用asp.net mvc提供的asp.net identity,membership实现居于数据库的用户名/密码的认 ...
- Java设计模式学习记录-命令模式
前言 这次要介绍的是命令模式,这也是一种行为型模式.最近反正没有面试机会我就写博客呗,该投的简历都投了.然后就继续看书,其实看书也会给自己带来成就感,原来以前不明白的东西,书上已经给彻底的介绍清楚了, ...