|
1.4 Hadoop源代码组织结构
2 a: U. w" ^6 x! D! B9 v" v在Hadoop的JAR压缩包解压后的目录hadoop-{VERSION}中包含了Hadoop全部的管理脚本和JAR包, 下面简单对这些文件或
* N7 o5 C& w8 g& o& d* r3 }' r目录进行介绍。
6 m/ K5 a# @* J# `3 k0 {5 R❑bin: Hadoop最基本的管理脚本和使用脚本所在目录, 这些脚本是sbin目录下管理脚本的基础实现, 用户可以直接使用这些
( M x7 O0 X& N1 N( ~脚本管理和使用Hadoop。
& X9 o6 A* a+ H |❑etc : Hadoop配置文件所在的目录, 包括core-site.xml、 hdfs-site.xml、 mapred-site.xml等从Hadoop 1.0继承而来的配置文件和0 A. i5 v/ f7 k r3 ~8 e: ?) h
yarn-site.xml等Hadoop 2.0新增的配置文件。
4 A1 V' R, D7 ^1 R M9 W* R- e/ Z❑include : 对外提供的编程库头文件( 具体动态库和静态库在lib目录中) , 这些头文件均是用C++定义的, 通常用于C++语
" r4 {3 H* S$ G; I% O; B8 y0 S* S; B" Z言访问HDFS或者编写MapReduce程序。
0 i) M |( i5 b/ C! [) \❑lib : 该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。
$ f T2 _' A0 p) I" Y& ]' T Q❑libexec : 各个服务对应的Shell配置文件所在目录, 可用于配置日志输出目录、 启动参数( 比如JVM参数) 等基本信息。
) h; z* ^- ]3 B6 x7 C, z❑sbin: Hadoop管理脚本所在目录, 主要包含HDFS和YARN中各类服务的启动/关闭脚本。
0 b# N5 Z8 ]: C& u❑share : Hadoop各个模块编译后的JAR包所在目录。# \- D2 k8 k7 y8 o! {
在Hadoop 源代码压缩包解压后的目录hadoop-{VERSION}-src中, 可看到如图1-8所示的目录结构, 其中, 比较重要的目录
9 a( I* R) \, i5 p" _5 a, {! ~5 i有: hadoop-common-project、 hadoop-mapreduce-project、 hadoop-hdfs-project和hadoop-yarn-project等, 下面分别介绍这几个目录的作
$ P& h- ]3 Z7 ~1 R2 n& h* o* s用。
/ O3 M$ M4 A! A8 x% \7 _/ T7 k. y❑hadoop-common-project: Hadoop基础库所在目录, 该目录中包含了其他所有模块可能会用到的基础库, 包括RPC、( G/ H0 }( K$ K# G% A
Metrics、 Counter等。
. G) L. l/ o) E2 g! X8 O. g图1-8 Hadoop安装目录结构$ \9 Q0 }, e: `" x5 E0 k
❑hadoop-mapreduce-project: MapReduce框架的实现, 在MRv1中, MapReduce由编程模型( map/reduce) 、 调度系统
' v ^% V* y0 Z Z, l7 w( JobTracker和TaskTracker) 和数据处理引擎( MapTask和ReduceTask) 等模块组成, 而此处的MapReduce则不同于MRv1中的实( g1 M' I+ v, D
现, 它的资源调度功能由新增的YARN完成( 编程模型和数据处理引擎不变) , 自身仅包含非常简单的任务分配功能。. B% I2 m0 `& a5 O; B% c h" K
❑hadoop-hdfs-project: Hadoop分布式文件系统实现, 不同于Hadoop 1.0中单NameNode实现, Hadoop 2.0支持多NameNode,
! \& D+ D, ]5 C同时解决了NameNode单点故障问题。* \1 I9 a" t) G% F
❑hadoop-yarn-project: Hadoop资源管理系统YARN实现。 这是Hadoop 2.0新引入的分支, 该系统能够统一管理系统中的资
8 p# V" n9 C3 ], u' Y0 Y源, 并按照一定的策略分配给各个应用程序, 本书将重点剖析YARN的实现。4 Z) @0 s) I4 Y- N3 l" w% v; f! @7 F
本书重点介绍YARN的实现原理, 下面就对Hadoop YARN源代 码组织结构 [3] 进行介绍。 YARN目录组织结构如图1-9所示。
% h! u' f8 \$ W/ D6 O" W7 X8 D: g总体上看, Hadoop YARN分为5部分: API、 Common、 Applications、 Client和Server, 它们的内容具体如下:
2 J/ x( k9 p7 O( z. t❑YARN API( hadoop-yarn-api目录) : 给出了YARN内部涉及的4个主要RPC协议的Java 声明和Protocol Buffers定义, 这4个) m: U: N9 D: N" u
RPC协议分别是ApplicationClientProtocol、 ApplicationMasterProtocol、 ContainerManagementProtocol和% e( p! S4 c/ R6 {( J/ }4 p& w
ResourceManagerAdministrationProtocol, 本书将在第2章对这部分内容进行详细介绍。
! W y' i! C. ?& J- J1 ^4 e❑YARN Common( hadoop-yarn-common目录) : 该部分包含了YARN底层库实现, 包括事件库、 服务库、 状态机库、 Web界; n( S& d, D9 D* g! c4 E
面库等, 本书将在第3章对这部分内容进行详细介绍。' g$ f& T3 O) [" o/ c; v$ W
❑YARN Applications( hadoop-yarn-applications目录) : 该部分包含了两个Application编程实例, 分别是distributedshell和, G, Z: M2 P+ p3 A+ i, Y) Q; N
Unmanaged AM, 本书将在第4章对这部分内容进行详细介绍。, R+ n% n) V. \2 @5 h
❑YARN Client( hadoop-yarn-client目录) : 该部分封装了几个与YARN RPC协议交互相关的库, 方便用户开发应用程序, 本
# c' q- @- K. w6 w书将在第4章对这部分内容进行详细介绍。
( w4 _ A) ?' Q5 x, e❑YARN Server( hadoop-yarn-server目录) : 该部分给出了YARN的核心实现, 包括ResourceManager、 NodeManager、 资源管; l( ], T# O4 w/ F3 U
理器等核心组件的实现, 本书将在第5~7章对这部分内容进行详细介绍。 K4 s3 m$ t. f& q5 t# r
图1-9 Hadoop YARN目录组织结构
* G: a6 D8 d0 L2 d* y6 t[3] 不同Hadoop版本的源代码组织结构有较大差别, 本书的分析是基于Hadoop 1.0.0的。
0 J% a9 i I! I; V, L s9 y" \( j4 p5 ~5 W# Z4 W
' H9 N# K+ ^6 b |
|