Hadoop配置文件简介

来源:互联网 发布:蒙泰安装时出端口错误 编辑:程序博客网 时间:2024/05/18 00:10

简介

本文介绍了Hadoop 2.7.x常用的配置文件,并结合Hadoop的不同工作模式介绍其基本的配置。

综述

Hadoop的配置文件存放在$HADOOP_INSTALL/etc/hadoop目录下,下表列出了主要的配置文件及其功能:
文件名称
格式
描述
hadoop-env.sh
shell脚本
Hadoop运行中需要用到的环境变量
core-site.xml
XML
Hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设置等
hdfs-site.xml
XML
Hadoop守护进程的配置项,包括namenode, secondary namenode, 和datanode等
mapred-site.xml
XML
MapReduce守护进程的配置项,包括jobtracker和tasktracker
masters
纯文本
运行secondary namenode的机器列表
slaves
纯文本
运行datanode和tasktracker的机器列表
hadoop-metrics.properties
Java属性
控制如何在Hadoop上发布度量的属性
log4j.properties
Java属性
系统日志文件、namenode审计日志,tasktracker子进程的任务日志的属性

配置采用XML的格式存储,我们常用的配置文件主要涉及到hadoop-en.sh, core-site.xml, hdfs-site.xml, mapred-site.xml和yarn-site.xml。本文将结合Hadoop 2.7.3来讲解这些常用配置文件,并结合Hadoop的工作模式给出基本的配置。
如果配置目录被重新放在文件系统的其他地方(Hadoop安装在外面,以便升级),但是守护进程启动时需要使用--config选项,以指向本地文件系统的目录。

hadoop-env.sh

hadoop-env.sh文件中定义了Hadoop运行时使用的环境变量,其中只有JAVA_HOME环境变量是用户需要配置的,使之指向Java安装目录。其它环境变量在默认配置下都可以很好的工作。在逐步熟悉Hadoop后,可以通过修改这个文件来做个性化设置(如日志目录的位置、Java类所在目录等)。

core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml

这几个配置文件的配置与Hadoop的工作模式有关:本地模式、伪分布式模式、分布式(集群)模式。关于yarn-site.xml的配置,我们主要在分布式模式中介绍。
1. 本地(单机)模式
单机模式是Hadoop的默认模式。当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下core-site.xml, hdfs-site.xml, mapred-site.xml文件均为空,即使用系统的缺省最小配置。
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration></configuration>
当配置文件为空时,Hadoop会完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。
2. 伪分布式模式
伪分布式模式在“单节点集群”上运行Hadoop, 所有的守护进程都运行在同一台机器上。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用的情况、HDFS输入输出,以及其它守护进程的交互。
core-site.xml文件制定了NameNode的主机名和端口号,haoop.tmp.dir定义了临时目录,缺省为/tmp/hadoop-${user.name}。
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>    <property>        <name>hadoop.tmp.dir</name>        <value>file:/usr/local/hadoop/tmp</value>        <description>A base for other temporary directories.</description>    </property>    <property>        <name>fs.defaultFS</name>        <value>hdfs://localhost:9000</value>    </property></configuration>
mapred-site.xml可以使用系统默认的最小配置。
hdfs-site.xml中指定了HDFS的默认副本数,因为仅运行在一个节点上,这里副本数为1。这里我们还提供了NameNode和DataNode的工作目录。
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>    <property>        <name>dfs.replication</name>        <value>1</value>    </property>    <property>        <name>dfs.namenode.name.dir</name>        <value>file:/usr/local/hadoop/tmp/dfs/name</value>    </property>    <property>        <name>dfs.datanode.data.dir</name>        <value>file:/usr/local/hadoop/tmp/dfs/data</value>    </property></configuration>
3. 全分布式(集群)模式
集群模式能够充分利用分布式存储和分布式计算带来的好处,这里介绍一下集群下Hadoop相关的配置。
既然Hadoop工作在集群下,那么工作在集群下的节点需要知道主节点master的主机和端口信息。
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>    <property>        <name>hadoop.tmp.dir</name>        <value>file:/usr/local/hadoop/tmp</value>        <description>Abase for other temporary directories.</description>    </property>    <property>        <name>fs.defaultFS</name>        <value>hdfs://hadoop-master-vm:9000</value>    </property></configuration>
对比伪分布式工作模式,主机名是使用的localhost,但集群模式下,需要为工作节点slave提供主节点的信息,这里使用的是主机名。因此我们需要提供主机名与IP地址之间的转换服务,可提供静态的DNS转换服务,通过修改/etc/hosts的配置来提供;另外一种就是提供动态的DNS服务器来负责主机名和IP地址的解析服务。
当主节点master启动时,需要启动工作节点slave的守护进程,这里就需要知道工作节点的地址信息,因此,我们需要在$HADOOP_INSTALL/etc/hadoop目录下提供slaves配置文件,提供slaves主机名列表。格式为每行一条主机名。
hadoop-slave01-vmhadoop-slave02-vmhadoop-slave03-vm
在集群情况下,我们需要使用HDFS的冗余功能,因此副本配置就不像伪分布式模式那样设置为1,我们这里采取了缺省的副本数为3的配置。我们可以配置Secondary NameNode,以提供NameNode的冗余。
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>    <property>        <name>dfs.namenode.secondary.http-address</name>        <value>hadoop-master-vm:50090</value>    </property>    <property>        <name>dfs.replication</name>        <value>3</value>    </property>    <property>        <name>dfs.namenode.name.dir</name>        <value>file:/usr/local/hadoop/tmp/dfs/name</value>    </property>    <property>        <name>dfs.datanode.data.dir</name>        <value>file:/usr/local/hadoop/tmp/dfs/data</value>    </property></configuration>
如果我们选择第二代MapReduce框架Yarn,那么需要修改mapred-site.xml和yarn-site.xml配置文件。在下面的mapred-site.xml配置文件中,我们提供了Job History的配置,以方便用户查询作业的历史信息。
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property>    <property>        <name>mapreduce.jobhistory.address</name>        <value>hadoop-master-vm:10020</value>    </property>    <property>        <name>mapreduce.jobhistory.webapp.address</name>        <value>hadoop-master-vm:19888</value>    </property></configuration>
Yarn的配置文件yarn-site.xml中,我们需要提供ResourceManager的主机名。
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- Site specific YARN configuration properties -->    <property>        <name>yarn.resourcemanager.hostname</name>        <value>hadoop-master-vm</value>    </property>    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property></configuration>

总结

本文介绍的配置均为Hadoop基本配置,了解这些配置能够帮助我们快速的搭建学习和开发环境。如果我们需要配置其它参数,以提供定制化业务或性能调优,由于不同版本之间的配置可能存在差异,则需要参考官方的相关文档。
这里给出了官网提供的这个主要配置文件的详细说明的链接:
http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/core-default.xml
http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
http://hadoop.apache.org/docs/r2.7.3/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
http://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
原创粉丝点击