Hadoop源代码分析 之hadoop配置及启动(4)—–启动过程汇总

原创文档,转载请将原文url地址标明

引言,hadoop代表一种全新的编程思想,基于hadoop有很多衍生项目,充分利用他们

为我们服务是非常必要的,同时hadoop又是一个复杂系统,若能理解他的工作原理对

我们将有非常大的帮助,我们在这里以hadoop的0.1.0版本为基础逐步分析他的基本工作

原理、结构、思路等等,希望通过这个能帮助我们理解生产中的hadoop系统。 时间有限,

经验不足,疏漏难免,在这里仅仅分享一些心得,希望对大家能起到一个抛砖引玉的作用吧,

有问题请大家给我留言或者评论等,这样也能对我的工作有莫大的帮助。

感谢您阅读这篇文章!

hadoop 相关视频下载地址: http://pan.baidu.com/share/link?shareid=223046310&uk=3073578852

前面几篇文章介绍了hadoop的启动过程,hadoop启动过程中涉及东西比较多,而且又是分布式的系统,启动过程中涉及多台机器的启动等,因此过程较为复杂,本篇文章主要对启动过程作了汇总整理。

一. Hadoop的主从结构

如下图, hadoop系统包括客户端程序,以及server端程序。

客户端程序包括:管理脚本,用户开发的mapreduce程序等。

Server端程序包括:主节点,由名称节点(Namenode),任务管理节点(jobtracter)等组成;server端程序另外一部分是从节点,包括:数据节点(datanode),任务节点(tasktracter)等构成。

整个集群的启动必须在主节点启动,同时主节点可以同时启动相应从节点, 从节点可以启动自己的程序,但是不能启动主节点(具体原因见后面启动的序列图,配置文件等等因素的影响)。

工作中管理员或者用户通过自己的工作机器,通过ssh等登陆主节点,启动整个集群,也可以一个个连接从节点进行相关工作。

image

二.Hadoop的主从结构与启动关系

Hadoop是一个主从结构的分布式系统, 他的逻辑结构如下图示。

image

用户通过客户端或者登陆服务器节点,启动服务器。服务器主节点通过ssh方式远程执行从节点上的脚本,从而可以管理从节点,以至于全部集群。

整个启动过程中,首先用户或者管理员首先登陆主节点系统

然后下达${hadoop_home}/bin/start-all.sh命令

脚本首先启动系统中全部的datanode节点,如图中①标记所示;然后启动namenode节点,如图②所示;之后启动jobtracter节点,如图中③所示;最后启动tasktracker节点,如图中④所示。

每个节点上相关工作模块已经表示到了图中,其中各个模块的启动先后顺序根据颜色由浅入深的顺序启动,颜色浅的先启动, 颜色深的后启动。

启动过程中需要调用本机及远程服务器上的不同脚本程序,最后将正确的系统配置文件传递给正在启动中的java进程,从而完成整个集群的启动过程。相对详细的java启动过程需要研究java的源代码,我们前面介绍过一些简单启动主要介绍classpath同启动的关系,大家可以参考。

三.Hadoop个主要部件的启动时间顺序

下图是hadoop各个组件模块在启动过程中时间上调用的次序。由于时间关系我们仅仅分析了启动过程。读者感兴趣可以去分析关闭过程。

图中包括:客户端,用户通过客户端或者自己的电脑登陆到服务器,进行相关的管理等工作。

Server端包括: 主节点,这里的主节点是namendoe及jobtracter都包括在一起的配置方式, 分离的方式不在我们这个系列的讨论范围,读者感兴趣可以研究一下。

从节点, 主要是datanode及tasktracter节点,同样我们这里也是两个节点在同一台机器上。

我们这里以 3个从节点,1个主节点,为例说明启动过程。

整个启动过程,自上而下进行, 在不同服务器上进行不同的工作。

为了方便阅读,我们将整个启动过程划分为4个区域,分别用不同的颜色表示出来。并且每个区域的编号也表示出了启动的顺序。

image

首先用户登录server服务器(主节点后),下达 start-all.sh命令(脚本,在正确的目录中进行)

然后脚本进行相关的启动工作,具体工作过程如下:

1. Datanode启动过程

首先,在主节点上,在start-all.sh脚本中,进行一些列工作后,调用hadoop-daemons.sh这个脚本,这个脚本在进一步调用slaves.sh脚本,这脚本根据slaves文件,循环调用 远程机器(从节点)上的hadoop-daemon.sh脚本,这个脚本根据本地配置等条件(从节点上的相关配置),调用远程(从节点)的hadoop-env.sh脚本等,最后调用远程节点上的hadoop脚本,完成一个从节点的初始化工作。

完成一个从节点初始化后脚本会 sleep一下,然后进行下一个循环。直到全部节点启动完成。然后进行下一个环节的启动。

2. Namenode启动过程

这个启动过程相对简单,是在主节点上进行, 通过调用hadoop-daemon.sh脚本, 这脚本调用主节点的hadoop-env.sh脚本,最后调用hadoop脚本完成启动工作,具体启动调用java的namenode的main函数完成,相对详细的启动过程参加前一篇文章中,有一些介绍。

3. Jobtracter启动过程

这启动过程,同上面Namenode过程类似,只是最后调用的java的main函数类不同,配置文件中的参数不同,从脚本及时间层面没有新东西同namenode的启动过程。

4. Tasktracter启动过程

这个启动过程同上面的datanode启动过程非常相似,仅仅是最后调用的java的main函数类不同,传递参数不同。

后记,学习是一个过程,是一个体验,是一个经历,是一种财富。我们这里没有更多的文字描述以上启动过程,主要都是图示方式,需要大家慢慢体会图形中传递出的一些信息。你经历了,你体验了,你就收获了;而不是你阅读了,你就收获啦(收获的会比较少)。

参考文章

参考文章
Hadoop源代码分析 之Datanode工作原理(5)—–拷贝文件过程总结

Hadoop源代码分析 之Datanode工作原理(4)—–拷贝本地文件到hadoop的过程

Hadoop源代码分析 之Datanode工作原理(3)—–datanode工作过程总结

hadoop源代码介绍

Hadoop源代码分析 之Datanode工作原理(2)—–datanode基本工作过程

Hadoop源代码分析 之Datanode工作原理(1)—–datanode启动过程代码分析

Hadoop源代码分析 之hadoop配置及启动(4)—–启动过程汇总

Hadoop源代码分析 之hadoop配置及启动(3)—–classpath与hadoop主要组件启动过程

Hadoop源代码分析 之hadoop配置及启动(2)—–classpath与启动shell脚本

Hadoop源代码分析 之hadoop配置及启动(1)—–classpath与配置文件

Hadoop源代码分析 之hadoop源代码项目(1)—–创建eclipse下java项目

Hadoop源代码分析 之环境配置(2)—–虚拟机ip配置

Hadoop源代码分析 之环境配置(1)—–hadoop虚拟机配置

Hadoop源代码分析 之概念介绍(2)—–初学者眼中的hadoop

Hadoop源代码分析 之概念介绍(1)—–服装加工,火车货物检查与hadoop

调试eclipse下hadoop的map reduce程序

发表评论