HDFS【2.5.1】系列3:解密命令行 ./bin/hdfs namenode -format

学习Hadoop的过程中,教程标注需要在启动集群之前先格式化hdfs文件系统。

我之前以为格式化就跟linux一样,

后来很粗略的看过老版的源码,发现比我想的要简单很多。唯一可以解释的就是分布式的因素吧。

PS: 老版的格式化分析请见我之前博客:http://my.oschina.net/qiangzigege/blog/304601

---------------------------------------------------------------------------------------------------

不管怎么样,我们来看看 新版本 2.5.1中的HDFS的格式化吧。

编译好的目录在:~/hadoop-2.5.1-src/hadoop-dist/target/hadoop-2.5.1

进去是不是看到了很多熟悉的文件?!

为了方便,我们建立一个软链接如下:

ln -s  ~/hadoop-2.5.1-src/hadoop-dist/target/hadoop-2.5.1  hadoop-2.5.1-run

----------------------------------------------------------------------------------------------------------------------

root@idc100:~# cd hadoop-2.5.1-run
root@idc100:~/hadoop-2.5.1-run# ls
bin  hadoop-2.5.1-run  lib      LICENSE.txt  README.txt  share
etc  include           libexec  NOTICE.txt   sbin
root@idc100:~/hadoop-2.5.1-run#

 ------------------------------------------------------------------------------------------------------------------

执行 ./bin/hdfs namenode -format 是没有问题的。

然后我们从./bin/hdfs脚本入手来一点一点研究格式化的过程。

------------------------------------------------------------------------------------------

经过漫长的shell脚本研究(其实也没多久,一个晚上吧)

具体分析的细节我就不说了,说起来都是泪

自己在shell脚本里加echo查看各个变量的值,export的值

反正最终就是执行这么一句:

----------------------

通过echo,我们可以看到最终的结果就是执行: 

/usr/lib/jvm/jdk1.7.0_21/bin/java -Dproc_namenode -Xmx1000m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/root/hadoop-2.5.1-src/hadoop-dist/target/hadoop-2.5.1/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/root/hadoop-2.5.1-src/hadoop-dist/target/hadoop-2.5.1 -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,console -Djava.library.path=/root/hadoop-2.5.1-src/hadoop-dist/target/hadoop-2.5.1/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Dhadoop.security.logger=INFO,RFAS -Dhdfs.audit.logger=INFO,NullAppender -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.hdfs.server.namenode.NameNode -format

 

你可能感兴趣的:(hdfs,format,格式化)