Hadoop MapReduce性能调优最佳实践

1. MapReduce性能调优

Hadoop中的性能调优将有助于优化Hadoop集群性能。 它将涵盖7个重要概念,如Hadoop中的内存调优,Hadoop中的mapper磁盘溢出,调优mapper程序任务,大数据hadoop中的推测性执行以及Hadoop MapReduce性能调整的许多其他相关概念。

2. Hadoop MapReduce性能调整

Hadoop性能调优将帮助您优化Hadoop集群性能,并在进行Hadoop编程时提供最佳结果。 要执行相同的操作,需要重复下面给出的过程,直到达到所需输出的最佳方式。

运行作业 – >识别瓶颈 – >解决瓶颈

hadoop性能调优的第一步是运行Hadoop作业,识别瓶颈并使用以下方法解决它们以获得最高性能。 您需要重复上述步骤直到达到性能水平。

3. Hadoop MapReduce性能调优7性能调优技巧

这里我们将讨论如何改进Hadoop MapReduce性能调优。 我们已将这些方式分为两类。

基于Hadoop运行时参数的性能调优。

Hadoop应用程序特定的性能调整。

我们来讨论如何在这两个类别的基础上改进hadoop集群的性能。

调整Hadoop运行时参数

Hadoop在CPU,内存,磁盘和网络上提供了许多选项来进行性能调整。大多数Hadoop任务不受CPU限制,最重要的是优化内存和磁盘溢出的使用。

内存调整

在MapReduce性能调整中调整内存的最一般和最常见的规则是:在不触发交换的情况下尽可能多地使用内存。任务内存的参数是mapred.child.java.opts,可以放在配置文件中。

您还可以使用Ganglia,Cloudera管理器或Nagios监视服务器上的内存使用情况,以获得更好的内存性能。

尽量减少map磁盘溢出

磁盘IO通常是Hadoop中的性能瓶颈。您可以调整很多参数以最小化溢出,如:

压缩映射器输出

Mapper的70%的堆内存用于spill 缓冲区

强烈建议不要溢出,否则需要重新读取并重新写入所有数据;

调整映射器任务

映射器任务的数量是隐含地设置,不像reducer任务。映射器最常用的Hadoop性能调优方法是控制映射器的数量和每个作业的大小。在处理大文件时,Hadoop将文件拆分为更小的块,以便映射器可以并行运行它。但是,初始化新的映射器作业通常需要几秒钟的时间,这也是最小化的开销。以下是对此的建议:

重用jvm任务

目标是每个运行1-3分钟的mapper任务。为此,如果平均映射器运行时间少于一分钟,请增加mapred.min.split.size,以便分配较少的映射器,从而减少映射器初始化开销。

对一堆小文件使用组合文件输入格式。

调整应用程序特定的性能,现在我们来讨论提高Hadoop中应用程序特定性能的技巧。

尽量减少Mapper输出

最大限度减少映射器输出可以提高总体性能,因为这对洗牌阶段的磁盘IO,网络IO和内存敏感性很敏感。

为了实现这一点,以下是建议:

过滤筛选操作在映射器一侧而不是reducer一侧。

使用最少的数据在Map Reduce中形成map输出键和map输出值。

压缩映射器输出

平衡Reduce的负载

不平衡的reduce任务造成另一个性能问题。一些reduce从mapper中获取大部分输出,并且与其他reduce相比运行得非常长。

下面是优化的方法:

在Partitioner类中实现更好的散列函数。

使用MultipleOutputs编写预处理作业以分离key。然后使用另一个map-reduce作业来处理导致问题的特殊键。

使用Hadoop中的combiner减少中间数据

实现一个组合器来减少数据,从而实现更快的数据传输。

推测性执行

当任务花费很长时间来完成执行时,它会影响MapReduce作业。通过在备用机器上启用推测性执行方法正在解决此问题。

您需要将配置参数‘mapreduce.map.tasks.speculative.execution’和‘mapreduce.reduce.tasks.speculative.execution’设置为true以启用推测执行。如果由于内存不可用导致任务进度缓慢,这将减少作业执行时间。

4. Hadoop性能调优:结论

Hadoop集群有几个性能调整技巧和技巧,我们强调了一些重要的技巧。有关提高Hadoop集群性能的更多技巧。

Hadoop MapReduce性能调优最佳实践

发表评论

电子邮件地址不会被公开。 必填项已用*标注

三 + 一 =