|
1.4 Hadoop源代码组织结构
1 c& o) W3 `/ D在Hadoop的JAR压缩包解压后的目录hadoop-{VERSION}中包含了Hadoop全部的管理脚本和JAR包, 下面简单对这些文件或3 m' [8 B/ M x% p' p: [4 h$ }+ m
目录进行介绍。
! x7 T7 k! r) }4 F, `* ]$ p2 @❑bin: Hadoop最基本的管理脚本和使用脚本所在目录, 这些脚本是sbin目录下管理脚本的基础实现, 用户可以直接使用这些: x6 s3 x+ n* t" T1 J
脚本管理和使用Hadoop。
: o# r4 w+ T- p j2 [, p2 q' }+ u❑etc : Hadoop配置文件所在的目录, 包括core-site.xml、 hdfs-site.xml、 mapred-site.xml等从Hadoop 1.0继承而来的配置文件和4 i7 @2 D }5 c
yarn-site.xml等Hadoop 2.0新增的配置文件。
+ P1 [4 E- Y! ?& ~2 V5 E❑include : 对外提供的编程库头文件( 具体动态库和静态库在lib目录中) , 这些头文件均是用C++定义的, 通常用于C++语
% Y g9 |3 _( ~& m D7 S6 r* ?言访问HDFS或者编写MapReduce程序。! m" _& t; _: Y' _0 B @
❑lib : 该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。) i" b& I1 b2 i" e: ?
❑libexec : 各个服务对应的Shell配置文件所在目录, 可用于配置日志输出目录、 启动参数( 比如JVM参数) 等基本信息。4 B6 A: @- c+ d h$ H* s
❑sbin: Hadoop管理脚本所在目录, 主要包含HDFS和YARN中各类服务的启动/关闭脚本。
& h' W0 ?/ u. Y& L; k$ ^6 I& z❑share : Hadoop各个模块编译后的JAR包所在目录。
* h% D( u0 v2 R1 b8 ^1 H在Hadoop 源代码压缩包解压后的目录hadoop-{VERSION}-src中, 可看到如图1-8所示的目录结构, 其中, 比较重要的目录
4 X) k" `' g2 U2 u有: hadoop-common-project、 hadoop-mapreduce-project、 hadoop-hdfs-project和hadoop-yarn-project等, 下面分别介绍这几个目录的作6 N, _& {$ ~! Z7 _% ^
用。6 V; Q# W& r* P3 k% l
❑hadoop-common-project: Hadoop基础库所在目录, 该目录中包含了其他所有模块可能会用到的基础库, 包括RPC、, ^& l# _. p7 z7 C; F
Metrics、 Counter等。
: o b6 l9 \* u k图1-8 Hadoop安装目录结构
* T! I; F& v, R, W# @❑hadoop-mapreduce-project: MapReduce框架的实现, 在MRv1中, MapReduce由编程模型( map/reduce) 、 调度系统
. C3 }" n* @, ~/ N( JobTracker和TaskTracker) 和数据处理引擎( MapTask和ReduceTask) 等模块组成, 而此处的MapReduce则不同于MRv1中的实% x: d) t4 g5 Q; Y
现, 它的资源调度功能由新增的YARN完成( 编程模型和数据处理引擎不变) , 自身仅包含非常简单的任务分配功能。
* E( o" H g+ K% J, Q3 j o4 y1 z❑hadoop-hdfs-project: Hadoop分布式文件系统实现, 不同于Hadoop 1.0中单NameNode实现, Hadoop 2.0支持多NameNode,* x4 e0 H. ?7 k' a6 k5 Q3 v5 {
同时解决了NameNode单点故障问题。
! {' f0 K5 a1 Q l5 p+ L❑hadoop-yarn-project: Hadoop资源管理系统YARN实现。 这是Hadoop 2.0新引入的分支, 该系统能够统一管理系统中的资
9 ?6 A8 U; |! G源, 并按照一定的策略分配给各个应用程序, 本书将重点剖析YARN的实现。9 h9 D9 Z$ @9 W; [# J0 c8 L; P
本书重点介绍YARN的实现原理, 下面就对Hadoop YARN源代 码组织结构 [3] 进行介绍。 YARN目录组织结构如图1-9所示。
/ i" t# }" F$ P; t& P总体上看, Hadoop YARN分为5部分: API、 Common、 Applications、 Client和Server, 它们的内容具体如下:
+ [" ~' ^$ n9 w; e❑YARN API( hadoop-yarn-api目录) : 给出了YARN内部涉及的4个主要RPC协议的Java 声明和Protocol Buffers定义, 这4个/ D h$ H M- q% x
RPC协议分别是ApplicationClientProtocol、 ApplicationMasterProtocol、 ContainerManagementProtocol和4 T [( z5 b" a
ResourceManagerAdministrationProtocol, 本书将在第2章对这部分内容进行详细介绍。
. U l5 X E* r2 O; k❑YARN Common( hadoop-yarn-common目录) : 该部分包含了YARN底层库实现, 包括事件库、 服务库、 状态机库、 Web界
& h2 Z0 c3 Y! z& L+ o面库等, 本书将在第3章对这部分内容进行详细介绍。
" P2 h& {; }$ I/ {; {6 q❑YARN Applications( hadoop-yarn-applications目录) : 该部分包含了两个Application编程实例, 分别是distributedshell和* j; E7 T9 h) o. D. W
Unmanaged AM, 本书将在第4章对这部分内容进行详细介绍。- F; K8 V3 |2 z, Y% I
❑YARN Client( hadoop-yarn-client目录) : 该部分封装了几个与YARN RPC协议交互相关的库, 方便用户开发应用程序, 本
( m$ {4 k" c g I, C: ~书将在第4章对这部分内容进行详细介绍。
1 v3 p6 d0 O7 }7 _& X9 y& I$ K❑YARN Server( hadoop-yarn-server目录) : 该部分给出了YARN的核心实现, 包括ResourceManager、 NodeManager、 资源管
7 @+ l) t! \5 c0 z6 q0 k. r( y( l理器等核心组件的实现, 本书将在第5~7章对这部分内容进行详细介绍。
g y1 ?1 H8 \2 Y图1-9 Hadoop YARN目录组织结构9 L: S" q3 B2 }/ u+ n8 X
[3] 不同Hadoop版本的源代码组织结构有较大差别, 本书的分析是基于Hadoop 1.0.0的。 y4 o' `+ |5 E6 n8 r, l+ h J
: U- @2 Z. u& l) B* b% k1 B
9 x; x, u$ L$ T7 ?1 Y
|
|