手机版
你好,游客 登录 注册
背景:
阅读新闻

Hadoop的shell脚本分析

[日期:2012-02-11] 来源:Linux社区  作者:weixiaolu [字体: ]

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


start-mapred.sh:

  1. # Start Hadoop map reduce daemons.  Run this on master node.   
  2.   
  3. bin=`dirname "$0"`   
  4. bin=`cd "$bin"; pwd`   
  5.   
  6. "$bin"/hadoop-config.sh   
  7.   
  8. # start mapred daemons   
  9. # start jobtracker first to minimize connection errors at startup   
  10. "$bin"/hadoop-daemon.sh --config $HADOOP_CONF_DIR start jobtracker   
  11. "$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:

  1. # Run a Hadoop command on all slave hosts.   
  2.   
  3. usage="Usage: hadoop-daemons.sh [--config confdir] [--hosts hostlistfile] [start|stop] command args..."  
  4.   
  5. if no args specified, show usage   
  6. if [ $# -le 1 ]; then   
  7.   echo $usage   
  8.   exit 1  
  9. fi   
  10.   
  11. bin=`dirname "$0"`   
  12. bin=`cd "$bin"; pwd`   
  13.   
  14. . $bin/hadoop-config.sh   
  15.   
  16. exec "$bin/slaves.sh" --config $HADOOP_CONF_DIR cd "$HADOOP_HOME" \; "$bin/hadoop-daemon.sh" --config $HADOOP_CONF_DIR "$@"  
linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款