配置系统是复杂软件必不可少的一部分,而Hadoop配置信息处理是学习Hadoop源代码的一个很好的起点。现在就从Hadoop的配置文件谈起。

一、Hadoop配置格式

Hadoop配置文件格式如下所示:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>io.sort.factor</name>
<value>10</value>
<description>The number of streams to merge at once while sorting files</description>
</property>
</configuration>

  Hadoop的配置文件跟元素为configuration,一般只包含子元素property。每一个property元素就是一个配置项,配置文件不支持分层或分级,每个配置属性的名称name、值value和一个关于配置项的描述description;元素final和java关键字final类似,意味着这个配置项不可改变,而且在合并资源的时候可以防止配置项的值被覆盖。

  如果有两个配置文件,如core-default.xml和core-site.xml.通过Configuration类(org.apache.hadoop.conf包中)的loadResource()方法,把他们合并成一配置文件。代码如下:

Configuration conf  = new Configuration();
conf.addResource(“core-default.xml”);
conf.addResource(“core-site.xml”);

  如果这两个配置文件都包含了相同的配置项,而且前一个资源的配置项没有标记为final,那么后一个配置将覆盖前一个配置。

Hadoop的配置文件都是XML格式的,JAXP(Java API for XML Processing)是一种稳定、可靠的XML处理API,支持SAX(Simple API for XML)和DOM(Document Object Model)两种XML解析方式。

  SAX 提供提供了一种流式的、事件驱动的XML处理方式,但编写处理逻辑比较复杂,适合处理大的XML文件。

  DOM与SAX不同,它将XML文档一次性装入内存;然后根据文档中定义的元素和属性在内存中创建一个树形结构---文档对象模型,将文档对象化,文档中每个节点对应着模型中一个对象;然后使用对象提供的编程接口,访问XML文档,进而进行解析和操作XML文档,Hadoop的配置文件都是很小的文件,因此Configuration类使用DOM解析XML配置文件。

二、Hadoop配置文件

  Hadoop的配置文件分为两类。

  第一类只读类型的默认文件:src/core/core-default.xml、src/hdfs/hdfs-default.xml、src/mapred-default.xml.

  第二类为定位设置(site-specific):conf/core-site.xml、conf/hdfs-site.xml、conf/mapred-site.xml。

  也可以通过设置conf/Hadoop-env.sh来为Hadoop的守护进程设置环境变量(bin目录下)

  Hadoop是通过org.apache.hadoop.conf.configuration来读取配置文件的.在Hadoop的设置中,Hadoop的设置中,Hadoop的配置是通过资源(resource)定位的,每个资源由一系列的name/value键值对以XML文件的形式构成,它以一个字符串命名或以Hadoop定义的Path类命名(这个类用于定义问价系统内的文件或者文件夹的)。如果是以字符串命名的,Hadoop会通过classpath调用此文件。如果以Path命名,那么Hadoop会直接在本地文件系统中搜索文件。

  资源设定有两个特点。以下两点来自对Hadoop API文档的翻译和理解。

  (1)Hadoop允许定义最终参数(final parameters),如果任意资源声明了final这个值,那么之后加载的任何资源都不能改变这个值,定义最终资源的格式是这样的:

<property>
<name>dfs.client.buffer.dir</name>
<value>/tem/Hadoop/dfs/client</value>
<final>true</final>
</property>

  (2)Hadoop允许参数传递。示例如下,当tempdir被调用时,basedir会作为值

“/user/${user.name}”被调用。那么tempdir的值为user/${user.name}/temp,相应的${user.name}也会调用其它属性的值。

<property>
<name>basedir</name>
<value>/user/${user.name}</value>
</property> <property>
<name>tempdir</name>
<value>${basedir}/temp</value>
</property>

  下面3个表详细说明了配置文件,hdfs-site.xml、core-site.xml、mapred-site.xml是Hadoop配置最重要的几个文件,在以后的Hadoop安装中会遇到。

参数parameter

值value

dfs.name.dir

NameNode存储名字空间及汇报日志的位置

dfs..data.dir

DataNode存储数据块的位置

conf/hdfs-site.xml配置表

参数parameter

值value

fs.default.name

NameNode的IP地址及端口

conf/core-site.xml配置表

参数parameter

值value

mapreduce.jobtracker.address

JobTracker的IP地址及端口

mapreduce.jobtracker.system.dir

Mapreduce在HDFS上存储文件的位置,例如/Hadoop/mapred/system/

mapreduce.cluster.local.dir

Mapreducede 缓存数据存储在文件系统中的位置

mapred.tasktracker.{map|reduce}.task.maximun

每台TaskTracker所能运行的Map或Reduce的task最大值

dfs.hosts/dfs.hosts.exclude

允许或禁止的Data

mapreduce.jobtracker.hosts.filename/

mapreduce.jobtracker.hosts.exclude.filename

允许或禁止的TaskTracker列表

