Ⅰ.格式化HDFS
首先停止已经启动的hadoop
$HADOOP_HOME/sbin/stop-all.sh
删除hadoop配置文件hdfs-site.xml,查找dfs.name.dir、dfs.data.dir以及Hadoop.tmp.dir指定的目录,并将其删除。
rm -rf ${HADOOP_HOME}/tmp
格式化HDFS
hadoop namenode -format 或执行hadoop目录下hdfs namenode -format
格式化完成
启动hadoop,发现问题
[root@node02 ~]# jps
2119 NodeManager
2249 Jps
datenode无法启动,且通过sbin下hadoop-daemon.sh start datanode也无法启动
Ⅱ.格式化后datenode进程无法启动的原因 && 解决方法
在网上查资料发现,问题产生的原因是重新格式化HDFS时,只删除了master节点上的指定目录,但是没有删除slaves节点上的相应目录。
当执行文件系统格式化时,会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)中保存一个current/VERSION文件,记录namespaceID,标识了所格式化的 namenode的版本。如果我们频繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的current/VERSION文件只是你第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。
当执行文件系统格式化时,会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)中保存一个current/VERSION文件,记录namespaceID,标识了所格式化的 namenode的版本。如果我们频繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的current/VERSION文件只是你第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。
删除hdfs-site.xml的dfs.name.dir指定目录和core-site.xml的hadoop.tmp.dir指定目录,重启hadoop就会正常了
Ⅲ.总结
总结:重新格式化集群HDFS的正确方法是将集群中相应的目录都删除,然后执行格式化命令。
1、重新格式化意味着集群的数据会被全部删除,格式化前需考虑数据备份或转移问题;
2、先删除主节点(即namenode节点),Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容 (注意是删除目录下的内容不是目录);
3、删除所有数据节点(即datanode节点) ,Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容;
4、格式化一个新的分布式文件系统:
1、重新格式化意味着集群的数据会被全部删除,格式化前需考虑数据备份或转移问题;
2、先删除主节点(即namenode节点),Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容 (注意是删除目录下的内容不是目录);
3、删除所有数据节点(即datanode节点) ,Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容;
4、格式化一个新的分布式文件系统:
文章评论