Hadoop性能调优--用户角度

本文从用户角度出发,详细介绍了Hadoop性能调优的方法,包括程序编写规范,如设置Combiner和选择合适的Writable类型;作业级别的参数调整,如任务数目规划、启用推测执行机制和设置失败容忍度;以及任务级别的参数优化,如MapTask和ReduceTask的调优。通过这些策略,可以显著提升Hadoop作业的执行效率。
摘要由CSDN通过智能技术生成
hadoop为用户作业提供了多种可配置的参数,以允许用户根据作业特点调整这些值
使作业运行效率达到最优。

程序编写规范

(1)设置Combiner

如果是一大批MR程序,如果可以设置一个Combiner,Combiner可减少Map Task中间输出结果,从而减少各个Reduce Task的远程拷贝数据

量,最终表现为Map Task和Reduce Task执行时间缩短。

(2)选择合理的Writable类型

在MR模型中,Map Task和Reduce Task的输入和输出数据类型均为Writable。
为应用程序处理的数据类型选择合适的Writable类型可大大提升性能。比如处理整型数据时,直接采用IntWritable比先
以Text类型读入再转换成整型要高效。吐过如果输出的整型大部分可用一个或者两个字节保存,那么可直接采用VIntWritable或者
VLongWritable。它们采用了变长整型编码方式,可大大减少输出数据量。

作业级别参数调优

1.规划合理的任务数目

一个作业的任务数目对作业运行时间有重要的影响。如果一个作业的任务数目过多
(这意味着每个任务处理数据很少,执行时间很短),则任务启动时间所占比例将会大大增加;反之,如果一个
作业的任务数目过少(这意味着每个任务处理数据很多,执行时间很长),则可能会产生过多的溢写数据影响任务
执行性能,且任务失败后重新计算代价过大。
在hadoop中,每个Map Task处理一个Input Split。Input Split的划分方式
是由用户自定义的InputFormat决定的,默认情况下,由以下三个配置参数
决定:
mapred.min.split.size:Input Split的最小值(在mapred-site.xml中配置)
mapred.max.split.size:Input Split的最大值(在mapred-site.xml中配置)
dfs.block.size:HDFS中一个block大小(在hdfs-site.xml中配置)

每个作业的Reduce Task数目通常由用户决定。
用户可根据估算的Map Task输出数据量设置Reduce Task数目,以防止每个
Reduce Task处理的数据量过大造成大量写磁盘操作。

2.增加输入文件副本数

如果一个作业并行执行的任务数量非常多,
为防止多个任务并行读取一个文件内容造成瓶颈,用户可根据需要增加输入
文件的副本数目。用户可通过在客户端配置hdfs-site.xml中增加以下配置
选项修改文件副本数,比如将客户端上传的所有数据副本数设置为5:
<property>
   <name>dfs.replication</name>
   <value>5</value>
</proper
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值