在HDFS1中NameNode启动顺序是这样的:
1. 读取Fsimage文件
2. 读取edit logs文件,逐行执行里面的操作
3. 写checkpoint,生成新的Fsimage(老的Fsimage + editlogs)
4. 进入safe mode,等待datanodes的block reports,直到达到最小的replication数的block百分比才退出
在安全模式期间,client是不能修改namespace信息,也不允许复制blocks,client基本上是被block住的
而且有些问题导致从namenode启动到client能请求request会耗费很长时间
1. 如果editlogs变得很大(比如由于secondary namenode服务挂了,没有及时merge一个比较新的fsimage),导致读入很大的editlogs,执行操作会比较慢
2. 一般fsimage和editlogs的文件都会做raid 1镜像, 在写新的fsimage checkpoint的时候会写多份,这就要求多份都写成功后这个操作才算成功,所以任何一块盘有性能瓶颈,都会导致延迟

另外一个问题是Namenode的Web UI Server是在写checkpoint之后才会启动的,这就导致了如果长时间在startup期间,管理员是无法直观通过WwebUI来看到整个启动进度,只能通过namenode.hadoop.log来看。

不过在2.1.0beta中已经加上了一个feature,能在WebUI上查看NM startup status(
https://issues.apache.org/jira/browse/HDFS-4249),它的做法是将Web UI Server启动放到NM启动顺序的很前面,让用户可以尽早看到。而且在UI上,增加了不同stage的详细信息,包括加载的fsimage在NM节点上的绝对路径,它的文件大小,加载的inode的个数等,在safe mode的时候,也有显示已经收到的block数和block总数的占比,用户能大致估算出退出safe mode的时间。HDFS不仅仅是内部变得更健壮和稳定,在外围的用户体验也在变得越来越棒啊.
 

NM Startup progress:


除了WebUI,用户还可以wget http://namenode-address:50070/startupProgress ,获取JSON格式StartUp信息
{
"elapsedTime": 35866,
"percentComplete": 1,
"phases": [
{
"name": "LoadingFsImage",
"status": "COMPLETE",
"percentComplete": 1,
"elapsedTime": 165,
"file": "/data/yarn/name/current/fsimage_0000000000000002434",
"size": 22763,
"steps": [
{
"name": "Inodes",
"count": 215,
"total": 215,
"percentComplete": 1,
"elapsedTime": 25
},
{
"name": "DelegationKeys",
"count": 0,
"total": 0,
"percentComplete": 1,
"elapsedTime": 0
},
{
"name": "DelegationTokens",
"count": 0,
"total": 0,
"percentComplete": 1,
"elapsedTime": 0
}
]
},
{
"name": "LoadingEdits",
"status": "COMPLETE",
"percentComplete": 1,
"elapsedTime": 171,
"steps": [
{
"count": 1,
"file": "/data/yarn/name/current/edits_0000000000000002435-0000000000000002435",
"size": 1048576,
"total": 1,
"percentComplete": 1,
"elapsedTime": 15
},
{
"count": 1044,
"file": "/data/yarn/name/current/edits_0000000000000002436-0000000000000003479",
"size": 1048576,
"total": 1044,
"percentComplete": 1,
"elapsedTime": 155
}
]
},
{
"name": "SavingCheckpoint",
"status": "COMPLETE",
"percentComplete": 1,
"elapsedTime": 77,
"steps": [
{
"name": "Inodes",
"count": 299,
"file": "/data/yarn/name",
"total": 299,
"percentComplete": 1,
"elapsedTime": 14
},
{
"name": "DelegationKeys",
"count": 0,
"file": "/data/yarn/name",
"total": 0,
"percentComplete": 1,
"elapsedTime": 0
},
{
"name": "DelegationTokens",
"count": 0,
"file": "/data/yarn/name",
"total": 0,
"percentComplete": 1,
"elapsedTime": 0
}
]
},
{
"name": "SafeMode",
"status": "COMPLETE",
"percentComplete": 1,
"elapsedTime": 35118,
"steps": [
{
"name": "AwaitingReportedBlocks",
"count": 218,
"total": 218,
"percentComplete": 1,
"elapsedTime": 0
}
]
}
]
}
参考jira:

HDFS 2中Namenode启动时WebUI的变化的更多相关文章

  1. web.xml中配置启动时加载的servlet,load-on-starup

    web.xml中配置启动时加载的servlet,load-on-starup 使用servlet来初始化配置文件数据: 在servlet的配置当中,<load-on-startup>1&l ...

  2. HDFS中NameNode启动过程

    移动到hadoop文件目录下 NameNode启动命令:sbin/hadoop-daemon.sh start namenode DataNode启动命令:sbin/hadoop-daemon.sh ...

  3. java中服务器启动时,执行定时任务

    package com.ripsoft.util; import java.util.Calendar; import java.util.Timer; import javax.servlet.Se ...

  4. hadoop中namenode启动失败

    jps发现namenode启动失败 每次开机都要重新格式化一下namenode才可以 其实问题出现自tmp文件上,因为每次开机就会被清空,所以现在我们配置一个tmp文件目录. 如果之前没有配置过,默认 ...

  5. HDFS中namenode启动失败

    1.环境配置: -1.core-site.xml文件 <configuration> <property> <name>fs.defaultFS</name& ...

  6. VSCode 在.vscode/launch.json中设置启动时的参数

    如下脚本设置启动参数,如题,在.vscode/launch.json文件中,红色部分设置运行参数 { // Use IntelliSense to learn about possible attri ...

  7. VMware中Linux启动时***Host SMBus controller not enabled的解决方法

    Ubuntu18.04 64位 1.1如果能进入图形界面 在终端输入sudo su 键入root密码 //切换到root用户 1.2 如果不能进入图形界面,在VMware进入界面时按下shift进入G ...

  8. 在win10操作系统中pycharm启动时无法打开的解决方法

    ''' 当打开pycharm时报错 Error launching Pycharm Failed to load JVM DLL C:\Program Files\Jetbrains\Pycharm ...

  9. HDFS中NameNode和Secondary NameNode工作机制

    NameNode工作机制 0)启动概述 Namenode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作.一旦在内存中成功建立文件系统元数据的映像,则创建一个 ...

随机推荐

  1. C++小知识之Vector排序

    // sort algorithm example #include <iostream>     // std::cout #include <algorithm>    / ...

  2. 手机触屏的js事件

    处理Touch事件能让你跟踪用户的每一根手指的位置.你可以绑定以下四种Touch事件:     1.touchstart:  // 手指放到屏幕上的时候触发      2.touchmove:  // ...

  3. 高精度 java的一些题

    poj 1001 Exponentiation import java.util.*; import java.math.*; public class Main { public static vo ...

  4. Ubuntu安装JDK(tar.gz)

    如果没有创建root用户: sudo passwd root 在oracle官网下载jdk(百度"JDK")的tar.gz包: jdk-7u55-linux-x64.gz 这是我下 ...

  5. Linux 安装xtrabackup的依赖问题

    问题: 尝试安装xtrabackup rpm -ivh percona-xtrabackup-2.2.11-1.el7.x86_64.rpm 报错 perl(DBD::mysql) 被 percona ...

  6. Linux(CentOS6.5) 开放端口,配置防火墙

    打开配置文件 [root@localhost ~]# vi /etc/sysconfig/iptables 正确的配置文件 # Firewall configuration written by sy ...

  7. Open source and free log analysis and log management tools.

    Open source and free log analysis and log management tools. Maintained by Dr. Anton Chuvakin Version ...

  8. Qt窗口的标题栏自绘

    因个人需要,要修改Qt Widget的标题栏,网上找了大半天,没有得到答案,但发现问的人比较多 所以现将找到的此文分享一下. (原文:http://www.qtsoftware.com/develop ...

  9. JAVA 中的RMI是什么

    RMI的概念 RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制.使用这种机制,某一台计算机上的对象可以调用另外 一台 ...

  10. 面向对象程序设计-C++_课时19const_课时20不可修改的

    error C2131: 表达式的计算结果不是常数 #include <iostream> using namespace std; void main() { ; int finalGr ...