|
1.4 Hadoop源代码组织结构3 C- s u- @4 K6 L8 Z$ N
在Hadoop的JAR压缩包解压后的目录hadoop-{VERSION}中包含了Hadoop全部的管理脚本和JAR包, 下面简单对这些文件或7 x" q6 ^7 w4 }- H& W) a
目录进行介绍。/ V/ ^9 h; y, Q* J
❑bin: Hadoop最基本的管理脚本和使用脚本所在目录, 这些脚本是sbin目录下管理脚本的基础实现, 用户可以直接使用这些5 k E8 m, F$ Y" o+ e! L
脚本管理和使用Hadoop。0 U- o- K9 `( @. v6 D" G
❑etc : Hadoop配置文件所在的目录, 包括core-site.xml、 hdfs-site.xml、 mapred-site.xml等从Hadoop 1.0继承而来的配置文件和. R- }# n" b2 @4 B2 L
yarn-site.xml等Hadoop 2.0新增的配置文件。' Y5 g1 \# V1 [
❑include : 对外提供的编程库头文件( 具体动态库和静态库在lib目录中) , 这些头文件均是用C++定义的, 通常用于C++语& e/ u/ @; x- S6 {$ \0 \' W
言访问HDFS或者编写MapReduce程序。
b3 A$ m: H0 e2 g❑lib : 该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。2 {8 A- s: `. ]% p+ m" D3 L0 m
❑libexec : 各个服务对应的Shell配置文件所在目录, 可用于配置日志输出目录、 启动参数( 比如JVM参数) 等基本信息。
& E& E% S: s+ C; d❑sbin: Hadoop管理脚本所在目录, 主要包含HDFS和YARN中各类服务的启动/关闭脚本。8 e$ D9 O1 y. G% a
❑share : Hadoop各个模块编译后的JAR包所在目录。
9 k7 U& H/ _9 w6 L% ?' L) z4 }$ `在Hadoop 源代码压缩包解压后的目录hadoop-{VERSION}-src中, 可看到如图1-8所示的目录结构, 其中, 比较重要的目录
; f$ u& ]& k5 n& M有: hadoop-common-project、 hadoop-mapreduce-project、 hadoop-hdfs-project和hadoop-yarn-project等, 下面分别介绍这几个目录的作
3 v' l8 ? [" U) V8 N用。6 P/ T$ Q7 F1 s* S! m% P1 l
❑hadoop-common-project: Hadoop基础库所在目录, 该目录中包含了其他所有模块可能会用到的基础库, 包括RPC、
* d9 {- S. h3 G/ Y, G9 Z& Y$ Z' nMetrics、 Counter等。) ]" @. E+ x! e7 ^$ Q0 V0 G
图1-8 Hadoop安装目录结构- i7 d+ \7 o' @, ^6 i2 n1 `
❑hadoop-mapreduce-project: MapReduce框架的实现, 在MRv1中, MapReduce由编程模型( map/reduce) 、 调度系统
% _+ L7 Z# u0 q* Y( JobTracker和TaskTracker) 和数据处理引擎( MapTask和ReduceTask) 等模块组成, 而此处的MapReduce则不同于MRv1中的实
g2 ] Z8 I' c" }+ n现, 它的资源调度功能由新增的YARN完成( 编程模型和数据处理引擎不变) , 自身仅包含非常简单的任务分配功能。
/ ]4 g5 _9 {4 K❑hadoop-hdfs-project: Hadoop分布式文件系统实现, 不同于Hadoop 1.0中单NameNode实现, Hadoop 2.0支持多NameNode,2 P2 P2 }% }. t! P; Y4 N2 {; D. O
同时解决了NameNode单点故障问题。* G) H9 L2 Q( h" |# ~- [
❑hadoop-yarn-project: Hadoop资源管理系统YARN实现。 这是Hadoop 2.0新引入的分支, 该系统能够统一管理系统中的资: V: V( S& L( w% Y) k; D& p
源, 并按照一定的策略分配给各个应用程序, 本书将重点剖析YARN的实现。! u1 K" K. P9 j
本书重点介绍YARN的实现原理, 下面就对Hadoop YARN源代 码组织结构 [3] 进行介绍。 YARN目录组织结构如图1-9所示。0 h3 T2 R2 [) J
总体上看, Hadoop YARN分为5部分: API、 Common、 Applications、 Client和Server, 它们的内容具体如下:0 l6 |" l+ G9 w7 Y
❑YARN API( hadoop-yarn-api目录) : 给出了YARN内部涉及的4个主要RPC协议的Java 声明和Protocol Buffers定义, 这4个
1 x2 w; p8 E; E0 o, v, lRPC协议分别是ApplicationClientProtocol、 ApplicationMasterProtocol、 ContainerManagementProtocol和
' v, l( r" c: b9 |1 Z3 LResourceManagerAdministrationProtocol, 本书将在第2章对这部分内容进行详细介绍。
: E( w# E8 H7 Z! g6 @3 i❑YARN Common( hadoop-yarn-common目录) : 该部分包含了YARN底层库实现, 包括事件库、 服务库、 状态机库、 Web界
7 }% `! {; T1 @: H1 t面库等, 本书将在第3章对这部分内容进行详细介绍。 R# T5 m* S# q7 x
❑YARN Applications( hadoop-yarn-applications目录) : 该部分包含了两个Application编程实例, 分别是distributedshell和
3 F- Z6 J( M% Z B' T, WUnmanaged AM, 本书将在第4章对这部分内容进行详细介绍。
, a5 F/ M9 d# o❑YARN Client( hadoop-yarn-client目录) : 该部分封装了几个与YARN RPC协议交互相关的库, 方便用户开发应用程序, 本
+ d% {" |3 n' a7 ^* y' ?2 P书将在第4章对这部分内容进行详细介绍。
, ?5 ^, b5 Q5 {9 e& @- c- M❑YARN Server( hadoop-yarn-server目录) : 该部分给出了YARN的核心实现, 包括ResourceManager、 NodeManager、 资源管
) a/ f' d3 X. b6 o s( d1 l' y$ m* w/ U理器等核心组件的实现, 本书将在第5~7章对这部分内容进行详细介绍。, l3 E. p# A0 {0 o9 }7 x
图1-9 Hadoop YARN目录组织结构
$ M% D X1 C4 n% r. Y[3] 不同Hadoop版本的源代码组织结构有较大差别, 本书的分析是基于Hadoop 1.0.0的。
- n! o$ ]/ n% e3 ]$ k
& @& _' z) D7 S0 e$ [# S s" {. h5 T7 v0 I/ ]1 J8 E
|
|