hadoop的namenode Shell执行启动过程

./start-all.sh中主要做的三件事件:
...获取到hadoop的bin目录
1.执行$bin/../libexec/hadoop-config.sh脚本
   A.获取当前脚本及其整个目录this="${BASH_SOURCE-$0}"
   B.获取到目录,不包含此目录下的脚本
     common_bin=$(cd -P -- "$(dirname -- "$this")" && pwd -P)
   C.获取到当前脚本 及 脚本包含整个目录
     script="$(basename -- "$this")"
     this="$common_bin/$script"
   D.得到hadoop安装目录
     export HADOOP_PREFIX=`dirname "$this"`/..
     export HADOOP_HOME=${HADOOP_PREFIX}
   E.获取安装目录下的conf目录
     HADOOP_CONF_DIR="${HADOOP_CONF_DIR:-$HADOOP_PREFIX/$DEFAULT_CONF_DIR}"
2.启动dfs
   ..传二个参数--config  和  hadoop的conf目录 (这里发现脚本里调用脚本是启动一
   个进程, 除非使用. 来调用不会)
   A.获取到当前脚本的目录,即hadoop的bin目录
     bin=`dirname "$0"`
     bin=`cd "$bin"; pwd`
   B.再次调用hadoop目录下的libexec/hadoop-config.sh脚本
     ..start-all给start-dfs传过来的参数无法传到hadoop-config.sh脚本中
     (重启进程无法传参数)
     也没做什么,基本上和start-all中调用hadoop-config一样,获取hadoop安装目录
     及conf目录
   C.发现给start-dfs传过来的参数,调用. "$bin"/../libexec/hadoop-config.sh完后
     参数都得不到了; 调用此脚本不是重启一个进程
   [b]D[/b].接下来重点了,调用三个脚本来启动name结点及data结点
           D1<hadoop-daemon>.给hadoop-daemon.sh传了几个参数,分别为如下:
              --config /usr/local/hadoop/libexec/../conf start namenode 
           D2<hadoop-daemon>. . "$bin"/../libexec/hadoop-config.sh时候会把
                              start-dfs传过来的参数传进去的,调用此脚本也就是
                              export一些参数
           D3<hadoop-daemon>.startStop=start    command=namenode   
                            export HADOOP_IDENT_STRING="$USER" #root
                            export HADOOP_LOG_DIR="$HADOOP_HOME/logs"   
                            mkdir -p "$HADOOP_LOG_DIR" #hadoop安装目录下
                            export HADOOP_LOGFILE=hadoop-$HADOOP_IDENT_STRING-
                            $command-$HOSTNAME.log
                            120 export HADOOP_ROOT_LOGGER="INFO,DRFA"   
                            mkdir -p "$HADOOP_PID_DIR"  #/tmp目录 
                            log=$HADOOP_LOG_DIR/hadoop-$HADOOP_IDENT_STRING-
                                 $command-$HOSTNAME.out
                             pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-
                                 $command.pid
[b]小知识点:kill -0 PID
向某一进程发送一个无效的信号,如果该进程存在(能够接收信号),echo $?为0,否则为1,已证明此进程是否存在[/b]
           D4<hadoop-daemon>.接着调用hadoop脚本了,
                             1.判断$HADOOP_HOME_WARN_SUPPRESS是否有值,如果没有
                               提示也就是启动的时候可以见到这个提示
                               调用hadoop-config.sh脚本做些初始化CONF目录等
                             2.判断是否在WIN下运行的,
                               case "`uname`" in
                               CYGWIN*) cygwin=true;;
                               esac
                             3.判断JAVA_HOME是否设置,并把/share/hadoop/此目录下的
                               所有jar文件添加到CLASSPATH城
                               for f in $HADOOP_PREFIX/share/hadoop/lib/*.jar; do
                                   CLASSPATH=${CLASSPATH}:$f;
                               done
                               //linux  unset  命令
                                 功能说明:删除变量或函数。
                                 参   数:
                                          -f  仅删除函数。 
                                          -v  仅删除变量。
                                 root@debian:/usr/local/hadoop/share/hadoop# set
                                             查看当前环境变量
                            4.设置namenode结点的类
                               org.apache.hadoop.hdfs.server.namenode.NameNode
                            
           
//2.启动mapredure


猜你喜欢

转载自houshangxiao.iteye.com/blog/1885199