Hadoop 1.x 启动脚本学习(2)
接上(1)中所描述的启动脚本进行逐一分析:
hadoop的启动脚本,基本思路是先进行初始化操作,调用hadoop-config.sh,然后针对各自不同的业务逻辑,进行不同的操作。
1. start-all.sh
该启动脚本启动hadoop集群,顺序执行start-dfs.sh和start-mapred.sh脚本。该脚本需要运行在hadoop的master节点,如果namenode和jobtracker分离,则需分别执行各自启动脚本。具体如下图所示:
2. start-dfs.sh
该脚本负责启动集群的dfs,可以适时地升级或者回滚dfs的状态吗,该脚本运行在namenode上。该脚本先接收参数判断是否回滚或者升级更新状态,其次通过hadoop-daemon.sh启动namenode,通过hadoop-daemons.sh启动datanode,最后通过hadoop-daemons.sh启动secondaryNamenode。具体如下图所示:
3. start-mapred.sh
该脚本负责启动集群的map-reduce,该脚本运行在jobtracker上。首先启动执行hadoop-config.sh进行相关参数的配置,然后启动jobtracker,最后启动tasktracker。具体如下图所示:
4. hadoop-daemon.sh
hadoop启动namenode或者jobtracker采用本地启动的方式。除此之外,还进行了一些日志以及环境变量设置的工作。其本地启动namenode或者jobtracker如下图所示:
5. hadoop-daemons.sh
该脚本负责启动所有的slave主机。依赖于slaves.sh脚本进行执行。如下图所示:
6. slaves.sh
该脚本针对主机列表中的每个slave机器,通过远程ssh方式执行命令,启动节点。如下图所示:
7. start-balancer.sh
该脚本通过调用hadoop-daemon.sh启动集群的平衡器。如下图所示:
8. start-jobhistoryserver.sh
该脚本通过调用hadoop-daemon.sh启动集群的任务历史服务器。如下图所示:
仔细的读者可以发现,最终都是调用的hadoop-daemon.sh,而其内部是调用了bin下的hadoop命令,hadoop命令功能比较复杂,详见Hadoop 1.x 启动脚本学习(3)。