hadoop有很多配置文件,主要是$HADOOP_HOME/etc/hadoop下面的配置文件,这里对hadoop的主要配置文件做下说明,以后有机会继续补充。
一、hadoop的配置文件
Hadoop有多个配置文件,这里列举最重要的几个,都在$HADOOP_HOME/etc/hadoop目录下。配置目录可以被重新安置在文件系统的其他地方($HADOOP_HOME的外面,以便于升级),只要启动守护进程时使用—config选项(或等价的,使用HADOOP_CONF_DIR环境变量集)说明这个目录在本地文件系统的位置就可以了。
文件名称 | 格式 | 描述 |
---|---|---|
hadoop-env.sh | Bash脚本 | 脚本中要用到的环境变量,以运行Hadoop |
mapred-env.sh | Bash脚本 | 脚本中要用到的环境变量,以运行MapReduce(覆盖hadoop-env.sh中设置的变量) |
yarn-env.sh | Bash脚本 | 脚本中要用到的环境变量,以运行YARN(覆盖hadoop-env.sh中设置的变量) |
core-site.xml | Hadoop配置XML | Hadoop Core的配置项,例如HDFS、MapReduce和YARN常用的I/O设置等 |
hdfs-site.xml | Hadoop配置XML | Hadoop守护进程的配置项,包括namenode、辅助namenode和datanode等 |
mapred-site.xml | Hadoop配置XML | MapReduce守护进程的配置项,包括作业历史服务器 |
yarn-site.xml | Hadoop配置XML | YARN守护进程的配置项,包括资源管理器、web应用代理服务器和节点管理器 |
slaves | 纯文本 | 运行datanode和节点管理器的机器列表(每行一个) |
hadoop-metrics2.properties | Java属性 | 控制如何在Hadoop上发布度量的属性 |
log4j.properties | Java属性 | 系统日志文件、namenode审计日志、任务JVM进程的任务日志的属性 |
hadoop-policy.xml | Hadoop配置XML | 安全模式下运行Hadoop时的访问控制列表的配置项 |
1、hadoop-env.sh
属性 | 含义 |
---|---|
JAVA_HOME | 需要设置Hadoop系统的Java安装的位置。方法一是在hadoop-env.sh文件中设置JAVA_HOME项;方法二是在shell中设置JAVA_HOME环境变量。相比之下,方法一更好,因为只需操作一次就能够保证整个集群使用同一版本的Java。 |
HADOOP_HEAPSIZE | 为各个守护进程分配的内存,单位为MB,如果不设置默认值是1000。 |
HADOOP_LOG_DIR | 系统日志文件存放目录,默认在$HADOOP_HOME/logs。建议修改默认设置,使之独立于Hadoop的安装目录,这样即使Hadoop升级之后安装路径发生变化,也不会影响日志文件的位置。 |
HADOOP_SSH_OPTS | 设置SSH选项。 |
2、mapred-env.sh
属性 | 含义 |
---|---|
3、yarn-env.sh
属性 | 含义 |
---|---|
4、core-site.xml
Hadoop Core的配置项,例如HDFS、MapReduce和YARN常用的I/O设置等。
属性 | 含义 |
---|---|
fs.defaultFS | 描述集群中NameNode节点的URI(包括协议、主机名称、端口号),其主机是NameNode的主机名称或IP地址,端口是NameNode监听RPC的端口,如果没有指定,默认是8020。集群里面的每一台机器都需要知道NameNode的地址,DataNode会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。 |
5、hdfs-site.xml
属性 | 含义 |
---|---|
dfs.namenode.name.dir | 以逗号分隔的目录名称,是NameNode存储永久性的元数据的目录列表。NameNode在列表上的各个目录中均存放相同的元数据文件。例如:file:/data/hadoop/dfs/name |
dfs.datanode.data.dir | 以逗号分隔的目录名称,是DataNode存放数据块的目录列表。各个数据块分别存放在某一个目录中。例如:file:/data/hadoop/dfs/data |
dfs.namenode.checkpoint.dir | 以逗号分隔的目录名称,是辅助NameNode存放检查点的目录列表。在所列每个目录中均存放一份检查点文件的副本。 |
6、mapred-site.xml
属性 | 含义 |
---|---|
7、yarn-site.xml
属性 | 含义 |
---|---|
yarn.resourcemanager.hostname | 运行资源管理器的机器主机名,默认值为0.0.0.0。例如:10.200.4.117 |
yarn.resourcemanager.address | 运行资源管理器的PRC服务器的主机名和端口。例如:10.200.4.117:8032 |
yarn.nodemanager.local-dirs | 逗号分隔的目录名称,是YARN容器本地临时存储空间。当应用结束时,数据被清除。最好将这些目录分散到所有本地磁盘,以提升磁盘I/O操作的效率。通常情况下,YARN本地存储会使用与DataNode数据块存储相同的磁盘和分区(但是不同的目录)。 |
yarn.nodemanager.aux-services | 逗号分隔的服务名称,是节点管理器运行的附加服务列表。每项服务由属性yarn.nodemanager.auxservices.servicename.class所定义的类实现。默认情况下,不指定附加服务。 |
yarn.nodemanager.resource.memorymb | 节点管理器运行的容器可以分配到的物理内存容量(单位是MB)。默认值是8192。 |
yarn.nodemanager.vmem-pmem-ratio | 容器所占的虚拟内存和物理内存之比。该值指示了虚拟内存的使用可以超过所分配内存的量。默认值是2.1。 |
yarn.nodemanager.resource.cpuvcores | 节点管理器运行的容器可以分配到的CPU核数目。 |
8、slaves
属性 | 含义 |
---|---|
9、hadoop-metrics2.properties
属性 | 含义 |
---|---|
10、log4j.properties
属性 | 含义 |
---|---|
11、hadoop-policy.xml
属性 | 含义 |
---|---|
二、配置文件举例
1.coer-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://worker1:9000</value>
<description>设定namenode的主机名及端口</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
<description> 设置缓存大小 </description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.8.5/tmp</value>
<description> 存放临时文件的目录 </description>
</property>
<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
<description> 检查点备份日志最长时间 </description>
</property>
<property>
<name>hadoop.security.authorization</name>
<value>false</value>
</property>
</configuration>
2.hdfs-site.xml(重点核心文件)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>分片数量</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/name</value>
<description>命名空间和事务在本地文件系统永久存储的路径</description>
</property>
<property>
<name>dfs.namenode.hosts</name>
<value>worker1,worker2,worker3</value>
<description>3个datanode</description>
</property>
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
<description>HDFS块大小128M,如果你只有普通网线,就别64M了,没什么用</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/data</value>
<description>DataNode在本地文件系统中存放块的路径</description>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>worker2:50090</value>
<description>secondary namenode设置到woker2</description>
</property>
</configuration>
3.mapred-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>执行框架设置为Hadoop YARN</description>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>1024</value>
<description>maps的资源限制</description>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx512M</value>
<description>maps中jvm child的堆大小</description>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>1024</value>
<description>reduces的资源限制</description>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx512M</value>
<description>reduces jvm child的堆大小</description>
</property>
<property>
<name> mapreduce.jobhistory.address</name>
<value>worker1:10200</value>
<description>设置mapreduce的历史服务器安装在worker1机器上</description>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>worker1:19888</value>
<description>历史服务器的web页面地址和端口号</description>
</property>
</configuration>
4.yarn-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
<description>
常用类:CapacityScheduler、FairScheduler或者FifoScheduler这里使用公平调度
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
</description>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>worker1</value>
<description>指定resourcemanager服务器指向worker1</description>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
<description>配置启用日志聚集功能</description>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
<description>配置聚集的日志在HDFS上保存最长时间</description>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>3096</value>
<description>可使用的物理内存总量</description>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>file://${hadoop.tmp.dir}/nodemanager</value>
<description>列表用逗号分隔</description>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>file://${hadoop.tmp.dir}/nodemanager/logs</value>
<description>列表用逗号分隔</description>
</property>
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>10800</value>
<description>单位为S</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
待续…