文档章节

一个MapReuce作业的从开始到结束--第1章 NameNode节点的格式化

brian_2017
 brian_2017
发布于 2017/01/17 09:21
字数 811
阅读 3
收藏 0

Hadoop配置好之后,第一个要执行的命令是“./bin/hadoopnamenode -format”。这个命令在NameNode节点上执行,格式化NameNode节点。



名字节点格式化的本质,就是从配置文件里读取NameNode的两个目录NamespaceDirsNamespaceEditsDirs,然后将目录清空--也就是删除这两个目录,再新建这两个目录。



./bin/hadoop”是一个bash脚本。它将输入的命令转成Java命令执行。



对”namenode-format”来说,hadoop脚本将命令传到:

org.apache.hadoop.hdfs.server.namenode.NameNode”执行。



NameNode类的源代码在

hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java”文件。



NameNode类是可执行的,从main函数开始执行。在这个main函数,先执行这个

StringUtils.startupShutdownMessage(NameNode.class,argv, LOG)”

再执行”NameNode namenode =createNameNode(argv, null)”



StringUitls类的源代码在

core/org/apache/hadoop/util/StringUtils.java”

StringUtils里的函数全部是静态函数,实际上它的作用是容器,将各种辅助字符串处理函数封装在一起。



StringUitls类的函数startupShutdownMessage,它的作用是打印启动和退出信息。它先在Log里打印启动信息,形如:

/************************************************************

STARTUP_MSG: Starting NameNode

STARTUP_MSG: host =brian-i3/127.0.1.1

STARTUP_MSG: args =[-format]

STARTUP_MSG: version =1.1.3-SNAPSHOT

STARTUP_MSG: build = -r ;compiled by 'brian' on Sat Oct 19 11:24:41 CST 2013

************************************************************/



然后,再设置一个打印退出信息的Hook一个线程,那么,将来进程退出的时候,会打印退出信息,形如:

/************************************************************

SHUTDOWN_MSG: Shutting downNameNode at brian-i3/127.0.1.1

************************************************************/



NameNodemain函数,执行“NameNodenamenode = createNameNode(argv, null)”,在createNameNode(argv,null)函数里,执行完了之后,直接System.exit()退出返回。



NameNode类的createNameNode函数,首先要执行“Configurationconf = New Configuration()”,读取配置文件。



如果将conf内容转成字符串,其结果是

Configuration:core-default.xml, core-site.xml, hdfs-default.xml, hdfs-site.xml”

也就说,现在Hadoop的运行配置由这4xml文件设定。



createNameNode函数里,进行”namenode-format“,执行fomat,就是执行3个参数的format函数。



NameNode类的函数format有多个。3个参数的format函数,定义如下:

private static booleanformat(Configuration conf,

booleanisConfirmationNeeded, boolean isInteractive)

,先获取两个目录,一个是名字空间目录,一个是名字空间编辑目录

Collection<File>dirsToFormat = FSNamesystem.getNamespaceDirs(conf);

Collection<File>editDirsToFormat =

FSNamesystem.getNamespaceEditsDirs(conf);



函数getNamespaceDirsgetNamespaceEditsDirs是静态函数,它们从conf里获取相应的目录字符串,然后转成File的集合输出。在笔者的机器上,Hadoop是伪分布式方式运行,这两个目录是相同的,都是/tmp/hadoop-brian/dfs/name目录。



对这两个目录,检查是否存在,如果不存在,继续执行格式化。如果存在,但不是在交互模式,不进行格式化,如果在交互模式,提示否则要进行格式化,如果回答是Y就继续执行格式化,否则不格式化。



然后,在format函数里,会运行到这里

FSNamesystem nsys = newFSNamesystem(new FSImage(dirsToFormat,

editDirsToFormat),conf);

nsys.dir.fsImage.format();



fsImagefomat的时候,实际上是调用FSImage类做format



FSImage类的源代码在这里:hdfs/org/apache/hadoop/hdfs/server/namenode/FSImage.java



FSImage类的format函数,在这里对目录处理成:org.apache.hadoop.hdfs.server.common.Storage.StorageDirectory;

最终到这里:

StorageDirectory sd;

sd.clearDirectory()

sd的当前目录全删除,然后再重新创建。



clearDirectory()函数,最终执行的是FileUtil.fullyDelete(curDir),在这里递归执行fullyDeleteContents,删除目录。

© 著作权归作者所有

brian_2017
粉丝 3
博文 61
码字总数 145216
作品 0
私信 提问
HDFS HA和Federation

cluster1和cluster2组成hdfs联盟,cluster1有namenodeA和namenodeB,cluster2有namenodeC和namenodeD。 安装配置好后启动顺序应该为: 1.在所有zookeeper集群节点上启动zookeeper:zkServer....

cjun1990
2015/08/27
79
0
Hadoop各模块的具体分析

Hadoop集群架构 Hadoop集群由一个Master主节点和若干个Slave节点组成。其中,Master节点上运行NameNode和JobTracker守护进程;Slave节点上运行DataNode和TaskTracker守护进程。 Hadoop分别从...

牧师-Panda
2016/11/06
1K
0
Hadoop-2.6.0集群搭建(多机环境HDFS HA+YARN HA,推荐)

搭建 HDFS HA 和 ResourceManager HA 集群 下载Hadoop: http://hadoop.apache.org/releases.html 集群规划 HDFS HA说明 Hadoop 2.x中通常由两个NameNode组成,一个处于Active状态,另一个处...

翻船全靠浪
2016/04/25
66
0
第9章-构建Hadoop集群-笔记

控制脚本 Hadoop内置一些脚本来运行指令,在集群内启动和终止守护进程。 这些脚本存放在bin目录中,通过masters和slaves文件指定集群内的所有机器。 1、masters文件,主要记录运行辅助namen...

hiqj
2014/09/15
224
0
【Hadoop】- Hadoop1.x 伪分布式环境搭建

Hadoop体系的主要组件:HDFS/MapReduce HDFS: Hadoop Distribution File System NameNode、SecondNameNode:名称节点 作用:维护Hadoop中存储数据块的相关信息,例如记录hadoop集群中某个数...

ZeroneLove
02/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
昨天
64
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
昨天
26
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
昨天
43
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
昨天
27
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
昨天
44
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部