|
1.4 Hadoop源代码组织结构& i# S( \4 a# \# l) A' V( l
在Hadoop的JAR压缩包解压后的目录hadoop-{VERSION}中包含了Hadoop全部的管理脚本和JAR包, 下面简单对这些文件或4 ?; |9 R1 c ~( D; m
目录进行介绍。
5 _1 F7 V5 g9 S0 o) g2 V❑bin: Hadoop最基本的管理脚本和使用脚本所在目录, 这些脚本是sbin目录下管理脚本的基础实现, 用户可以直接使用这些9 g( ~: \, R2 X! l% X% A1 `$ t$ P
脚本管理和使用Hadoop。& v! |- v0 f- h" ^: z! P
❑etc : Hadoop配置文件所在的目录, 包括core-site.xml、 hdfs-site.xml、 mapred-site.xml等从Hadoop 1.0继承而来的配置文件和; M9 h" t# z$ Q& l" G ]
yarn-site.xml等Hadoop 2.0新增的配置文件。- I+ @; j' k g$ Q9 A6 d
❑include : 对外提供的编程库头文件( 具体动态库和静态库在lib目录中) , 这些头文件均是用C++定义的, 通常用于C++语
) l" C2 P G. V* `& t9 w; I言访问HDFS或者编写MapReduce程序。- u% e1 V( I, z+ m# R* [ j
❑lib : 该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。9 t0 r8 C2 B8 n4 `, c' {. W- G/ t" u
❑libexec : 各个服务对应的Shell配置文件所在目录, 可用于配置日志输出目录、 启动参数( 比如JVM参数) 等基本信息。
7 Q4 H8 p+ e0 n1 i❑sbin: Hadoop管理脚本所在目录, 主要包含HDFS和YARN中各类服务的启动/关闭脚本。% Y0 R, q* J3 z) |
❑share : Hadoop各个模块编译后的JAR包所在目录。& ?6 h1 h% u* w$ G6 p, D
在Hadoop 源代码压缩包解压后的目录hadoop-{VERSION}-src中, 可看到如图1-8所示的目录结构, 其中, 比较重要的目录
Z4 H+ O! t! k0 F6 |! C有: hadoop-common-project、 hadoop-mapreduce-project、 hadoop-hdfs-project和hadoop-yarn-project等, 下面分别介绍这几个目录的作
N/ X5 Z. A( A4 \) u用。" F, I. i; I; Q; R$ w1 k
❑hadoop-common-project: Hadoop基础库所在目录, 该目录中包含了其他所有模块可能会用到的基础库, 包括RPC、
* i, y: d8 `* g: b- f8 U) vMetrics、 Counter等。7 D" w7 h( t4 A0 H9 { i& L2 K6 {
图1-8 Hadoop安装目录结构; v3 ]2 e* B8 y4 c* C
❑hadoop-mapreduce-project: MapReduce框架的实现, 在MRv1中, MapReduce由编程模型( map/reduce) 、 调度系统
6 ]: d0 `1 k9 l$ U3 P( JobTracker和TaskTracker) 和数据处理引擎( MapTask和ReduceTask) 等模块组成, 而此处的MapReduce则不同于MRv1中的实
- O$ x0 W% C; S& @. ?" j现, 它的资源调度功能由新增的YARN完成( 编程模型和数据处理引擎不变) , 自身仅包含非常简单的任务分配功能。
" y2 O" u! |" g- A c: g❑hadoop-hdfs-project: Hadoop分布式文件系统实现, 不同于Hadoop 1.0中单NameNode实现, Hadoop 2.0支持多NameNode,
' w9 ]( e2 H6 s) j+ m同时解决了NameNode单点故障问题。
: F, _2 h4 Q5 Q. l❑hadoop-yarn-project: Hadoop资源管理系统YARN实现。 这是Hadoop 2.0新引入的分支, 该系统能够统一管理系统中的资- R/ [* V) G. X5 s( Y2 j: v! g' {. d
源, 并按照一定的策略分配给各个应用程序, 本书将重点剖析YARN的实现。0 \6 }/ W0 T; J2 T2 Q
本书重点介绍YARN的实现原理, 下面就对Hadoop YARN源代 码组织结构 [3] 进行介绍。 YARN目录组织结构如图1-9所示。5 Y1 @9 B% j0 F( X2 `# i" p
总体上看, Hadoop YARN分为5部分: API、 Common、 Applications、 Client和Server, 它们的内容具体如下:+ ~! j% A6 l$ @- j+ Z' _9 a
❑YARN API( hadoop-yarn-api目录) : 给出了YARN内部涉及的4个主要RPC协议的Java 声明和Protocol Buffers定义, 这4个
( {5 z# K" p7 R8 s wRPC协议分别是ApplicationClientProtocol、 ApplicationMasterProtocol、 ContainerManagementProtocol和' \2 m- i7 V( }" F
ResourceManagerAdministrationProtocol, 本书将在第2章对这部分内容进行详细介绍。) n& j% D& s! z+ T6 h
❑YARN Common( hadoop-yarn-common目录) : 该部分包含了YARN底层库实现, 包括事件库、 服务库、 状态机库、 Web界
0 |: g. ^: G/ S6 c面库等, 本书将在第3章对这部分内容进行详细介绍。
. z/ W; ~* Q; ?- K0 g2 F; g❑YARN Applications( hadoop-yarn-applications目录) : 该部分包含了两个Application编程实例, 分别是distributedshell和& u. E, Y. v% m
Unmanaged AM, 本书将在第4章对这部分内容进行详细介绍。0 J6 r' E) @5 Z5 F# E, q
❑YARN Client( hadoop-yarn-client目录) : 该部分封装了几个与YARN RPC协议交互相关的库, 方便用户开发应用程序, 本 Z- v/ R$ u1 `
书将在第4章对这部分内容进行详细介绍。
. [) _9 R% B8 T( p [5 |' p. d; ]❑YARN Server( hadoop-yarn-server目录) : 该部分给出了YARN的核心实现, 包括ResourceManager、 NodeManager、 资源管
8 _$ N# K8 w" U" [& a6 y理器等核心组件的实现, 本书将在第5~7章对这部分内容进行详细介绍。& }" u' x& x3 P* k" ~
图1-9 Hadoop YARN目录组织结构
8 V8 i+ K0 X2 g0 G& [# \7 L. B[3] 不同Hadoop版本的源代码组织结构有较大差别, 本书的分析是基于Hadoop 1.0.0的。
' S9 L8 p' f$ R# [3 `3 k( e( ^" g% V- O1 k: B9 z
+ `, x1 x) S8 m4 x
|
|