mapreduce.cluster.job-authorization-enabled

布尔类型,表示Job存取控制列表是否支持对Job的观察和修改

conf/mapred-site.xml配置表

  除了规定的端口、IP地址、文件存储位置外,其他配置都是不允许修改的,以上配置被默认为最终参数,这些参数不可以在程序中再次修改。

  下一节将详细介绍Hadoop的安装。

 本文出处:http://www.cnblogs.com/bester/p/3279368.html

Hadoop学习笔记2---配置详解的更多相关文章

  1. Struts2学习笔记二 配置详解

    Struts2执行流程 1.简单执行流程,如下所示: 在浏览器输入请求地址,首先会被过滤器处理,然后查找主配置文件,然后根据地址栏中输入的/hello去每个package中查找为/hello的name ...

  2. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

  3. Struts2学习笔记(二)——配置详解

    1.Struts2配置文件加载顺序: default.properties(默认常量配置) struts-default.xml(默认配置文件,主要配置bean和拦截器) struts-plugin. ...

  4. expect学习笔记及实例详解【转】

    1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示:1.1 首行加上/usr/bin/expect1.2 spawn: 后面加上需要执行的shell命令,比如说sp ...

  5. Docker技术入门与实战 第二版-学习笔记-3-Dockerfile 指令详解

    前面已经讲解了FROM.RUN指令,还提及了COPY.ADD,接下来学习其他的指令 5.Dockerfile 指令详解 1> COPY 复制文件 格式: COPY  <源路径> .. ...

  6. vue.js学习笔记(二)——vue-router详解

    vue-router详解 原文链接:www.jianshu.com 一.前言 要学习vue-router就要先知道这里的路由是什么?为什么我们不能像原来一样直接用<a></a> ...

  7. Android学习笔记之Activity详解

    1 理解Activity Activity就是一个包含应用程序界面的窗口,是Android四大组件之一.一个应用程序可以包含零个或多个Activity.一个Activity的生命周期是指从屏幕上显示那 ...

  8. [C#] 类型学习笔记二:详解对象之间的比较

    继上一篇对象类型后,这里我们一起探讨相等的判定. 相等判断有关的4个方法 CLR中,和相等有关系的方法有这么4种: (1) 最常见的 == 运算符 (2) Object的静态方法ReferenceEq ...

  9. linux命令学习笔记-eval命令详解

    功能说明:重新运算求出参数的内容. 语 法:eval [参数] 补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行. 参 数:参数不限数目,彼此之间用分号分开. .eval命令将会首先 ...

随机推荐

  1. 如何禁用 radio ,设置为只读,不能选定

    如何禁用 radio ,设置为只读,不能选定 禁用 radio ,设置为只读,不能选定: <input name="gender" type="radio" ...

  2. PCL—低层次视觉—点云分割(超体聚类)

    1.超体聚类——一种来自图像的分割方法 超体(supervoxel)是一种集合,集合的元素是“体”.与体素滤波器中的体类似,其本质是一个个的小方块.与之前提到的所有分割手段不同,超体聚类的目的并不是分 ...

  3. 写出优秀论文How To Write A Great Essay About Anything

    There is an assumption in the world that an essay is something literary you write for school about a ...

  4. opencv 画延长线

    hough变换可以让我们检测到直线,这在前面已有详解,对于车道检测,我们需要其到图像边界的延长线一遍之后数据帧分析. 以下代码帮助我们在opencv中画延长线,本来想用虚线表示延长线的,无奈参数调不好 ...

  5. MySQL 5.7 SYS scheme解析

    sys 库是MySQL 5.7其中的一个系统库,里面有很多很好用的跟性能相关的视图.函数和存储过程, 增强MySQL的易用性 例如:哪些语句使用了临时表,哪个用户请求了最多的io,哪个线程占用了最多的 ...

  6. 25-语言入门-25-n-1位数

    题目地址: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=96    描述已知w是一个大于10但不大于1000000的无符号整数,若w是n(n ...

  7. yeoman错误提示

    运行 yo angular 出现如下提示: $ yo angular grunt-cli: The grunt command line interface. (v0.1.9) Fatal error ...

  8. 【转载】React初学者入门须知

    http://www.oschina.net/news/75530/9-things-every-reactjs-beginner-should-know react.js入门学习 看了一遍,没什么特 ...

  9. bzoj3747

    经典题,记录每个位置对应数下次出现的位置next[i] 每个位置维护当前左端点下到这个位置的和 随着左端点的右移一位到i+1,对[i+1,next[i]-1] 的影响是-a[i], [next[i], ...

  10. bzoj2823

    最小圆覆盖 有个东西叫作随机增量法,具体可以baidu 这里来说说怎么求三点共圆 这其实就是求两条线段的交点 在编程中,我们解方程是比较麻烦的一个比较好的方法是利用相似三角形 设线段AB,CD交P,则 ...