HADOOP1.0.3的start-dfs.sh系列脚本分析

本文详细分析了Hadoop 1.0.3版本的start-dfs.sh脚本,揭示了启动Hadoop分布式文件系统(DFS)的过程,包括namenode、datanode和secondarynamenode的启动。脚本通过hadoop-daemon.sh来启动各个节点,同时也探讨了参数处理和日志目录的创建。此外,文章还介绍了hadoop-daemon.sh和slaves.sh脚本在启动过程中扮演的角色。
摘要由CSDN通过智能技术生成

熟悉脚本的启动过程,也就熟悉了hadoop的执行过程。所以研究并学习hadoop的脚本启动过程是非常有意义的。

对shell命令不是太熟悉,学的比较辛苦,里面还有些地方不明白,或者有错误的地方,希望如果有错误,能有人帮我指出来,谢谢。

(1)start-dfs.sh脚本

1)说明

start-dfs.sh可以单独运行,也可以启动start-all.sh时启动dfs进程。

start-dfs.sh的作用在于启动主节点的namenode,启动secondnamenode,以及各从节点的datanode进程。

脚本注释中有以下三句话:

start-dfs支持upgrage和rollback两个参数,来更改系统的状态。其中upgrage用于升级hdfs文件系统;如果升级失败,可以用rollback对系统进行回滚。具体情况还不太明了。

最后,Run this on master node说明了必须在namenode进程运行的节点上运行该脚本。如果不在core-size.xml文件定义的fs.default.name变量的机器名运行start-dfs.sh或者start-daemon.sh或者hadoop namenode,是无法成功启动namenode守护进程的。已经经过验证。stop-dfs也是一样的。原因:在hadoop脚本中可以看出namenode进程是在本地启动的,所以如果不在core-site.xml定义的节点上运行start-dfs脚本,不会ssh到该节点上去启动namenode。这部分在后续会进行介绍。

2)脚本执行过程

由于脚本不长,而且其它脚本前面的处理也一致,所以对这个脚本作详细说明。后面的几个脚本就挑主要部分进行解释。

#说明:定义usage变量,即start-dfs.sh的使用说明,在后面的内容可以看到,当参数输入错误时,会打印该消息。

usage="Usage: start-dfs.sh[-upgrade|-rollback]"

 

#说明:定义bin变量,即hadoop home目录中bin所在目录,也即运行start-dfs所在的目录。写这段脚本的作用在于,当不是在bin目录下运行该脚本时,采用绝对路径的方式,获取hadoop home目录,并在后面的脚本中,使用该路径来读取配置文件、运行其它脚本等。

bin=`dirname"$0"`

bin=`cd"$bin"; pwd`

 

#说明:运行配置脚本配置脚本主要定义了一些环境变量;并且得到HADOOP根目录,变量名为:HADOOP_PREFIX。(HADOOP_HOME环境变量已经过时)

if [ -e"$bin/../libexec/hadoop-config.sh" ]; then

  ."$bin"/../libexec/hadoop-config.sh

else

  . "$bin/hadoop-config.sh"

fi

 

#说明:处理脚本命令的参数。如果参数个数>=1,将第一个参数赋值给nameStartOpt变量。如果该变量不为-upgrage-rollback中的任何一个,就打印usage变量消息(前面第一行就是usage的变量定义),并且退出,不再继续执行。

# get arguments

if [ $# -ge 1 ]; then

    nameStartOpt=$1

    shift

    case $nameStartOpt in

      (-upgrade)

        ;;

      (-rollback)

        dataStartOpt=$nameStartOpt

        ;;

      (*)

         echo $usage

         exit 1

        ;;

    esac

fi

 

#说明:启动dfs的所有后台进程。

# start dfs daemons

# start namenode afterdatanodes, to minimize time namenode is up w/o data

# note: datanodes willlog connection errors until namenode starts

#说明:首先运行hadoop-daemon.sh脚本,通过参数’start namenode’启动namenode,后面将介绍hadoop-daemons.sh脚本介绍namenode的启动脚本的执行过程。

"$bin"/hadoop-daemon.sh--config $HADOOP_CONF_DIR start namenode $nameStartOpt

#说明:然后运行hadoop-daemons.sh脚本,通过参数’start datanode启动所有的datanode,后面将介绍hadoop-daemons.sh脚本介绍datanode的启动脚本的执行过程。

"$bin"/hadoop-daemons.sh--config $HADOOP_CONF_DIR start datanode $dataStartOpt

#说明:最后运行hadoop-daemons.sh脚本,通过参数’—hosts masters start secondarynamenode启动secondarynamenode,后面将介绍hadoop-daemons.sh脚本介绍secondarynamenode的启动脚本的执行过程。

"$bin"/hadoop-daemons.sh--config $HADOOP_CONF_DIR --hosts masters start secondarynamenode

(2)hadoop-daemon.sh脚本

前面三个步骤同上:定义用法说明和脚本的绝对路径、运行配置脚本、处理参数。由于脚本的参数较为重要,首先说明脚本的使用方法。

1)传入参数说明

#说明:定义startStop变量为第一个参数的值。在start-dfs.sh脚本中,调用该脚本时,传入的为’start’。该脚本仅支持startstop两种。

# get arguments

startStop=$1

#说明:在不了解参数个数和当前要使用的参数个数为第几个的情况,采用shift操作,将使用的参数出栈一位,原来的第二位参数变为第一个,后面仍然用$1来获取本来的第二个参数。

在这里,将start-df

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值