Hadoop namenode重新格式化需注意问题
1、重新格式化意味着集群的数据会被全部删除,格式化前需考虑数据备份或转移问题;
2、先删除主节点(即namenode节点),Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容 (注意是删除目录下的内容不是目录);
3、删除所有数据节点(即datanode节点) ,Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容;
4、格式化一个新的分布式文件系统:
$ hadoop namenode -format
注意
(1)Hadoop的临时存储目录tmp(即core-site.xml配置文件中的hadoop.tmp.dir属性,默认值是/tmp/hadoop-
u
s
e
r
.
n
a
m
e
)
,
如
果
没
有
配
置
h
a
d
o
o
p
.
t
m
p
.
d
i
r
属
性
,
那
么
h
a
d
o
o
p
格
式
化
时
将
会
在
/
t
m
p
目
录
下
创
建
一
个
目
录
,
例
如
在
c
l
o
u
d
用
户
下
安
装
配
置
h
a
d
o
o
p
,
那
么
H
a
d
o
o
p
的
临
时
存
储
目
录
就
位
于
/
t
m
p
/
h
a
d
o
o
p
−
c
l
o
u
d
目
录
下
(
2
)
H
a
d
o
o
p
的
n
a
m
e
n
o
d
e
元
数
据
目
录
(
即
h
d
f
s
−
s
i
t
e
.
x
m
l
配
置
文
件
中
的
d
f
s
.
n
a
m
e
n
o
d
e
.
n
a
m
e
.
d
i
r
属
性
,
默
认
值
是
{user.name}),如果没有配置hadoop.tmp.dir属性,那么hadoop格式化时将会在/tmp目录下创建一个目录,例如在cloud用户下安装配置hadoop,那么Hadoop的临时存储目录就位于/tmp/hadoop-cloud目录下 (2)Hadoop的namenode元数据目录(即hdfs-site.xml配置文件中的dfs.namenode.name.dir属性,默认值是
user.name),如果没有配置hadoop.tmp.dir属性,那么hadoop格式化时将会在/tmp目录下创建一个目录,例如在cloud用户下安装配置hadoop,那么Hadoop的临时存储目录就位于/tmp/hadoop−cloud目录下(2)Hadoop的namenode元数据目录(即hdfs−site.xml配置文件中的dfs.namenode.name.dir属性,默认值是{hadoop.tmp.dir}/dfs/name),同样如果没有配置该属性,那么hadoop在格式化时将自行创建。必须注意的是在格式化前必须清楚所有子节点(即DataNode节点)dfs/name下的内容,否则在启动hadoop时子节点的守护进程会启动失败。这是由于,每一次format主节点namenode,dfs/name/current目录下的VERSION文件会产生新的clusterID、namespaceID。但是如果子节点的dfs/name/current仍存在,hadoop格式化时就不会重建该目录,因此形成子节点的clusterID、namespaceID与主节点(即namenode节点)的clusterID、namespaceID不一致。最终导致hadoop启动失败。