文章目录
配置NodeManager
yarn-site.xml
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>8</value>
<discription>每个nodemanager可分配的cpu总核数,默认8个</discription>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
<discription>每个nodemanager可分配的内存总量,默认8g</discription>
</property>
查看集群的逻辑核数命令
cat /proc/cpuinfo | grep "processor" | wc -l
配置 Container
yarn-site.xml
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
<discription>单个任务运行在容器当中,每个container可申请的最小的内存,默认1024MB</discription>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
<discription>单个任务运行在容器当中,每个container可申请最大的内存,默认8192MB</discription>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-vcores</name>
<value>1</value>
<discription>单个任务运行在容器当中,container可申请的最小虚拟CPU个数,默认1个</discription>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>4</value>
<discription>单个任务运行在容器当中,container可申请的最多虚拟CPU个数,默认4个,一般需要修改,因有公司做过测试,可百度</discription>
</property>
注意:
单个Container分配的资源要小于单个NodeManager
配置 mapTask reduceTask
mapred-site.xml
内存
<!-- 2者共进退 -->
<property>
<name>mapreduce.map.memory.mb</name>
<value>1024</value>
<discription> mapTask 从容器中可以请求的最大内存数量,默认1024</discription>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx1024M</value>
<discription>mapTask的运行是在容器当中,容器的创建需要启动jvm,jvm的创建需要堆内存。这个参数来控制最大堆内存数</discription>
</property>
<!-- 2者共进退 -->
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>1024</value>
<discription> reduceTask 从容器中可以请求的最大内存数量,默认1024</discription>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx1024M</value>
<discription> reduceTask 的运行是在容器当中,容器的创建需要启动jvm,jvm的创建需要堆内存。这个参数来控制最大堆内存数</discription>
</property>
CPU
mapreduce.map.cpu.vcores:默认1个
mapreduce.reduce.cpu.vcores:默认1个
配置 ApplicationMaster
mapred-site.xml
<property>
<name>yarn.app.mapreduce.am.resource.cpu-vcores</name>
<value>1</value>
<discription>ApplicationMaster使用的cpu核数,默认1个</discription>
</property>
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>1536</value>
<discription>ApplicationMaster的占用的内存大小,默认1536</discription>
</property>
配置 CPU虚拟核数
CPU虚拟核数什么意思
A服务器,CPU为i7,B服务器,CPU为i3,简单来说,我想把i7的一个CPU核心当做2个用,i3的当做1个用
配置文件:yarn-site.xml
<!--是否将虚拟核数当作CPU核数 默认false-->
<property>
<name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
<value>false</value>
</property>
<!--虚拟核数和物理核数乘数 默认1.0-->
<property>
<name>yarn.nodemanager.resource.pcores-vcores-multiplier</name>
<value>1.0</value>
</property>
<!--A服务器怎么配置-->
<property>
<name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.resource.pcores-vcores-multiplier</name>
<value>2.0</value>
</property>
其它常用参数
Shuffle相关的 | mapreduce.task.io.sort.mb | 环形缓冲区大小,默认100m |
---|---|---|
Shuffle相关的 | mapreduce.map.sort.spill.percent | 环形缓冲区溢出的阈值,默认80% |
Shuffle相关的 | mapreduce.task.io.sort.factor | 在Map 任务完成前,所有的spill 文件将会被归并排序为一个索引文件和数据文件。这是一个多路归并过程,最大归并路数由io.sort.factor 控制(默认是10) |
ReduceTask | mapreduce.reduce.shuffle.input.buffer.percent | ReduceTask拉取过来的数据先缓存到内存,内存中的数据达到多少比例开始写入磁盘。默认值0.7 |
ReduceTask | mapreduce.reduce.input.buffer.percent | ReduceTask的Buffer占堆内存的大小,默认值是0.0 |
容错相关参数 | mapreduce.map.maxattempts | 每个MapTask最大重试次数,一旦重试参数超过该值,则认为MapTask运行失败,默认值:4 |
容错相关参数 | mapreduce.reduce.maxattempts | 每个ReduceTask最大重试次数,一旦重试参数超过该值,则认为MapTask运行失败,默认值:4 |
容错相关参数 | mapreduce.task.timeout | 如果Task在一定时间内既没有读取新的数据,也没有输出数据,则认为该Task可能是卡住了,也许会永远卡住,为了防止这种情况的发生,设置了一个该超时等待时间(单位毫秒),默认是600000 |
虚拟内存相关的 | yarn.nodemanager.vmem-check-enabled | 是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true |
---|---|---|
虚拟内存相关的 | yarn.nodemanager.vmem-pmem-ratio | 虚拟内存和物理内存设置比例,默认2.1 |
调度器相关的 | yarn.resourcemanager.scheduler.class | 选择哪个调度器,apache,默认容量 |
Resourcemanager相关的 | yarn.resourcemanager.scheduler.client.thread-count | resourcemanager负责接待客户端的线程数,默认50。该值最好小于单台服务器总线程数 |