Hadoop相关启动脚本分析

刚开始配置hadoop难免出错,学习一下启动的脚本对分析错误还是很有帮助的。而且可以顺便学习shell。

我自己对shell命令还算比较熟,shell脚本基本看得懂,不过没具体去深究。所以下面提到的一些shell要点高手莫笑。

Hadoop 0.20.203

hadoop   主要命令集散地  
hadoop-config.sh      
hadoop-daemon.sh   Runs a Hadoop command as a daemon.  
hadoop-daemons.sh   Run a Hadoop command on all slave hosts.  
jsvc   application to launch java daemon  
rcc   The Hadoop record compiler  不懂  
slaves.sh   Run a shell command on all slave hosts.  
start-all.sh   start-all = start-dfs + start+mapred  # Start all hadoop daemons.  Run this on master node.  
start-balancer.sh      
start-dfs.sh      
start-jobhistoryserver.sh      
start-mapred.sh      
stop-all.sh      
stop-balancer.sh      
stop-dfs.sh      
stop-jobhistoryserver.sh      
stop-mapred.sh      


至于bash的参考资料,首选这里 :

更多Hadoop相关信息见Hadoop 专题页面 ?tid=13

我们从最常用的命令开始

start-all.sh

bin=`dirname "$0"`   bin=`cd "$bin"; pwd`      . "$bin"/hadoop-config.sh      # start dfs daemons   "$bin"/start-dfs.sh --config $HADOOP_CONF_DIR      # start mapred daemons   "$bin"/start-mapred.sh --config $HADOOP_CONF_DIR  

第一部分是取得bin目录,方便调用其他sh。因为你无法知道是从什么目录运行脚本的,所以无法使用相对路径。

注意hadoop-config.sh 前面有一个点。

参看资料

. (a period)              . filename [arguments]          Read and execute commands from the filename argument in the current shell context.  

我们获得一个很好的信息,all = dfs + mapred

之前都把namenode和jobtracker放到一起,datanode和tasktracker放到一起。其实dfs和mapred这两部分还是现对比较独立的。最新的hadoop就把这两部分分开了。

得意

start-dfs.sh / start-mapred.sh

注意daemon一个后面有s,一个没。带s的是启动slaves的。刚开始没看清还蛋疼了许久。

"$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  

这里能解开我之前的一个疑惑:master和slaves的怎样配置master和slaves文件。

对于master:master文件只用来启动secondarynamenode,slaves只用来启动slaves

对于slaves:bin下的脚本没用到这两个文件

安静

 但其他部分可能用到

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d3a934dd1e4f10285cb1be70ac17668c.html