分享

Hadoop源代码组织结构:各个文件介绍

问题导读:
1.hadoop代码总体分为机部分?
2.Hadoop各个模块编译后的JAR包在哪个文件夹?
3.bin与sbin文件夹的区别是什么?
4.YARN有包含哪些文件?





在Hadoop的JAR压缩包解压后的目录hadoop-{VERSION}中包含了Hadoop全部的管理脚本和JAR包,下面简单对这些文件或目录进行介绍。

bin:Hadoop最基本的管理脚本和使用脚本所在目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop。

etc:Hadoop配置文件所在的目录,包括core-site.xml、hdfs-site.xml、mapred-site.xml等从Hadoop 1.0继承而来的配置文件和yarn-site.xml等Hadoop 2.0新增的配置文件。

include:对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++语言访问HDFS或者编写MapReduce程序。

lib:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用。

libexec:各个服务对应的Shell配置文件所在目录,可用于配置日志输出目录、启动参数(比如JVM参数)等基本信息。

sbin:Hadoop管理脚本所在目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。

share:Hadoop各个模块编译后的JAR包所在目录。

在Hadoop 源代码压缩包解压后的目录hadoop-{VERSION}-src中,可看到如图1-8所示的目录结构,其中,比较重要的目录有:hadoop-common-project、hadoop-mapreduce-project、hadoop-hdfs-project和hadoop-yarn-project等,下面分别介绍这几个目录的作用。
hadoop-common-project:Hadoop基础库所在目录,该目录中包含了其他所有模块可能会用到的基础库,包括RPC、Metrics、Counter等。

1.jpg

hadoop-mapreduce-project:MapReduce框架的实现,在MRv1中,MapReduce由编程模型(map/reduce)、调度系统(JobTracker和TaskTracker)和数据处理引擎(MapTask和ReduceTask)等模块组成,而此处的MapReduce则不同于MRv1中的实现,它的资源调度功能由新增的YARN完成(编程模型和数据处理引擎不变),自身仅包含非常简单的任务分配功能。

hadoop-hdfs-project:Hadoop分布式文件系统实现,不同于Hadoop 1.0中单NameNode实现,Hadoop 2.0支持多NameNode,同时解决了NameNode单点故障问题。

hadoop-yarn-project:Hadoop资源管理系统YARN实现。这是Hadoop 2.0新引入的分支,该系统能够统一管理系统中的资源,并按照一定的策略分配给各个应用程序,本书将重点剖析YARN的实现。




下面就对Hadoop YARN源代码组织结构进行介绍。YARN目录组织结构如图1-9所示。
总体上看,Hadoop YARN分为5部分:API、Common、Applications、Client和Server,它们的内容具体如下:

YARN API(hadoop-yarn-api目录):给出了YARN内部涉及的4个主要RPC协议的Java 声明和Protocol Buffers定义,这4个RPC协议分别是ApplicationClientProtocol、ApplicationMasterProtocol、ContainerManagementProtocol和ResourceManagerAdministrationProtocol,本书将在第2章对这部分内容进行详细介绍。

YARN Common(hadoop-yarn-common目录):该部分包含了YARN底层库实现,包括事件库、服务库、状态机库、Web界面库等,本书将在第3章对这部分内容进行详细介绍。

YARN Applications(hadoop-yarn-applications目录):该部分包含了两个Application编程实例,分别是distributedshell和Unmanaged AM,本书将在第4章对这部分内容进行详细介绍。

YARN Client(hadoop-yarn-client目录):该部分封装了几个与YARN RPC协议交互相关的库,方便用户开发应用程序

YARN Server(hadoop-yarn-server目录):该部分给出了YARN的核心实现,包括ResourceManager、NodeManager、资源管理器等核心组件的实现,本书将在第5~7章对这部分内容进行详细介绍。
2.jpg

已有(2)人评论

跳转到指定楼层
schlemiel 发表于 2014-6-12 14:27:58
大拿能否讲一下core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml这几个配置文件中各参数的意义?
回复

使用道具 举报

pig2 发表于 2014-6-12 15:01:26
schlemiel 发表于 2014-6-12 14:27
大拿能否讲一下core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml这几个配置文件中各参数的意 ...




其实这些在配置文件中都有相关的英语说明,如果你的英语比较好,建议参考下面的内容

这是原滋原味的英语解释,也是很多人写书的依据。

http://hadoop.apache.org/docs/r2 ... on/core-default.xml
http://hadoop.apache.org/docs/r2 ... fs/hdfs-default.xml
http://hadoop.apache.org/docs/r2 ... /mapred-default.xml
http://hadoop.apache.org/docs/r2 ... on/yarn-default.xml

如果英语不好的话,上面只能大体描述一下,见文知意,上面core-site.xml里面配置的是一些基础的内容,比如

core-site.xml
里面的配置项:
  1.       <property>
  2.               <name>hadoop.tmp.dir</name>
  3.               <value>file:/home/aboutyun/tmp</value>
  4.                <description>Abase forother temporary directories.</description>
  5.       </property>
复制代码
这里是hadoop的临时文件目录,file的含义是使用本地目录。也就是使用的是Linux的目录 。


hdfs-site.xml:


  1.   <property>
  2.              <name>dfs.namenode.name.dir</name>
  3.              <value>file:/home/aboutyun/dfs/name</value>
  4.        </property>
  5.       <property>
  6.               <name>dfs.datanode.data.dir</name>
  7.               <value>file:/home/aboutyun/dfs/data</value>
  8.        </property>
复制代码
上面是针对hdfs一些配置项

而对于其它的配置项,如mapred-site.xml、yarn-site.xml
则是分别对mapreduce,yarn的配置。如果对他们的配置项不明白可以参考:hadoop2.x常用端口、定义方法及默认端口、hadoop1.X端口对比
里面介绍的很详细。

这里在说一下为什么会产生配置文件:
比如我们在运行hdfs的过程中,我们不知道hdfs的数据该存储在什么地方,那么我们该怎么做?
读取配置文件,因为配置文件中有指定,如果配置文件中没有指定,程序该如何处理,很简单,程序会指定一个默认路径。

比如我们提交程序了,那么yarn该分配资源,谁来指导它,那么这时候yarn-site.xml便是一个指导。
举个例子:

  1. <property>
  2. <name>mapreduce.map.memory.mb</name>
  3. <value>1024</value>
  4. </property>
复制代码
上面的含义是:
每个MapReduce作业的map任务可以申请的内存资源数量


为什么配置文件是程序的指导那:
上面配置项如果你填写1024那就是内存资源数是1024,如果你填写2048程序就会分配2048.
所以从上面我们可以得出各个配置文件以及配置项目含义了:
总结一下:
hdfs-site.xml:是配置与hdfs相关内容的配置文件,
mapred-site.xml则是与mapreduce运行时,需要读取配置文件
yarn-site.xml则是和yarn运行时读取的相关参数配置。

















回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条