vlambda博客
学习文章列表

HDFS/Yarn相关设置参数


01

程序里设置生效


  • 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 之间。


02

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 分配的最大物理内存


03

Shuffle相关参数


mapreduce.task.io.sort.mb shuffle 的环形缓冲区大小,默认100M
mapreduce.map.sort.spill.percent

环形缓冲区溢出的阈值,默认80%


04

任务重试相关参数


  • 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.” 。


05

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均可