当搭建好了hadoop环境,我们迫不及待的就开始执行start-all.sh脚本,那么这个脚本具体做什么呢
- 1 :hadoop-config.sh //想使用自己的配置的,需要在这里设置了
- 2 :start-dfs.sh //start dfs daemons
- 3 :start-mapred.sh //start mapred daemons
好吧,看来干活的都是小弟,而且分工明确。
首先来看start-dfs.sh
- 1 :hadoop-daemon.sh //start namenode
- 2 :hadoop-daemons.sh //start datanode
- 3 :hadoop-daemons.sh //masters start secondarynamenode
这个分工也很明确,我们来细看里面的
hadoop-daemon.s
- 主要是生成namenode的日志文件,然后将具体的操作请求转发给
- org.apache.hadoop.hdfs.server.namenode.NameNode 这个类。
hadoop-daemons.sh
- 1 :启动datanade时 调用 slaves.sh 同时将本地的hadoop_home传递过去(所以说slaves和master的hadoop路径要一致了)
- 2 : 启动seconddarynamenode 时将具体的请求转发给
- org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode 这个类
再来看下slaves.sh做了什么
- 1 :读取slaves文件里ip配置
- 2 :ssh 每个slave机器
- 3 :到HADOOP_HOME目录下
- 4 :执行hadoop-daemon.sh脚本
- 5 :传递的启动参数为start datanode
- 6 :使用的conf文件为slave机器HADOOP_HOME下的。
再看slaves机器上的执行情况,其实是把请求转交给
- org.apache.hadoop.hdfs.server.datanode.DataNode
这个类来处理了。
好现在来看 start-mapred.sh
- 1 :hadoop-config.sh //mapreduce的配置相关
- 2 :hadoop-daemon.sh //start jobtracker
- 3 :hadoop-daemons.sh //start tasktracker
再看对mapred的处理,其实是把请求转给以下2个类。
- org.apache.hadoop.mapred.JobTracker //master机器上
- org.apache.hadoop.mapred.TaskTracker //slaves机器上。
其实hadoop的启动脚本注释都很明确了,我这里只是理清一下过程,所以这里总结下就是;
- org.apache.hadoop.hdfs.server.namenode.NameNode
- org.apache.hadoop.mapred.JobTracker
- org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
- 这3 个主要运行在master机器上
- org.apache.hadoop.hdfs.server.datanode.DataNode
- org.apache.hadoop.mapred.TaskTracker
- 这2 个主要是运行在slaves机器上,由ssh连接过去然后在相对应的目录下执行脚本。
更多信息请查看 java进阶网 http://www.javady.com