master:一般的安装手册都是说写上namenode机器的IP或是名称。这里要说明一下,这个master不决定哪个是namenode,而决定的是secondarynamenode(决定谁是namenode的关键配置是core-site.xml中的fs.default.name这个参数)。
《SecondaryNamenode应用摘记 http://blog.csdn.net/dajuezhao/article/details/5987580》
今天看hadoop/bin目录下的shell时,发现start-dfs.sh中:
"$bin"/hadoop-daemon.sh --config $HADOOP_CONF_DIR start namenode $nameStartOpt
"$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR start datanode $dataStartOpt
"$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR --hosts masters start secondarynamenode
也就是,使用start-dfs.sh时,是启动该机器的namenode服务,masters指定的secondarynamenode服务!
正如最上面引用的一样!
其实masters和slaves文件中定义的内容,就是用于shell来启动对应机器的服务的!!
如果你自己管理他们,压根不需要这些文件!
$ find . -type f | while read file;do if cat $file | grep -E "masters|slaves" | grep -v "^#" ; then echo "=== $file"; echo "" ; fi; done
....
export HOSTLIST="${HADOOP_CONF_DIR}/slaves"
=== ./slaves.sh
"$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR --hosts masters start secondarynamenode
=== ./start-dfs.sh
"$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR --hosts masters stop secondarynamenode
=== ./stop-dfs.sh