从几个角度看hadoop相关参数优化

本文详细探讨了Hadoop的HDFS文件系统和MapReduce的调优策略。在HDFS方面,涉及NameNode和DataNode的配置优化,如增加handler数量、调整块大小和副本数等。而在MapReduce调优中,主要关注Map端和Reduce端的内存使用、磁盘I/O、并发处理能力和数据压缩等方面,通过调整相关参数以提高系统性能。
摘要由CSDN通过智能技术生成

HDFS文件系统调优

  1、系统角度

              存储方式,NameNode采用raid1+0,DataNode采用磁盘组JBOD方式

               在顺序读文件的场景中,比如mapreduce,可以调整文件系统预读缓存的大小。

               文件挂载设置noaptime、nodiratime,提升文件系统的性能

2、hdfs的参数优化

             dfs.namenode.handler.count(默认是10,调大一些64)
             dfs.datanode.handler.count(默认是3,调大一下,8)
             dfs.datanode.max.xcievers(默认是256,设置大一些4096),datanode所允许同时执行的发送和接受任务的数量,类似于linux上的文件句柄限制
             dfs.replication(3)
             dfs.block.size(默认是64M,设置为128M,或者更大)
             dfs.name.dir(多个位置冗余备份,一份在本地,另外一份NFS )
             dfs.data.dir(多个位置分布式存储,尽量多分布几个分区目录)

MapReduce调优

    1、Map端的调优(map>partion sort>spill>merge)

a、对磁盘和内存的影响的角度:

  mapred.local.dir(尽量多分布几个分区目录) 

  io.sort.mb(默认100M,设置成200M),调大,减少对磁盘的影响,不过需要考虑内存的大小

  io.sort.factor(默认是10),增大,可以减少merge时对磁盘的访问次数,不过需要考虑内存的大小
  io.sort.spill.percent(默认是0.8),buffer中达到80%时,进行spill。
  io.sort.record.percent(0.05),用来保存索引数组的百分比(内存Buffer包括两个数组,一个是索引数组,索引数组的每个元素大小是固定的,一个是数据Buffer,索引数组中   包含key value在数据Buffer中的偏移量,便于在spill写本地文件时,一个一个的key value定位写)

  min.num.spill.for.combine(3),如果设定combine函数,且spill文件最少3个时,在merge之前做combine操作,减少数据量,间接减少对磁盘的访问

  mapred.compress.map.output/ Mapred.output.compress(LZO),启用压缩,减少IO的影响,需要考虑CPU的影响
  mapred.child.java.opts(设置成1G)
b、并发处理能力角度

   mapred.job.tracker.handler.count(60),job traker用于处理RPC的线程数
   tasktracker.http.threads(默认是40),tasktracker开启的http服务,用于copy数据
   mapred.tasktracker.map.tasks.maximum(默认是2,一般设为(core_per_node)/2~2*(cores_per_node),目前多为6--8core)
2、reduce端调优(copy->sort>reduce)

a、对磁盘和内存的影响

     io.sort.factor(同map端)

     mapred.job.shuffle.input.buffer.percent(0.7 of reduce heap),类似于map端的io.sort.mb,shuffle最大使用的内存量

     mapred.job.shuffle.merge.percent(0.66 of mapred.job.shuffle.input.buffer.percent),到达这个值时,做merge操作,就flush到磁盘

     mapred.job.reduce.input.buffer.percent(sort完成后reduce计算阶段用来缓存数据的百分比)

b、并发处理能力角度

      mapred.reduce.copy.backoff(reduce下载线程的最大时间,300s)

      mapred.reduce.parallel.copies(shuffle阶段copy线程数,默认是5,可以设置为40),对于map数量较多的场景,可以设置大一点

     mapred.tasktracker.reduce.tasks.maximum(默认是2)

     

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值