./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
hadoop的namenode Shell执行启动过程
最新推荐文章于 2023-04-22 11:19:06 发布