Hadoop的shell脚本分析(2)

分析:
根据前面的注释信息,我们发现这个脚本用于启动集群的DFS,我们知道DFS由namenode,datanode,secondarynamenode组成,所以在脚本的最后它又启动了3个进程,分别根据配置文件启动了namenode,datanode,secondarynamenode。其实这个时候你应该已经知道start-mapred.sh干了什么事了。


start-mapred.sh:

# Start Hadoop map reduce daemons.  Run this on master node.       bin=`dirname "$0"`    bin=`cd "$bin"; pwd`       "$bin"/hadoop-config.sh       # start mapred daemons    # start jobtracker first to minimize connection errors at startup    "$bin"/hadoop-daemon.sh --config $HADOOP_CONF_DIR start jobtracker    "$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR start tasktracker  

分析:
正如你所想,它的作用用于启动mapreduce,所以它的最后同样根据配置文件启动了jobtracker和tasktracker,呵呵,现在发现其实脚本干的事没有想象的那么难了吧。如果你对shell代码看得仔细一点,你会发现hadoop-daemon.sh脚本用于启动namenode和jobtracker,而hadoop-daemons.sh脚本用于启动datanode,secondarynamenode和tasktracker。也就是说hadoop-daemon.sh用于启动master上的进程,而hadoop-daemons.sh用于启动slaves和secondarynamenode主机上的进程(这里考虑的是slaves,secondarynamenode和master配置在了不同主机上的情况)。如果我们分析一下它们俩的代码,你会发现其实它们是有联系的。


hadoop-daemons.sh:

# Run a Hadoop command on all slave hosts.       usage="Usage: hadoop-daemons.sh [--config confdir] [--hosts hostlistfile] [start|stop] command args..."      if no args specified, show usage    if [ $# -le 1 ]; then      echo $usage      exit 1   fi       bin=`dirname "$0"`    bin=`cd "$bin"; pwd`       . $bin/hadoop-config.sh       exec "$bin/slaves.sh" --config $HADOOP_CONF_DIR cd "$HADOOP_HOME" \; "$bin/hadoop-daemon.sh" --config $HADOOP_CONF_DIR "$@"  

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

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