刚开始配置hadoop难免出错,学习一下启动的脚本对分析错误还是很有帮助的。而且可以顺便学习shell。
我自己对shell命令还算比较熟,shell脚本基本看得懂,不过没具体去深究。所以下面提到的一些shell要点高手莫笑。
Hadoop 0.20.203
hadoop-config.sh
hadoop-daemon.sh Runs a Hadoop command as a daemon.
hadoop-daemons.sh Run a Hadoop command on all slave hosts.
jsvc application to launch java daemon
rcc The Hadoop record compiler 不懂
slaves.sh Run a shell command on all slave hosts.
start-all.sh start-all = start-dfs + start+mapred # Start all hadoop daemons. Run this on master node.
start-balancer.sh
start-dfs.sh
start-jobhistoryserver.sh
start-mapred.sh
stop-all.sh
stop-balancer.sh
stop-dfs.sh
stop-jobhistoryserver.sh
stop-mapred.sh
更多Hadoop相关信息见Hadoop 专题页面 ?tid=13
我们从最常用的命令开始
bin=`dirname "$0"` bin=`cd "$bin"; pwd` . "$bin"/hadoop-config.sh # start dfs daemons "$bin"/start-dfs.sh --config $HADOOP_CONF_DIR # start mapred daemons "$bin"/start-mapred.sh --config $HADOOP_CONF_DIR
第一部分是取得bin目录,方便调用其他sh。因为你无法知道是从什么目录运行脚本的,所以无法使用相对路径。
注意hadoop-config.sh 前面有一个点。
参看资料. (a period) . filename [arguments] Read and execute commands from the filename argument in the current shell context.
我们获得一个很好的信息,all = dfs + mapred
之前都把namenode和jobtracker放到一起,datanode和tasktracker放到一起。其实dfs和mapred这两部分还是现对比较独立的。最新的hadoop就把这两部分分开了。
start-dfs.sh / start-mapred.sh注意daemon一个后面有s,一个没。带s的是启动slaves的。刚开始没看清还蛋疼了许久。
"$bin"/hadoop-daemon.sh --config $HADOOP_CONF_DIR start namenode $nameStartOpt "$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR start datanode $dataStartOpt "$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR --hosts masters start secondarynamenode
这里能解开我之前的一个疑惑:master和slaves的怎样配置master和slaves文件。对于master:master文件只用来启动secondarynamenode,slaves只用来启动slaves
对于slaves:bin下的脚本没用到这两个文件
但其他部分可能用到