通过了解hadoop各配置文件的含义,帮助理解job提交到yarn集群失败时的相关排查、以及job提交时相关配置参考。
Hadoop 配置文件分两类:默认配置文件和可配置文件,一般可配置文件生效的优先级大于默认的配置文件。
默认的配置文件存放在 Hadoop 的 jar 包中的位置
[core-default.xml] hadoop-common-3.1.3.jar/core-default.xml
[hdfs-default.xml] hadoop-hdfs-3.1.3.jar/hdfs-default.xml
[yarn-default.xml] hadoop-yarn-common-3.1.3.jar/yarn-default.xml
[mapred-default.xml] hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml
hadoop-env.sh 、 core-site.xml、hdfs-site.xml 、yarn-site.xml、mapred-site.xml主要的五个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。
配置 | 说明 |
---|---|
hadoop-env.sh | 定义hadoop运行环境的相关配置,比如:JAVA_HOME环境变量、hadoop的JVM指定特定的选项、指定日志文件所在的目录路径、master和slave文件的位置等. |
core-site.xml | 定义系统级别的参数,如HDFS URL、Hadoop的临时目录、用于rack-aware集群中的配置文件的配置等。优先级高于core-default.xml。 |
hdfs-site.xml | HDFS的相关设定,如文件副本的个数、块大小及是否使用强制权限等。优先级高于hdfs-default.xml。 |
yarn-site.xml | Yarn的相关配置 |
mapred-site.xml | 如reduce任务的默认个数、任务所能够使用内存的默认上下限等;优先级高于mapred-default.xml |
注意:Hadoop2.x和Hadoop3.x的自定义配置文件有一些改变
Hadoop2.x:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves
Hadoop3.x:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers
核心全局配置文件
配置 | 说明 |
---|---|
hadoop.tmp.dir |
其他临时目录的父目录
属性会影响nn/snn中的元数据与datanode中的数据文件存放位置。见下面hdfs-site.xml中的描述。
例子:/usr/local/data/hadoop/tmp
|
fs.defaultFS |
默认文件系统的名称。通常指定namenode的URI地址,包括主机和端口
例子:hdfs://hadoop-alone:9000
|
io.file.buffer.size |
在序列文件中使用的缓冲区大小,是页大小
例子:4096
|
ha.zookeeper.quorum |
zk集群,数量是奇数,且不少于三个节点
hadoop1:2181,hadoop2:2181,hadoop3:2181
|
配置 | 说明 |
---|---|
dfs.replication |
副本数量。例子:3
|
dfs.blocksize |
块大小。例子:268435456
|
dfs.namenode.name.dir |
存放nn元数据(fsimage)目录,如果是目录列表,则用于冗余;
例子:file://${hadoop.tmp.dir}/dfs/name
|
dfs.datanode.data.dir |
dn块目录,如果是目录列表,则数据将存储在所有命名的目录中,通常存储在不同的设备上
例子:file://${hadoop.tmp.dir}/dfs/data
|
dfs.namenode.http-address |
nn服务器server;0.0.0.0:50070
|
dfs.namenode.secondary.http-address |
snn服务器server;0.0.0.0:50090
|
dfs.permissions |
false
|
dfs.permissions.enabled |
false
|
dfs.nameservices |
hdfs集群名字;
例子:hadoop-cluster1
|
配置 | 说明 |
---|---|
yarn.resourcemanager.hostname | RM的hostname |
yarn.resourcemanager.address |
RM对客户端暴露的地址,客户端通过该地址向RM提交应用程序等
${yarn.resourcemanager.hostname}:8032
|
yarn.resourcemanager.scheduler.address |
RM对AM暴露的地址,AM通过地址向RM申请资源,释放资源等
${yarn.resourcemanager.hostname}:8030
|
yarn.resourcemanager.webapp.address |
RM对外暴露的web http地址,用户可通过该地址在浏览器中查看集群信息
${yarn.resourcemanager.hostname}:8088
|
yarn.resourcemanager.webapp.https.address |
web https 地址
${yarn.resourcemanager.hostname}:8090
|
yarn.resourcemanager.resource-tracker.address |
RM对NM暴露地址,NM通过该地址向RM汇报心跳,领取任务等
${yarn.resourcemanager.hostname}:8031
|
yarn.scheduler.minimum-allocation-mb |
可申请的最少内存资源,以MB为单位;例子:1024
|
yarn.scheduler.maximum-allocation-mb |
可申请的最大内存资源,以MB为单位;例子:8192
|
yarn.nodemanager.resource.memory-mb |
NM总的可用物理内存,以MB为单位。一旦设置,不可动态修改;例子:8192
|
yarn.nodemanager.resource.cpu-vcores |
可分配的CPU个数;例子:8
|
yarn.nodemanager.aux-services |
NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序。YARN 集群为 MapReduce 程序提供的 shuffle 服务;
例子:mapreduce_shuffle
|
配置 | 说明 |
---|---|
mapreduce.framework.name | 配置资源调度框架;例子yarn |