Hadoop优化

1. Hadoop优化

本章中的Hadoop优化将向您解释Hadoop集群优化或MapReduce作业优化技术,这些技术可帮助您优化MapReduce作业性能,以确保Hadoop集群获得最佳性能。

2. Hadoop优化或作业优化技术

有多种方法可以改进Hadoop优化。让我们逐个讨论它们中的每一个 –

2.1 正确配置群集

Dfs和MapReduce存储使用-noatime选项挂载。这会禁用访问时间并可以提高I / O性能。

在TaskTracker和datanode机器上避免使用RAID,它通常会降低性能。

确保已将mapred.local.dir和dfs.data.dir配置为指向每个磁盘上的一个目录,以确保使用所有I / O容量。

确保您具有对磁盘驱动器健康状况的智能监控。这是Hadoop MapReduce性能调优的最佳实践之一。 MapReduce作业具有容错能力,但随着任务必须重新执行,有问题的磁盘会导致性能下降。

使用Ganglia,Hadoop监控指标等软件监控交换使用情况和网络使用情况。如果看到正在使用交换,请减少分配给mapred.child.java.opts中每个任务的RAM数量。

2.2 LZO压缩使用情况

对于中间数据输出来说这是可采用的优化策略。几乎所有生成不可忽略的map输出量的Hadoop作业都将受益于LZO的中间数据压缩。尽管LZO增加了一点CPU的开销,但通过减少shuffle过程中磁盘IO的数量可节省时间。

为了使LZO压缩将mapred.compress.map.output设置为true。这是最重要的Hadoop优化技术之一。

2.3 正确调整MapReduce任务的数量

如果每个任务需要30-40秒或更长时间,则减少任务数量。 mapper或reducer进程的开始涉及以下几个方面:首先,需要启动JVM(将JVM加载到内存中),然后需要初始化JVM,并在处理完后(mapper / reducer)需要对JVM进行初始化。所有这些JVM任务都很昂贵。现在考虑一个映射器只运行20-30秒的情况,为此我们必须考虑启动/初始化/停止JVM的时间,这可能需要相当长的时间。建议至少运行1分钟。

如果一个作业的输入超过1TB,应该考虑将输入数据集的块大小增加到256M甚至512M,这样任务的数量就会减少。您可以使用命令Hadoop distcp -Hdfs.block.size = $ [256 * 1024 * 1024] / path / to / inputdata / path / to / inputdata-with-largeblocks来更改现有文件的块大小。

不要调度过多的reduce任务。

2.4 mapper和reducer之间的合成器

如果您的算法涉及计算任何类型的聚合,则建议在mapper 和reducer之前使用Combiner执行一些聚合。 MapReduce框架运行combiner以减少要写入磁盘的数据量,并且必须在Map和Reduce计算阶段之间进行传输。

2.5 对数据使用最合适和紧凑的可写类型

大数据新用户或从Hadoop Streaming切换到Java MapReduce的用户通常不必要地使用Text可写类型。虽然Text可以很方便,但将数字数据转换为UTF8字符串和从UTF8字符串转换并不是很有效,而且实际上可以占用很大一部分CPU时间。每当处理非文本数据时,请考虑使用IntWritable,FLoatwritable等二进制Writables。

2.6 可重写的再利用

许多MapReduce用户犯的一个常见错误是为mapper或reducer的每个输出分配一个新的Writable对象。例如,要实现一个字数映射器:

public void map(…) {
…
for(String word : words) {
output.collect(newText(word), new IntWritable(1));
}

此实现会导致分配数千个instant 对象。 尽管Java垃圾收集器在处理这个问题上做了合理的工作,但编写如下会更高效:

class MyMapper … {
Text wordText = newText();
IntWritable one = newIntWritable(1);
publicvoid map(…) {
… 
for(String word : words)
{
wordText.set(word);
output.collect(word, one); }
}
}

3. 结论

总结Hadoop优化教程后,我们可以说有各种各样的Job优化技术可以帮助您在MapReduce中优化Job。 像使用映射器和Reducer之间的组合器,通过LZO压缩使用,适当调整MapReduce任务的数量,Reusage可写。

Hadoop优化

发表评论

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

十 × 1 =