|
1.4 Hadoop源代码组织结构
3 x, B9 q% q& o- |在Hadoop的JAR压缩包解压后的目录hadoop-{VERSION}中包含了Hadoop全部的管理脚本和JAR包, 下面简单对这些文件或
6 X* {7 ]5 F! ~0 B9 H/ V- p目录进行介绍。+ t! Y C0 g2 k( {
❑bin: Hadoop最基本的管理脚本和使用脚本所在目录, 这些脚本是sbin目录下管理脚本的基础实现, 用户可以直接使用这些8 F! P1 Q) ]3 Z5 n1 [! G$ E$ f
脚本管理和使用Hadoop。 v [. U; B6 G4 ~" d N
❑etc : Hadoop配置文件所在的目录, 包括core-site.xml、 hdfs-site.xml、 mapred-site.xml等从Hadoop 1.0继承而来的配置文件和
3 z# _8 g f! w; V7 Syarn-site.xml等Hadoop 2.0新增的配置文件。
8 X7 d2 \, l6 B4 L# W) @( G❑include : 对外提供的编程库头文件( 具体动态库和静态库在lib目录中) , 这些头文件均是用C++定义的, 通常用于C++语
* A' y1 e; C: r3 O7 k- V言访问HDFS或者编写MapReduce程序。
! Y% \3 A% ^ C9 M2 j❑lib : 该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。! }4 T/ q" C! c
❑libexec : 各个服务对应的Shell配置文件所在目录, 可用于配置日志输出目录、 启动参数( 比如JVM参数) 等基本信息。
0 P7 w) ?9 J+ n* x' ~$ l, B0 C! F1 B❑sbin: Hadoop管理脚本所在目录, 主要包含HDFS和YARN中各类服务的启动/关闭脚本。
2 z( g4 Q! H5 T# Q" K; b3 s. s❑share : Hadoop各个模块编译后的JAR包所在目录。
" u3 z7 c. e' h在Hadoop 源代码压缩包解压后的目录hadoop-{VERSION}-src中, 可看到如图1-8所示的目录结构, 其中, 比较重要的目录
x; c: |/ d- X J有: hadoop-common-project、 hadoop-mapreduce-project、 hadoop-hdfs-project和hadoop-yarn-project等, 下面分别介绍这几个目录的作* j6 x- E3 G5 u4 c- s! F+ f
用。2 F7 P) s5 H& U) g2 q& K0 S5 O( L
❑hadoop-common-project: Hadoop基础库所在目录, 该目录中包含了其他所有模块可能会用到的基础库, 包括RPC、
# e+ I# S+ Z9 ~Metrics、 Counter等。
2 b4 ]8 O/ X2 o3 \/ B" q- j; y图1-8 Hadoop安装目录结构
, L9 ?; z) Q. ?; v, r- n9 Y' {% P❑hadoop-mapreduce-project: MapReduce框架的实现, 在MRv1中, MapReduce由编程模型( map/reduce) 、 调度系统- `( N' `+ S) l- O
( JobTracker和TaskTracker) 和数据处理引擎( MapTask和ReduceTask) 等模块组成, 而此处的MapReduce则不同于MRv1中的实6 @! Z6 c& I9 x/ w4 S
现, 它的资源调度功能由新增的YARN完成( 编程模型和数据处理引擎不变) , 自身仅包含非常简单的任务分配功能。/ J/ M* h! f- a' g6 |' b, T) | X
❑hadoop-hdfs-project: Hadoop分布式文件系统实现, 不同于Hadoop 1.0中单NameNode实现, Hadoop 2.0支持多NameNode,
) E$ V/ F! O* f0 R7 S" D2 P0 R" W( D同时解决了NameNode单点故障问题。
: V1 X* t0 g) l2 a) |2 m% z❑hadoop-yarn-project: Hadoop资源管理系统YARN实现。 这是Hadoop 2.0新引入的分支, 该系统能够统一管理系统中的资7 K H( n% h; ~ c$ e
源, 并按照一定的策略分配给各个应用程序, 本书将重点剖析YARN的实现。- o7 i# ~! T* b3 x" r; v, e
本书重点介绍YARN的实现原理, 下面就对Hadoop YARN源代 码组织结构 [3] 进行介绍。 YARN目录组织结构如图1-9所示。. a+ e/ D! U/ ^. ]! ^" Y% L$ M
总体上看, Hadoop YARN分为5部分: API、 Common、 Applications、 Client和Server, 它们的内容具体如下:
# `" ~$ e0 T/ G6 j❑YARN API( hadoop-yarn-api目录) : 给出了YARN内部涉及的4个主要RPC协议的Java 声明和Protocol Buffers定义, 这4个. l- \4 a- S/ H6 y% M
RPC协议分别是ApplicationClientProtocol、 ApplicationMasterProtocol、 ContainerManagementProtocol和
* |6 M5 O" l5 `- Q7 B2 F/ XResourceManagerAdministrationProtocol, 本书将在第2章对这部分内容进行详细介绍。
1 j1 f0 m. ?8 M& s5 o/ l❑YARN Common( hadoop-yarn-common目录) : 该部分包含了YARN底层库实现, 包括事件库、 服务库、 状态机库、 Web界
' x" t' P2 {9 U1 N, ^* T, k# N面库等, 本书将在第3章对这部分内容进行详细介绍。9 W9 ^$ q7 S m% y
❑YARN Applications( hadoop-yarn-applications目录) : 该部分包含了两个Application编程实例, 分别是distributedshell和
3 d- @2 I9 C1 a. B# lUnmanaged AM, 本书将在第4章对这部分内容进行详细介绍。
& V3 w+ b* o1 `4 K" Q9 V0 n& {! T❑YARN Client( hadoop-yarn-client目录) : 该部分封装了几个与YARN RPC协议交互相关的库, 方便用户开发应用程序, 本
9 K5 V! o2 r- L% M% c6 _' ?书将在第4章对这部分内容进行详细介绍。* \! A, K: Z3 x# V) x+ z
❑YARN Server( hadoop-yarn-server目录) : 该部分给出了YARN的核心实现, 包括ResourceManager、 NodeManager、 资源管+ u( F7 w; E) a6 e r
理器等核心组件的实现, 本书将在第5~7章对这部分内容进行详细介绍。
/ S' x- k6 F" u3 ]; K/ Q图1-9 Hadoop YARN目录组织结构
X6 `/ ]3 @. l+ H, b5 q[3] 不同Hadoop版本的源代码组织结构有较大差别, 本书的分析是基于Hadoop 1.0.0的。 + y6 d- c" Y: h- H" {
. o% A3 u; o6 L9 R
5 |6 }/ v3 V- N# Q/ ]# U |
|