HDFS/Yarn相关设置参数
程序里设置生效
mapreduce.map.memory.mb
一个MapTask可使用的资源上限(单位:MB),默认为 1024。
如果MapTask实际使用的资源量超过该值,则会被强制杀死
mapreduce.reduce.memory.mb
一个ReduceTask可使用的资源上限(单位:MB)默认为 1024。如果
ReduceTask 实际使用的资源量超过该值, 则会被强制杀死
mapreduce.map.cpu.vcores
每个Maptask可使用的最多cpu core数目,默认值: 1
mapreduce.reduce.cpu.vcores
每个Reducetask可使用的最多cpu core数目,默认值: 1
mapreduce.reduce.shuffle.parallelcopies
每个reduce拉取map数据的并行数。默认值是 5
mapreduce.reduce.shuffle.merge.percent
buffer中的数据达到多少比例开始写入磁盘。默认值 0.66
mapreduce.reduce.shuffle.input.buffer.percent
buffer大小占reduce可用内存的比例。默认0.7
mapreduce.job.jvm.numtasks
JVM 重用理解:一个 map 运行一个 jvm, 重用的话, 一个 map 在 jvm 上运行完毕后, jvm 继续运行其他任务。
建议设置在 10-20 之间。
Yarn启动之前设置生效
yarn.scheduler.minimum-allocation-mb | 给应用程序 container 分配的最小内存 |
yarn.scheduler.maximum-allocation-mb | 给应用程序 container 分配的最大内存 |
yarn.scheduler.minimum-allocation-vcores | 每个 container 申请的最小 CPU 核数 |
yarn.scheduler.maximum-allocation-vcores | 每个 container 申请的最大 CPU 核数 |
yarn.nodemanager.resource.memory-mb | 给 containers 分配的最大物理内存 |
Shuffle相关参数
mapreduce.task.io.sort.mb | shuffle 的环形缓冲区大小,默认100M |
mapreduce.map.sort.spill.percent | 环形缓冲区溢出的阈值,默认80% |
任务重试相关参数
mapreduce.map.maxattempts
每个MapTask最大重试次数,一旦重试参数超过该值,则认为 Map Task 运行失败, 默认值:4
mapreduce.reduce.maxattempts
每个ReduceTask最大重试次数,一旦重试参数超过该值,则认为ReduceTask 运行失败, 默认值:4
mapreduce.task.timeout
Task 超时时间, 经常需要设置的一个参数, 该参数表达的意思为:如果一个 task 在一定时间内没有任何进入, 即不会读取新的数据,
也没有输出数据, 则认为该 task可能是卡住了, 为了防止程序永 远 block 住不退出, 则强制设置了一个超时时间(单位毫秒) ,
默认是 600000。如果每条输入数据的处理时间过长(比如会访问数据库,通过网络拉取数据等) , 建议将该参数调大,
该参数 过 小 常 出 现 的 错 误 提 示 是
“ AttemptID:attempt_14267829456721_123456_m _000224_0 Timed out
after 300 secsContainer killedby the ApplicationMaster.” 。
HDFS设置相关参数
dfs.namenode.handler.count
NameNode中用于处理RPC调用的线程数,默认为10。对于较大的集群和配置较好的服务器,可适当增加这个数值
来提升NameNode RPC服务的并发度。服务线程个数,调大一些,一般原则是将其设置为集群大小的自然对数乘
以20,即20logN,N为集群大小。
dfs.datanode.handler.count
DataNode中用于处理RPC调用的线程数,默认为3。可适当增加这个数值来提升DataNode RPC服务的并发度
(推荐值:20)注意:线程数的提高将增加DataNode的内存需求,因此,不宜过度调整这个数值
dfs.replication
数据块的备份数,也有人叫复制因子。默认值为3,对于一些重要数据,可适当增加备份数。
dfs.block.size
数据块设置太小会增加NameNode的压力。数据块设置过大会增加定位数据的时间
dfs.datanode.data.dir
HDFS数据存储目录。将数据存储分布在各个磁盘上可充分利用节点的I/O读写性能。推荐设置多个磁盘目录,以增加磁盘IO的性能,多个目录用逗号进行分隔
hadoop.tmp.dir
Hadoop临时目录,默认为系统目录/tmp。在每个磁盘上都建立一个临时目录,可提高HDFS和MapReduce的I/O效率。这里也推荐设置多个目录。如果你使用的是CDH的话,需要在高级选项的配置中自定义core-site.xml
yarn服务的高级配置代码片段
io.file.buffer.size
HDFS文件缓冲区大小,默认为4096(即4K)。推荐值:131072(128K)。这个得编辑core-site.xml配置文件,
用的CDH的话,直接在YARN服务里修改即可。
fs.trash.interval
HDFS清理回收站的时间周期,单位为分钟。默认为0,表示不使用回收站特性。推荐开启它,时间自己定义,推荐4~7天均可。
dfs.datanode.du.reserved
DataNode保留空间大小,单位为字节。默认情况下,DataNode会占用全部可用的磁盘空间,该配置项可以使
DataNode保留部分磁盘空间,供其他应用程序使用。这个得视具体应用而定,推荐稍微空出点空间,5G~10G均可