hadoop优化

    1. 数据输入
      • 合并小文件,大量小文件会产生大量的map任务,增大Map任务装载次数
      • 采用CombineTextImputFormat来作为输入,解决输入端大量小文件场景
    2. Map阶段
      • 减少溢写(spill)次数  通过调整io.sort.mb及sort.spill.percent参数值,增大触发Spill的内存上限,减少Spill次数,从而减少磁盘IO。
      • 减少合并(Merge)次数  通过调整io.sort.factor参数,增大Merge的文件数目,减少Merge的次数,从而缩短MR处理时间。
      • 在Map之后,不影响业务逻辑前提下,先进行Combine处理,减少I/O
    3. Reduce阶段
      • 合理设置Map和Reduce数  两个都不能设置太少,也不能设置太多。太少,会导致Task等待,延长处理时间;太多,会导致Map、Reduce任务间竞争资源,造成处理超时等错误
      • 设置Map、Reduce共存  调整slowstart.completedmaps参数,使Map运行到一定程度后,Reduce也开始运行,减少Reduce的等待时间。
      • 规避使用Reduce  因为Reduce在用于连接数据集的时候将会产生大量的网络消耗。
      • 合理设置Reduce端的Buffer  默认情况下,数据达到一个阈值的时候,Buffer中的数据就会写入磁盘,然后Reduce会从磁盘中获得所有的数据。也就是说,Buffer和Reduce是没有直接关联的,中间多次写磁盘>读磁盘的过程,既然有这个弊端,那么就可以通过参数来配置,使得Buffer中的一部分数据可以直接输送到Reduce,从而减少IO开销:mapreduce.reduce.input.buffer.percent,默认为0.0。当值大于0的时候,会保留指定比例的内存读Buffer中的数据直接拿给Reduce使用。这样一来,设置Buffer需要内存,读取数据需要内存,Reduce计算也要内存,所以要根据作业的运行情况进行调整。
    4. I/O传输
      • 采用数据压缩的方式,减少网络IO的的时间。安装smappy和LZO压缩编码器
      • 使用SequenceFile二进制文件。
    5. HDFS小文件优化
      • 在数据采集的时候,就将小文件或小批数据合成大文件在上传HDFS
      • 在业务处理之前,在HDFS上使用MapReduce程序对小文件进行合并
      • 在MapReduce处理时,可采用CombineTextInputFormat提高效率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值