配置系统是复杂软件必不可少的一部分,而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. RedHat6配置yum源 (32位)

    由于 redhat的yum在线更新是收费的,如果没有注册的话不能使用, 如果要使用,需将redhat的yum卸载后,重启安装,再配置其他源,以下为详细过程: 1.删除redhat原有的yum rpm ...

  2. Java实现-------网络蜘蛛

    闲来无事,学习了一下网络蜘蛛的简易原理.是最简单的一种,一般新手都可以看得懂哦~~读者可以将其进行扩展,可以实现用来抓取网页js或者css等等哦... package com.insist.entit ...

  3. IIS发布报错

    IIS发布报错一般原因 ISAPI和CGI限制作为IIS与ASP.NET的连接桥梁

  4. Linux 下查看文件字符编码和转换编码

    Linux 下查看文件字符编码和转换编码 如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linu ...

  5. hdu 3359 Kind of a Blur (高斯消元 浮点型)

    题目链接 题意: H * W (W,H <= 10) 的矩阵A的某个元素A[i][j],从它出发到其他点的曼哈顿距离小于等于D的所有值的和S[i][j]除上可达点的数目,构成了矩阵B.给定矩阵B ...

  6. LA 3263 (平面图的欧拉定理) That Nice Euler Circuit

    题意: 平面上有n个端点的一笔画,最后一个端点与第一个端点重合,即所给图案是闭合曲线.求这些线段将平面分成多少部分. 分析: 平面图中欧拉定理:设平面的顶点数.边数和面数分别为V.E和F.则 V+F- ...

  7. HDU 1358 (所有前缀中的周期串) Period

    题意: 给出一个字符串,在所有长度大于1的前缀中,求所有的周期至少为2的周期串,并输出一个周期的长度以及周期的次数. 分析: 有了上一题 HDU 3746 的铺垫,这道题就很容易解决了 把next求出 ...

  8. bzoj3275: Number

    最小割...然后推一下可知不能的情况必定为一奇一偶,于是s->奇->偶->t.跑最小割即可. #include<cstdio> #include<cstring&g ...

  9. Jqgrid入门-结合Struts2+json实现数据展示(五)

    DEMO用的是ssh框架实现的,具体怎么搭建的就不多做说明了.分页表格的数据操作难点就是数据展现.至于增删改直接用hibernate原生的方法实现即可.         初步分析:表格要实现分页,那么 ...

  10. UVa 11584 Partitioning by Palindromes【DP】

    题意:给出一个字符串,问最少能够划分成多少个回文串 dp[i]表示以第i个字母结束最少能够划分成的回文串的个数 dp[i]=min(dp[i],dp[j]+1)(如果从第j个字母到第i个字母是回文串) ...