|
1.4 Hadoop源代码组织结构
S* J" J7 x8 n1 k' {; L, A在Hadoop的JAR压缩包解压后的目录hadoop-{VERSION}中包含了Hadoop全部的管理脚本和JAR包, 下面简单对这些文件或$ Y8 i' D1 s+ }3 w/ x; U4 X: j, }
目录进行介绍。
' J$ M s" R5 f❑bin: Hadoop最基本的管理脚本和使用脚本所在目录, 这些脚本是sbin目录下管理脚本的基础实现, 用户可以直接使用这些
: b! F( g* y% B2 s! d脚本管理和使用Hadoop。7 R9 K: [* L% U8 `- L
❑etc : Hadoop配置文件所在的目录, 包括core-site.xml、 hdfs-site.xml、 mapred-site.xml等从Hadoop 1.0继承而来的配置文件和
6 f3 g* }: P, m* Qyarn-site.xml等Hadoop 2.0新增的配置文件。
9 a% y2 P/ }( K9 k% v% W$ w, b❑include : 对外提供的编程库头文件( 具体动态库和静态库在lib目录中) , 这些头文件均是用C++定义的, 通常用于C++语
/ Q9 G* i2 G0 B! a, F9 `( [言访问HDFS或者编写MapReduce程序。& {9 \% V K" u# a" i6 Z. j
❑lib : 该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。
' H9 I% }# P* y0 O% H4 H. P v* ~❑libexec : 各个服务对应的Shell配置文件所在目录, 可用于配置日志输出目录、 启动参数( 比如JVM参数) 等基本信息。
3 X8 T* M8 @0 ~, `3 X❑sbin: Hadoop管理脚本所在目录, 主要包含HDFS和YARN中各类服务的启动/关闭脚本。9 m4 Z6 ~: R ]- b4 ^0 n
❑share : Hadoop各个模块编译后的JAR包所在目录。5 i; f5 i/ l$ r" B. ]
在Hadoop 源代码压缩包解压后的目录hadoop-{VERSION}-src中, 可看到如图1-8所示的目录结构, 其中, 比较重要的目录
7 _. U9 ~( u/ h; O h有: hadoop-common-project、 hadoop-mapreduce-project、 hadoop-hdfs-project和hadoop-yarn-project等, 下面分别介绍这几个目录的作4 J, b& h2 Y3 C7 e
用。+ l( w9 u' i! x5 v: ?
❑hadoop-common-project: Hadoop基础库所在目录, 该目录中包含了其他所有模块可能会用到的基础库, 包括RPC、9 L2 r! w# N6 T
Metrics、 Counter等。
; V5 B- G5 v3 Y9 ^图1-8 Hadoop安装目录结构
7 d/ g% y/ z- [❑hadoop-mapreduce-project: MapReduce框架的实现, 在MRv1中, MapReduce由编程模型( map/reduce) 、 调度系统
S; Y- U2 |7 B5 e( t, f( JobTracker和TaskTracker) 和数据处理引擎( MapTask和ReduceTask) 等模块组成, 而此处的MapReduce则不同于MRv1中的实, |! J" X( E* f9 @
现, 它的资源调度功能由新增的YARN完成( 编程模型和数据处理引擎不变) , 自身仅包含非常简单的任务分配功能。7 M }7 a/ g4 Y7 s% k! F" _ ^
❑hadoop-hdfs-project: Hadoop分布式文件系统实现, 不同于Hadoop 1.0中单NameNode实现, Hadoop 2.0支持多NameNode,
% p# a+ k5 F5 C5 q; p/ u同时解决了NameNode单点故障问题。2 }7 H$ D# b1 {: `3 S7 C' J* g
❑hadoop-yarn-project: Hadoop资源管理系统YARN实现。 这是Hadoop 2.0新引入的分支, 该系统能够统一管理系统中的资' Y& Q$ u+ n# `
源, 并按照一定的策略分配给各个应用程序, 本书将重点剖析YARN的实现。
* V+ ~$ S. B; u# P8 Z7 [本书重点介绍YARN的实现原理, 下面就对Hadoop YARN源代 码组织结构 [3] 进行介绍。 YARN目录组织结构如图1-9所示。
8 C- u M( k/ V+ y" c. H: ~/ C1 V总体上看, Hadoop YARN分为5部分: API、 Common、 Applications、 Client和Server, 它们的内容具体如下:
8 V' g. A7 x" z, z% |) l4 R7 R2 ]❑YARN API( hadoop-yarn-api目录) : 给出了YARN内部涉及的4个主要RPC协议的Java 声明和Protocol Buffers定义, 这4个6 {0 q5 {# S! V" R' x# T% A2 T' W
RPC协议分别是ApplicationClientProtocol、 ApplicationMasterProtocol、 ContainerManagementProtocol和; ?+ w6 ~; L- B% l
ResourceManagerAdministrationProtocol, 本书将在第2章对这部分内容进行详细介绍。. c1 q n: t4 \' X$ c
❑YARN Common( hadoop-yarn-common目录) : 该部分包含了YARN底层库实现, 包括事件库、 服务库、 状态机库、 Web界$ _1 w0 S g# q* C+ _; j
面库等, 本书将在第3章对这部分内容进行详细介绍。1 y: V0 A+ r m9 w) A5 L
❑YARN Applications( hadoop-yarn-applications目录) : 该部分包含了两个Application编程实例, 分别是distributedshell和
, F% Z$ t# p4 f2 EUnmanaged AM, 本书将在第4章对这部分内容进行详细介绍。
9 G. Q0 s- T, i5 x# u❑YARN Client( hadoop-yarn-client目录) : 该部分封装了几个与YARN RPC协议交互相关的库, 方便用户开发应用程序, 本+ b6 B7 ]( @. G: {3 [( N
书将在第4章对这部分内容进行详细介绍。
0 M; Q0 l$ T! G/ T❑YARN Server( hadoop-yarn-server目录) : 该部分给出了YARN的核心实现, 包括ResourceManager、 NodeManager、 资源管
6 n; I; } s0 W: Z" w. k- a+ K) |理器等核心组件的实现, 本书将在第5~7章对这部分内容进行详细介绍。
. @0 g/ @ G* r6 z图1-9 Hadoop YARN目录组织结构
9 L" H5 r% x; C" D7 h+ s h[3] 不同Hadoop版本的源代码组织结构有较大差别, 本书的分析是基于Hadoop 1.0.0的。
/ n% [- s4 }2 Q. U9 n
) \* F7 v. d1 b5 B& l) m, X" E N* ]# m" L0 ]$ u
|
|