在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. Docker基本概念填坑

    Docker的基本概念填坑 Docker的基本概念填坑 1. Docker的基本组成 Docker Client客户端 Docker Daemon守护进程 Docker Image镜像 Docker ...

  2. hadoop笔记之Hive入门(什么是Hive)

    Hive入门(一) Hive入门(一) 什么是Hive? Hive是个数据仓库,数据仓库就是数据库,但又与一般意义上的数据库有点区别 实际上,Hive是构建在hadoop HDFS上的一个数据仓库. ...

  3. hibernate中多对多关联

    hibernate中多对多关联 “计应134(实验班) 凌豪” 在关系数据库中有一种常见的关系即多对多关系,例如课程和学生的关系,一个学生可以选择多门课程,同时一门课程也可以被多个学生选择, 因此课程 ...

  4. 关于scala环境配置详解

    首先从官网下载适合自身电脑配置的scala安装包.scala下载官网网址:http://www.scala-lang.org/download/ 同时scala还有自己集成好的IDE,例如eclips ...

  5. ERROR 1062 (23000): Duplicate entry '1-1' for key 'PRIMARY'

    这个错误是说,由于某个SQL操作造成了,表中主键重复. 例子: create table t(x int,y int,z int, primary key(x,y)); insert into t(x ...

  6. Linux 如何打开端口

    举例: 开放10000端口的解决步骤如下: 1.修改/etc/sysconfig/iptables文件,增加如下一行: -A RH-Firewall-1-INPUT -m state --state ...

  7. Qt编写端口扫描工具

    Qt提供了QTcpSocket类,可以方便地建立TCP连接.利用这一功能,Maxiee编写了一个简单地端口扫描工具. 软件的功能就是,扫描某一网段的固定端口,如80端口,若目的地址开放了这一端口,那么 ...

  8. python SyntaxError: Non-ASCII character '\xd5' in file

    我使用的是python2.7, 在pycharm想运行程序,但是却报出了SyntaxError: Non-ASCII character '\xd5' in file 原因是因为源码中包含了中文注释, ...

  9. saiku之固定维度(必选维度)

    工作中遇到的问题,记录下来方便以后查找. 在saiku中如何设定固定维度? 找到WorkspaceDropZone.js文件,在synchronize_query: function(){}方法中的“ ...

  10. js中的刷新方法

    刷新并清除缓存: location.reload(true); 返回上一页并刷新: history.go(-1); location.reload(true); 子页面刷新父页面: self.open ...