HDFS essay 2 - Clarify Name Node / Checkpoint Node/ Backup Node
为什么想用英文写了?我获取知识、技术的大部分途径都是通过英文,所以按照自己的理解用英文写下来也比较容易,另外,很多term都是不能翻译的,如果要持续学习技术和知识,那就不但要习惯去阅读,听,还要写,说。可惜从IBM出来后,很少有机会和人去说了,只能写了。就当提高自己英文水平吧
I am going to explain how Secondary Name Node in this article. It is not called SNN any more but Checkpoint node which is more precise.
FS Image & Edit log
Edit log is an append-only file which stores the metadata changes for durability. When client issues a command like 'create file','chmod' and 'rename' , NN will write this operation ( the command itself and the data) to Edit log as an edit entry / log which is uniquely identified by an ID , we called transaction ID as each operation is considered a transaction. Transacttion ID is an auto-increment variable. NN will also apply this to the in-memory medatadata structure. The form of the entry looks like below. During run time, NN does not write directly to fsimage as writing to fsimage is a time-consuming operation.
tranID: 7
put
'/xx/xx/log.txt',rwx------, ricky, ricky, 1024, $timestamp.....
tranID: 8
chmod 777
'/xx/xx/log.txt'
FS Image is the metadata file of HDFS namespace in NN . It is always outdated because NN does not write it frequently. Actually, when NN starts up, it will read FS image and merge Edit log to generate a new FS Image, the old one and Edit logs will be deleted. Imaging if there are many edit entries accumulated along the time(months), it will take much time to starup NN next time as there are too many entries to merge with the fsimage. Also considering this situaion, NN is down due to power outage, it tried to restore / catch up the newest state during startup by merging fsimage and too many edit logs and user is expecting it is up ASAP~~~.
Why SNN / Checkpoint and how it works
I already pointed one of the reason above. Another reason is merging fs image with edit logs is expensive operation(I/O, CPU intensive) which may restrict the client accessing to the NN. So, we will use a seperate machine as Checkpoint node to hand over the load to. So, NN remains active all the time.
How it works?
The fsimage file name contains the transaction id. For example, fsimage_7, means this image file has all the transaction up to transaction id 7. Similarly, The current in-use edit log file is edits_in_progress_$tranID(edits_in_progress_21) which means transaction whose ID aboves 21 will be stored in this file. Old edit log file will be renamed to edits_8-20 and no write to it any more. So, what happens when checkpointing?
- CPN gets the known most recent transaction id from current in-use edit log which is 21.
- CPN gets the fs image transaction id which is 7.
- CPN will download the edit logs whose name is edit_8-20.
- CPN will check if it has the fs image file whose transaction is 7(it usually has).
- CPN will do the checkpointing by merging the fsimage_7 and edits_8-20, generating new fsimage_20.
- CPN will send the fsimage_20 to NN . so, both of them has the newly generated fsimage_20. Next time, CNP will not download it from NN.
When the checkpoint get triggered? according to official doc, either of the 2 meets will trigger checkpointing.
- dfs.namenode.checkpoint.period, set to 1 hour by default, specifies the maximum delay between two consecutive checkpoints, and
- dfs.namenode.checkpoint.txns, set to 1 million by default, defines the number of uncheckpointed transactions on the NameNode which will force an urgent checkpoint, even if the checkpoint period has not been reached.
Please note that, CPN does not keep in-memory metadata and does not have block locations which are from block reports sent by DNs.

Backup Node
See here. It looks to me that Backup Node is better than CPN.
HDFS essay 2 - Clarify Name Node / Checkpoint Node/ Backup Node的更多相关文章
- Node.js入门:Node.js&NPM的安装与配置
Node.js安装与配置 Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0. ...
- 【Node.js】利用node.js搭建服务器并访问静态网页
node.js是一门服务端的语言,下面讲讲如何利用node.js提供给我们的api来搭建服务器,并且访问静态网页 项目结构如下 ------------------------------------ ...
- 【总文档】rac增加新节点的方法步骤 How to Add Node/Instance or Remove Node/Instance in 10gR2, 11gR1, 11gR2 and 12c Oracle Clusterware and RAC
[总文档]How to Add Node/Instance or Remove Node/Instance in 10gR2, 11gR1, 11gR2 and 12c Oracle Clusterw ...
- 安装nvm之后node不可用,“node”不是内部或外部命令,也不是可运行的程序或批处理文件(ng)
安装nvm: 1.下载nvm压缩包地址:https://github.com/coreybutler/nvm-windows/releases 2.下载后解压在目标文件夹中,我这里是H:\applic ...
- node.js&pm2搭建node生产环境
node.js下载地址https://nodejs.org/en/download/stable/ 下载截图 建议采用稳定编译过的版本,source code稍麻烦,编译过的直接可用,安装超级简单,红 ...
- Node.js-sublime text3 配置node.js(ERROR: The process "node.exe" not found.)
默认已经安装好sublime.node和npm 1.sublime的node.js插件下载 由于在package control上经常下载失败,所以这里直接从GitHub上进行下载! GitHub下载 ...
- AutoIt with XML: Add a child/grandchild node or remove any node
Sometimes, we have to use AutoIt script to edit an xml, add a node or remove a node, to make some de ...
- 树的遍历 迭代算法——思路:初始化stack,pop stack利用pop的node,push new node to stack,可以考虑迭代一颗树 因为后序遍历最后还要要访问根结点一次,所以要访问根结点两次是难点
144. Binary Tree Preorder Traversal Given a binary tree, return the preorder traversal of its nodes' ...
- 初学node node开发环境搭建 node模块化 commonJS原理
由于Node.js平台是在后端运行JavaScript代码,所以,必须首先在本机安装Node环境. 学习node,首先要装node,和它的包管理工具,这两个都是傻瓜式安装,百度一下就安装了. 安装完之 ...
随机推荐
- SQLlearn
- const、let、var的主要区别
接触ES6之后,以前定义变量的方式由var增加了let.const,平时看别人用也不知道如何区别具体差别,好好科普了一下记录下来,方便大家一起学习. var(大家最熟悉的定义方式) 1.可定义全局作用 ...
- ubnutu 安装protocol buffer
工作中需要使用protocol buffer,需要编译出protocol buffer的动态链接库,然后在别的makefile中链接它, 我的环境是ubnutu16.04,64bit,使用的proto ...
- The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.报该错误的一种原因。
今天发现某个action返回404. HTTP Status 404 – Not Found Type Status Report Message /xxx.action Description Th ...
- 基于JQ的简版选项卡记录
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 用Python代码实现微信跳一跳作弊器
最近随着微信版本的更新,在进入界面有个跳一跳的小游戏,在网上看到技术篇教你用Python来玩微信跳一跳 ( 转载自 " 工科给事中的技术博客 " ) 本文旨在总结,技术全靠大神完成 ...
- VMWARE虚拟机中CentOs7网络连接
1.选择网络连接模式 这里选择NAT模式 2.查看虚拟机逻辑地址段 编辑---->虚拟网络编辑器 这里显示的是192.168.40.0 我们本机占用了192.168.40.1,网关是192.16 ...
- 四、分离分层的 platform驱动
学习目标: 学习实现platform机制的分层分离,并基于platform机制,编写led设备和驱动程序: 一.分离分层 输入子系统.usb设备比驱动以及platform类型的驱动等都体现出分离分层机 ...
- 中国大学MOOC-C程序设计(浙大翁恺)—— 时间换算
时间换算(10分) 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如果小 ...
- Java——多线程---18.11.22
多线程代码:Runnable方法 package com.hebust.java.third; import java.util.Random; public class SaleTicket imp ...