- `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 ```