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集群性能的更多技巧。