|
1.4 Hadoop源代码组织结构
& I9 K% ` `- p8 y8 d1 g在Hadoop的JAR压缩包解压后的目录hadoop-{VERSION}中包含了Hadoop全部的管理脚本和JAR包, 下面简单对这些文件或
0 ~; h; Q- n. m6 B3 I. n目录进行介绍。5 X" ?3 L7 M" }7 T
❑bin: Hadoop最基本的管理脚本和使用脚本所在目录, 这些脚本是sbin目录下管理脚本的基础实现, 用户可以直接使用这些
0 `1 y4 r6 j5 o8 j3 ]脚本管理和使用Hadoop。
+ c4 Z& Q- }7 _" k❑etc : Hadoop配置文件所在的目录, 包括core-site.xml、 hdfs-site.xml、 mapred-site.xml等从Hadoop 1.0继承而来的配置文件和
$ p" [' n0 x5 k: dyarn-site.xml等Hadoop 2.0新增的配置文件。- K5 \& V, F) M) O% v, ~( { u$ }9 z
❑include : 对外提供的编程库头文件( 具体动态库和静态库在lib目录中) , 这些头文件均是用C++定义的, 通常用于C++语
# c# U/ Q' L7 ^) y言访问HDFS或者编写MapReduce程序。
. E6 \; f# \. F- p6 y: z& i❑lib : 该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。6 S) z* p* \3 ?! e1 r% A
❑libexec : 各个服务对应的Shell配置文件所在目录, 可用于配置日志输出目录、 启动参数( 比如JVM参数) 等基本信息。( O8 ]8 `' ?% h/ I* J5 H4 z9 T9 |
❑sbin: Hadoop管理脚本所在目录, 主要包含HDFS和YARN中各类服务的启动/关闭脚本。
# }' u3 }$ @; g6 M❑share : Hadoop各个模块编译后的JAR包所在目录。
# @4 {' `; \. d1 N; ?) k在Hadoop 源代码压缩包解压后的目录hadoop-{VERSION}-src中, 可看到如图1-8所示的目录结构, 其中, 比较重要的目录
$ |4 \% `/ x% m2 G# G9 n; S有: hadoop-common-project、 hadoop-mapreduce-project、 hadoop-hdfs-project和hadoop-yarn-project等, 下面分别介绍这几个目录的作0 `9 |: w) D; K6 E
用。2 c/ h; s6 M2 ^
❑hadoop-common-project: Hadoop基础库所在目录, 该目录中包含了其他所有模块可能会用到的基础库, 包括RPC、
5 T$ @1 ], ^3 E" Q, p8 f" a$ sMetrics、 Counter等。1 ~' n1 |& z5 g- R
图1-8 Hadoop安装目录结构
& p' t4 t7 d9 _2 [3 C8 w! E❑hadoop-mapreduce-project: MapReduce框架的实现, 在MRv1中, MapReduce由编程模型( map/reduce) 、 调度系统8 T3 x5 d; [. z1 `3 h6 d( T3 d
( JobTracker和TaskTracker) 和数据处理引擎( MapTask和ReduceTask) 等模块组成, 而此处的MapReduce则不同于MRv1中的实
+ C/ {4 O# H* F现, 它的资源调度功能由新增的YARN完成( 编程模型和数据处理引擎不变) , 自身仅包含非常简单的任务分配功能。
" x: P* h' p9 H: |# U❑hadoop-hdfs-project: Hadoop分布式文件系统实现, 不同于Hadoop 1.0中单NameNode实现, Hadoop 2.0支持多NameNode,# r% G1 I7 m2 y6 f" K5 [+ Z$ Y
同时解决了NameNode单点故障问题。1 ~' }* n; \. B. E9 Z% Z* o1 ]
❑hadoop-yarn-project: Hadoop资源管理系统YARN实现。 这是Hadoop 2.0新引入的分支, 该系统能够统一管理系统中的资
9 t7 h/ Y& ~+ ^, a$ z( y. o源, 并按照一定的策略分配给各个应用程序, 本书将重点剖析YARN的实现。7 A6 G- U6 A& Q+ O, S! _
本书重点介绍YARN的实现原理, 下面就对Hadoop YARN源代 码组织结构 [3] 进行介绍。 YARN目录组织结构如图1-9所示。. @- O; _0 }6 U
总体上看, Hadoop YARN分为5部分: API、 Common、 Applications、 Client和Server, 它们的内容具体如下:# R9 y: N' U4 o/ [
❑YARN API( hadoop-yarn-api目录) : 给出了YARN内部涉及的4个主要RPC协议的Java 声明和Protocol Buffers定义, 这4个$ \9 p# w/ B+ j" h- j$ s! i4 e4 e
RPC协议分别是ApplicationClientProtocol、 ApplicationMasterProtocol、 ContainerManagementProtocol和
9 D6 w+ D/ x/ @# f+ p! |: Q0 ?ResourceManagerAdministrationProtocol, 本书将在第2章对这部分内容进行详细介绍。
/ o1 P$ k0 k7 \5 f- T1 e❑YARN Common( hadoop-yarn-common目录) : 该部分包含了YARN底层库实现, 包括事件库、 服务库、 状态机库、 Web界
' s- x/ b( H/ M2 U5 Q面库等, 本书将在第3章对这部分内容进行详细介绍。
2 e- |6 Y6 n& \❑YARN Applications( hadoop-yarn-applications目录) : 该部分包含了两个Application编程实例, 分别是distributedshell和
Q+ G: [( I/ \; V* NUnmanaged AM, 本书将在第4章对这部分内容进行详细介绍。
4 w2 c& l6 p1 `7 K/ {8 W0 y0 N❑YARN Client( hadoop-yarn-client目录) : 该部分封装了几个与YARN RPC协议交互相关的库, 方便用户开发应用程序, 本# e0 {2 {+ O, F" L# u1 v# i0 x
书将在第4章对这部分内容进行详细介绍。
( e; N) B* t* q$ i5 x' I2 Q7 H❑YARN Server( hadoop-yarn-server目录) : 该部分给出了YARN的核心实现, 包括ResourceManager、 NodeManager、 资源管
" i6 D9 g3 m* Q# \' r7 X理器等核心组件的实现, 本书将在第5~7章对这部分内容进行详细介绍。6 h% N# h* D& |/ I7 H+ w
图1-9 Hadoop YARN目录组织结构/ X+ O6 X: a; Q5 e3 C% l) K- D: J
[3] 不同Hadoop版本的源代码组织结构有较大差别, 本书的分析是基于Hadoop 1.0.0的。
& _( ~: T% d5 t% e
# t k9 _# |2 F) P0 M' Q* Z: c( ~" o6 x# Y- L. m9 U- w
|
|