|
1.4 Hadoop源代码组织结构: p- K5 E+ A1 F/ Y/ G7 g# T: ~2 v
在Hadoop的JAR压缩包解压后的目录hadoop-{VERSION}中包含了Hadoop全部的管理脚本和JAR包, 下面简单对这些文件或
+ t6 t D P( \/ J" u/ w0 R目录进行介绍。" I8 S8 O2 i; D2 l, X% Q
❑bin: Hadoop最基本的管理脚本和使用脚本所在目录, 这些脚本是sbin目录下管理脚本的基础实现, 用户可以直接使用这些& N2 F0 g/ `% S1 a! o
脚本管理和使用Hadoop。
) \3 z" h5 G3 d" u) y+ N" ^( W❑etc : Hadoop配置文件所在的目录, 包括core-site.xml、 hdfs-site.xml、 mapred-site.xml等从Hadoop 1.0继承而来的配置文件和
9 O; F$ {7 z" o3 {$ Dyarn-site.xml等Hadoop 2.0新增的配置文件。
+ m- s; t) I; w) C5 L7 s! R9 l❑include : 对外提供的编程库头文件( 具体动态库和静态库在lib目录中) , 这些头文件均是用C++定义的, 通常用于C++语/ K6 d! u/ a& I) }
言访问HDFS或者编写MapReduce程序。
, S. \- O3 k0 l# x+ P$ m% X4 R❑lib : 该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。8 P/ w/ H0 V9 p- L
❑libexec : 各个服务对应的Shell配置文件所在目录, 可用于配置日志输出目录、 启动参数( 比如JVM参数) 等基本信息。& N; Y; L/ n6 G7 @% y- w# V
❑sbin: Hadoop管理脚本所在目录, 主要包含HDFS和YARN中各类服务的启动/关闭脚本。
8 j6 o7 Y$ ]. f❑share : Hadoop各个模块编译后的JAR包所在目录。3 K6 X: q" W; J% ^& r. A+ Y1 g
在Hadoop 源代码压缩包解压后的目录hadoop-{VERSION}-src中, 可看到如图1-8所示的目录结构, 其中, 比较重要的目录
, `# b- K: x* @1 }, e- R1 j5 e有: hadoop-common-project、 hadoop-mapreduce-project、 hadoop-hdfs-project和hadoop-yarn-project等, 下面分别介绍这几个目录的作; M2 { U6 Q* N3 M
用。
- A% o @- x/ g2 c$ q❑hadoop-common-project: Hadoop基础库所在目录, 该目录中包含了其他所有模块可能会用到的基础库, 包括RPC、2 s( ]3 P6 I3 w* X: B4 j
Metrics、 Counter等。
# l0 M6 r$ ]: S& f5 n0 O! k图1-8 Hadoop安装目录结构, P4 r4 [. v) `/ r# c
❑hadoop-mapreduce-project: MapReduce框架的实现, 在MRv1中, MapReduce由编程模型( map/reduce) 、 调度系统
5 [# n' [, \5 R- l& T' [% X( JobTracker和TaskTracker) 和数据处理引擎( MapTask和ReduceTask) 等模块组成, 而此处的MapReduce则不同于MRv1中的实
9 w5 @6 `; J- E3 m8 V. B1 m+ s) y8 j现, 它的资源调度功能由新增的YARN完成( 编程模型和数据处理引擎不变) , 自身仅包含非常简单的任务分配功能。2 o+ l) C! `* S+ t* F+ h" h+ z
❑hadoop-hdfs-project: Hadoop分布式文件系统实现, 不同于Hadoop 1.0中单NameNode实现, Hadoop 2.0支持多NameNode,0 }% V3 D) u) l. L0 x8 ^
同时解决了NameNode单点故障问题。% L ?& ~, o1 D) w9 Y( }: t
❑hadoop-yarn-project: Hadoop资源管理系统YARN实现。 这是Hadoop 2.0新引入的分支, 该系统能够统一管理系统中的资( f% R n' M$ r7 @
源, 并按照一定的策略分配给各个应用程序, 本书将重点剖析YARN的实现。
4 N% q+ j2 R3 R; W, }. B本书重点介绍YARN的实现原理, 下面就对Hadoop YARN源代 码组织结构 [3] 进行介绍。 YARN目录组织结构如图1-9所示。, L( f+ c5 ^1 p$ Y6 c: Q8 Y
总体上看, Hadoop YARN分为5部分: API、 Common、 Applications、 Client和Server, 它们的内容具体如下:
7 l' B9 Z0 V9 Q3 {1 t1 N2 Z❑YARN API( hadoop-yarn-api目录) : 给出了YARN内部涉及的4个主要RPC协议的Java 声明和Protocol Buffers定义, 这4个
) Q3 Y' ~% R3 z, S2 o6 z6 ORPC协议分别是ApplicationClientProtocol、 ApplicationMasterProtocol、 ContainerManagementProtocol和
; t* U6 u; d7 Q9 }ResourceManagerAdministrationProtocol, 本书将在第2章对这部分内容进行详细介绍。* D- r5 s) b- N( X
❑YARN Common( hadoop-yarn-common目录) : 该部分包含了YARN底层库实现, 包括事件库、 服务库、 状态机库、 Web界" L$ k9 f4 r& \' b2 F4 K: w6 I9 P# K
面库等, 本书将在第3章对这部分内容进行详细介绍。. t: x: O( N; C* w3 @
❑YARN Applications( hadoop-yarn-applications目录) : 该部分包含了两个Application编程实例, 分别是distributedshell和
- T3 o9 w) ]. B) [0 N; iUnmanaged AM, 本书将在第4章对这部分内容进行详细介绍。
2 d5 e, |& a- r, U/ ], j$ w❑YARN Client( hadoop-yarn-client目录) : 该部分封装了几个与YARN RPC协议交互相关的库, 方便用户开发应用程序, 本& A# t( d% U( d9 I9 J" A0 P
书将在第4章对这部分内容进行详细介绍。
% o4 A& G" q& l8 I: p% S❑YARN Server( hadoop-yarn-server目录) : 该部分给出了YARN的核心实现, 包括ResourceManager、 NodeManager、 资源管
; ^' \9 K5 ^- p& U+ o+ X理器等核心组件的实现, 本书将在第5~7章对这部分内容进行详细介绍。
* E6 K, C' s6 g6 ~: }9 ^3 A. _+ h图1-9 Hadoop YARN目录组织结构! d9 n. B, Y5 d1 w$ ~
[3] 不同Hadoop版本的源代码组织结构有较大差别, 本书的分析是基于Hadoop 1.0.0的。 ( O+ c/ T+ Y% K H" @% {+ y7 ?! w
( T# L5 D- x' u/ h( t+ F
5 h: X- C. {" ?: l+ d" B |
|