代码块
本人使用的是hadoop-2.7.3
若是简单启动hadoop,无特别要求以下配置即可
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
完整yarn-site.xml的配置要理解各参数的准确含义后,针对自己的要求更改配置
参数 | 默认值 | 描述 |
---|---|---|
yarn.resourcemanager.hostname | RM的hostname | |
yarn.resourcemanager.address | ${yarn.resourcemanager.hostname}:8032 | RM对客户端暴露的地址,客户端通过该地址向RM提交应用程序等 |
yarn.resourcemanager.scheduler.address | ${yarn.resourcemanager.hostname}:8030 | RM对AM暴露的地址,AM通过地址想RM申请资源,释放资源等 |
yarn.resourcemanager.webapp.address | ${yarn.resourcemanager.hostname}:8088 | RM对外暴露的web http地址,用户可通过该地址在浏览器中查看集群信息 |
yarn.resourcemanager.webapp.https.address | ${yarn.resourcemanager.hostname}:8090 | web https 地址 |
yarn.resourcemanager.resource-tracker.address | ${yarn.resourcemanager.hostname}:8031 | RM对NM暴露地址,NM通过该地址向RM汇报心跳,领取任务等 |
yarn.resourcemanager.resource-tracker.client.thread-count | 50 | 处理来自NM的RPC请求的handler数 |
yarn.resourcemanager.admin.address | ${yarn.resourcemanager.hostname}:8033 | 管理员可以通过该地址向RM发送管理命令等 |
yarn.resourcemanager.scheduler.class | ||
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler | 资源调度器主类 | |
yarn.resourcemanager.scheduler.client.thread-count | 50 | 处理来自AM的RPC请求的handler数 |
yarn.scheduler.minimum-allocation-mb | 1024 | 可申请的最少内存资源,以MB为单位 |
yarn.scheduler.maximum-allocation-mb | 8192 | 可申请的最大内存资源,以MB为单位 |
yarn.scheduler.minimum-allocation-vcores | 1 | 可申请的最小虚拟CPU个数 |
yarn.scheduler.maximum-allocation-vcores | 32 | 可申请的最 大虚拟CPU个数 |
yarn.nodemanager.local-dirs | ${hadoop.tmp.dir}/nm-local-dir | 中间结果存放位置,可配置多目录 |
yarn.log-aggregation-enable | false | 是否启用日志聚合 |
yarn.nodemanager.remote-app-log-dir | /tmp/logs | 日志聚合目录 |
yarn.nodemanager.resource.memory-mb | 8192 | NM总的可用物理内存,以MB为单位。一旦设置,不可动态修改 |
yarn.nodemanager.resource.cpu-vcores | 8 | 可分配的CPU个数 |
yarn.nodemanager.vmem-check-enabled | true | 虚拟内存检查 |
yarn.nodemanager.vmem-check-enabled | true | 物理内存检查 |
mapreduce.map.memory.mb | 这个参数指定用于Map任务(Map task)的内存大小,其值应该在ResourceManager中的最大最小container之间。如果没有配置则通过如下简单公式获得:max(MIN_CONTAINER_SIZE, (Total Available RAM) / containers)) | |
mapreduce.reduce.memory.mb | 这个参数指定用于Reduce任务(Reduce task)的内存大小,其值应该在ResourceManager中的最大最小container之间。如果没有配置则通过如下简单公式获得:max(MIN_CONTAINER_SIZE, (Total Available RAM) / containers)) | |
yarn.nodemanager.vmem-pmem-ratio | 2.1 | 物理内存与虚拟内存的比率 |
yarn.nodemanager.aux-services | NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 |
由于更改集群配置比较麻烦,且容易出错
建议一些经常变动的配置不要在yarn-site.xml中配置 ,例如:
yarn.nodemanager.vmem-check-enabled
yarn.nodemanager.vmem-pmem-ratio
mapreduce.map.memory.mb
mapreduce.reduce.memory.mb
yarn.log-aggregation-enable
......
类似这些控制、监控container内存使用和mapreduce任务运行的资源分配,以及日志合并的变量可以在使用是随时更改,例如在hive中:
hive > set mapreduce.map.memory.mb;
mapreduce.map.memory.mb=4096
hive > set mapreduce.reduce.memory.mb;
mapreduce.reduce.memory.mb=4096
hive > set yarn.nodemanager.vmem-pmem-ratio;
yarn.nodemanager.vmem-pmem-ratio=4.2