配置系统是复杂软件必不可少的一部分,而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. 机器学习 —— 概率图模型(CPD)

    CPD是conditional probability distribution的缩写,翻译成中文叫做 条件概率分布.在概率图中,条件概率分布是一个非常重要的概念.因为概率图研究的是随机变量之间的练习 ...

  2. 三个特殊资源目录 /res/xml /res/raw 和 /assets

    在android开发中,我们离不开资源文件的使用,从drawable到string,再到layout,这些资源都为我们的开发提供了极大的便利,不过我们平时大部分时间接触的资源目录一般都是下面这三个. ...

  3. HDU 4565 So Easy!(矩阵)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4565 题意: 题意: #include <iostream>#include <cs ...

  4. 分解成3NF保持函数依赖且为无损连接的算法

    分解成3NF保持函数依赖且为无损连接的算法: 1.根据分解成3NF的保持函数依赖的分解算法(http://www.cnblogs.com/bewolf/p/4443919.html),得到分解结果ρ ...

  5. Altium designer总结

    itwolf原创文章,转载请注明出处 大概有半年没有画过PCB板了,最近突然又要画一个简单的小板子,却发现好多东西已经不是很熟练了,现在把Altium designer软件的使用中要注意的问题和一些小 ...

  6. mkdir -p

    git bash 或 mac terminal 我们可以使用 mkdir 命令来创建文件夹. 当前目录创建多个文件夹: $ mkdir a b c 会创建 a .b.c 三个文件夹 但是有时候我们需要 ...

  7. java_十进制数转换为二进制,八进制,十六进制数的算法

    java_十进制数转换为二进制,八进制,十六进制数的算法 java Ê®½øÖÆÊýת»»Îª¶þ½øÖÆ,°Ë½øÖÆ,Ê®Áù½øÖÆÊýµÄË㕨 using System; using S ...

  8. Oracle默认的用户名和密码

    你是说默认的用户名和密码么scott 密码是 tigersys 密码是 change_on_installsystem 密码是 managersysman 密码是 oem_temp 其中直接管理模式可 ...

  9. bzoj1594

    首先想到二分答案 然后我们从大往小加区间,如果之前出现了一个区间包含当前区间 那显然不合法,我们可以用并查集了维护 type node=record x,y,mi,id:longint; end; . ...

  10. Ubuntu解决Sublime Text 2安装GBK Encoding Support插件仍然乱码

    Ubuntu 12.04 32位下,为Sublime Text 2安装Package Control: 1. 用Ctrl+~打开控制台,输入 import urllib2,os; pf='Packag ...