- `yarn.env.sh`
```bash
# 添加如下内容:
source /etc/profile
JAVA=$JAVA_HOME/bin/java
JAVA_HEAP_MAX=-Xmx256m
YARN_HEAPSIZE=256 export YARN_RESOURCEMANAGER_HEAPSIZE=256
```
```bash
# 分发 yarn.env.sh 到其他主机
scp_all.sh /usr/local/hadoop/etc/hadoop/yarn-env.sh /usr/local/hadoop/etc/hadoop/
```
- `yarn-site.xml`
```xml
yarn.resourcemanager.address.rm1
nn1:8032
ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等
yarn.resourcemanager.hostname.rm1
nn1
ResourceManager主机名
yarn.resourcemanager.scheduler.address.rm1
nn1:8030
ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。
yarn.resourcemanager.webapp.https.address.rm1
nn1:8089
yarn.resourcemanager.webapp.address.rm1
nn1:8088
ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。
yarn.resourcemanager.resource-tracker.address.rm1
nn1:8031
ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。
yarn.resourcemanager.admin.address.rm1
nn1:8033
ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等
yarn.resourcemanager.address.rm2
nn2:8032
ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等
yarn.resourcemanager.hostname.rm2
nn2
ResourceManager主机名
yarn.resourcemanager.scheduler.address.rm2
nn2:8030
ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资>源等。
yarn.resourcemanager.webapp.https.address.rm2
nn2:8089
yarn.resourcemanager.webapp.address.rm2
nn2:8088
ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。
yarn.resourcemanager.resource-tracker.address.rm2
nn2:8031
ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。
yarn.resourcemanager.admin.address.rm2
nn2:8033
ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等
yarn.resourcemanager.address.rm3
nn3:8032
ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等
yarn.resourcemanager.hostname.rm3
nn3
ResourceManager主机名
yarn.resourcemanager.scheduler.address.rm3
nn3:8030
ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。
yarn.resourcemanager.webapp.https.address.rm3
nn3:8089
yarn.resourcemanager.webapp.address.rm3
nn3:8088
ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。
yarn.resourcemanager.resource-tracker.address.rm3
nn3:8031
ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。
yarn.resourcemanager.admin.address.rm3
nn3:8033
ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等
yarn.resourcemanager.ha.enabled
true
是否开启yarn ha
yarn.resourcemanager.ha.automatic-failover.embedded
true
ha状态切换为自动切换
yarn.resourcemanager.ha.rm-ids
rm1,rm2,rm3
RMs的逻辑id列表
yarn.resourcemanager.zk-address
nn1:2181,nn2:2181,nn3:2181
ha状态的存储地址
yarn.resourcemanager.cluster-id
pseudo-yarn-rm-cluster
集群的Id
yarn.resourcemanager.recovery.enabled
true
默认值为false,也就是说resourcemanager挂了相应的正在运行的任务在rm恢复后不能重新启动
yarn.resourcemanager.store.class
org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
配置RM状态信息存储方式3有两种,一种是FileSystemRMStateStore,另一种是MemoryRMStateStore,还有一种目前较为主流的是zkstore
yarn.resourcemanager.zk.state-store.address
nn1:2181,nn2:2181,nn3:2181
当使用ZK存储时,指定在ZK上的存储地址。
yarn.nodemanager.local-dirs
/data/yarn/local
中间结果存放位置,存放执行Container所需的数据如可执行程序或jar包,配置文件等和运行过程中产生的临时数据
yarn.nodemanager.log-dirs
/data/yarn/logs
Container运行日志存放地址(可配置多个目录)
yarn.nodemanager.address
0.0.0.0:9103
yarn.nodemanager.aux-services
mapreduce_shuffle
NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序
yarn.nodemanager.webapp.address
0.0.0.0:8042
yarn.nodemanager.localizer.address
0.0.0.0:8040
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
mapreduce.shuffle.port
23080
yarn.scheduler.minimum-allocation-vcores
1
单个任务可申请的最小虚拟CPU个数
yarn.scheduler.maximum-allocation-vcores
3
单个任务可申请的最大虚拟CPU个数,此参数对应yarn.nodemanager.resource.cpu-vcores,建议最大为一个物理CPU的数量
yarn.nodemanager.resource.memory-mb
1536
yarn.scheduler.maximum-allocation-mb
1024
单个任务可申请的最多物理内存量
yarn.nodemanager.resource.cpu-vcores
3
该节点上YARN可使用的虚拟CPU个数,一个物理CPU对应3个虚拟CPU
yarn.nodemanager.vmem-check-enabled
false
虚拟内存检测,默认是True
yarn.nodemanager.pmem-check-enabled
false
物理内存检测,默认是True
yarn.application.classpath
$HADOOP_CONF_DIR,
$HADOOP_COMMON_HOME/share/hadoop/common/*,
$HADOOP_COMMON_HOME/share/hadoop/common/lib/*,
$HADOOP_COMMON_HOME/share/hadoop/hdfs/*,
$HADOOP_COMMON_HOME/share/hadoop/hdfs/lib/*,
$HADOOP_COMMON_HOME/share/hadoop/mapreduce/*,
$HADOOP_COMMON_HOME/share/hadoop/mapreduce/lib/*,
$HADOOP_COMMON_HOME/share/hadoop/yarn/*,
$HADOOP_COMMON_HOME/share/hadoop/yarn/lib/*
yarn.cluster.max-application-priority
5
yarn.app.mapreduce.am.staging-dir
/user
yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms
5000
yarn.log-aggregation-enable
true
是否启用日志聚集功能
yarn.nodemanager.remote-app-log-dir
/tmp/app-logs
当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)
yarn.log-aggregation.retain-seconds
1209600
nodemanager上所有Container的运行日志在HDFS中的保存时间,保留半个月
```
```bash
# 分发 yarn-site.xml 到其他主机
scp_all.sh /usr/local/hadoop/etc/hadoop/yarn-site.xml /usr/local/hadoop/etc/hadoop/
```
`mapred-site.xml`
```xml
mapreduce.framework.name
yarn
运行模式
yarn.app.mapreduce.am.resource.mb
1024
MR ApplicationMaster yarn申请的内存量
yarn.app.mapreduce.am.command-opts
-Xmx768m
jvm使用内存
mapreduce.map.memory.mb
1024
每个Map Task yarn申请内存
mapreduce.reduce.memory.mb
1024
每个Reduce Task yarn申请内存
yarn.app.mapreduce.am.resource.cpu-vcores
1
MR ApplicationMaster占用的虚拟CPU个数,此参数对应yarn.nodemanager.resource.cpu-vcores,建议最大为一个物理CPU的数量
mapreduce.reduce.java.opts
-Xmx768m
reduce jvm实际内存
mapreduce.map.java.opts
-Xmx768m
map jvm实际内存
mapreduce.map.cpu.vcores
1
每个map Task需要的虚拟cpu数
mapreduce.reduce.cpu.vcores
1
每个Reduce Task需要的虚拟cpu数
mapreduce.application.classpath
/usr/local/hadoop/etc/hadoop,/usr/local/hadoop/share/hadoop/common/*,/usr/local/hadoop/share/hadoop/common/lib/*,/usr/local/hadoop/share/hadoop/hdfs/*,/usr/local/hadoop/share/hadoop/hdfs/lib/*,/usr/local/hadoop/share/hadoop/mapreduce/*,/usr/local/hadoop/share/hadoop/mapreduce/lib/*,/usr/local/hadoop/share/hadoop/yarn/*,/usr/local/hadoop/share/hadoop/yarn/lib/*,/usr/local/hadoop/lib/*,/usr/local/hbase/lib/*
运行mr程序所使用的虚拟机运行时的classpath
mapreduce.jobhistory.address
nn1:10020
MapReduce JobHistory Server地址
mapreduce.jobhistory.webapp.address
nn1:19888
MapReduce JobHistory Server Web UI地址
mapreduce.jobhistory.intermediate-done-dir
/data/mapred/tmp
MapReduce作业产生的日志存放位置
mapreduce.jobhistory.done-dir
/data/mapred/done
MR JobHistory Server管理的日志的存放位置
mapreduce.job.userlog.retain.hours
48
mapreduce.map.output.compress
true
map是否开启输出压缩
mapreduce.map.output.compress.codec
org.apache.hadoop.io.compress.Bzip2Codec
map输出默认的算法
```
```bash
# 分发 mapred-site.xml 到其他主机
scp_all.sh /usr/local/hadoop/etc/hadoop/mapred-site.xml /usr/local/hadoop/etc/hadoop/
```
**配置capacity-scheduler.xml**
```xml
yarn.scheduler.capacity.root.queues
hainiu,default
yarn.scheduler.capacity.root.hainiu.capacity
80
yarn.scheduler.capacity.root.default.capacity
20
yarn.scheduler.capacity.root.hainiu.maximum-capacity
100
yarn.scheduler.capacity.root.default.maximum-capacity
100
```
```shell
# 分发 capacity-scheduler.xml 到其他主机
scp_all.sh /usr/local/hadoop/etc/hadoop/capacity-scheduler.xml /usr/local/hadoop/etc/hadoop/
```
```shell
#启动yarn,如果已经启动,可以先关闭yarn集群:stop-yarn.sh
start-yarn.sh
#启动历史服务器 ,在 nn1执行
mapred --daemon start historyserver
```