• 配置详解


    配置详解

    配置系统是复杂软件必不可少的一部分,而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.xmlcore-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.xmlconf/hdfs-site.xmlconf/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
  • 相关阅读:
    生产者与消费者
    .net 重新注册
    linux 网络之 bond 网卡模式
    Rancher
    kubernetes 集群
    centos7 网卡命名
    Redis 主从模式
    Redis 集群
    Redis
    TwemProxy Redis架构
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3280944.html
Copyright © 2020-2023  润新知