Hadoop优化建议

时间:2016-01-01 11:50:37

标签: hadoop

考虑一个场景: 如果我增加HDFS中数据的复制因子;假设在10节点集群中我使RF = 5而不是3(默认值),它是否会提高我的数据处理任务的性能?

与默认复制设置相比,地图阶段会更快完成吗?

对减少阶段会有影响吗?

2 个答案:

答案 0 :(得分:1)

复制对存储的影响:

  • 复制因素对群集的存储有很大影响。很明显:Larger the replication factor, lesser the number of files you can store in the cluster
  • 如果复制因子为5,那么对于每1 GB数据进入群集,您将需要5 GB的存储空间,并且您将很快耗尽群集中的空间。
  • 由于NameNode将所有元信息存储在内存中,因此它将快速运行空间来存储元数据。因此,您的NameNode必须分配更多内存(检查HADOOP_NAMENODE_OPTS)。
  • 数据复制操作将花费更多时间,因为数据复制是跨数据节点进行菊花链连接的。在提交写入/附加之前,现在5个数据节点必须确认数据存储,而不是3个数据节点

复制对计算的影响:

<强>映射器:

  • 使用更高的复制因子,可以有更多选项来安排映射器。如果复制因子为3,则可以在3个不同的节点上安排映射器。但是,如果系数为5,您将有5个选择
  • 您可以通过增加复制因子来获得更好的数据位置。每个映射器都可以在存在数据的同一节点上进行调度(因为现在有5个选项与默认值相比),从而提高了性能。
  • 由于存在更好的数据位置,因此较少数量的映射器将复制节点外或机架外数据

由于这些原因,有可能的是,复制因子越高,映射器可以比复制因子更早完成。

由于映射器的数量通常总是高于减速器的数量,因此您的工作性能可能会有所改善。

<强>减速机:

  • 由于reducer的输出直接写入HDFS,因此缩减器可能需要更多时间才能执行,复制因子更高。

总的来说,您的映射器可以使用更高的复制因子执行得更快。但是,实际的性能提升取决于各种因素,例如群集的大小,带宽,NameNode内存等。

在回答这个问题后,我在SO中遇到了另一个类似的问题:Map Job Performance on cluster。这还包含更多信息,以及各种研究论文的链接。

答案 1 :(得分:0)

将复制因子设置为5将导致HDFS名称节点在群集中的可用数据节点上维护5个文件块的总副本。由namenode执行的此复制操作将导致更高的网络带宽使用,具体取决于要复制的文件的大小和网络的速度。

复制因子在map或reduce阶段没有直接影响。在运行map-reduce作业时,您可能会在复制块时看到最初的性能损失 - 这可能会导致严重的网络延迟,具体取决于文件大小和网络带宽。

群集中的5复制因子意味着4数据节点可能会从群集中消失,并且您仍然有足够的节点可以访问HDFS中的所有文件没有文件损坏或丢失块。如果你的RF = 4那么你可以松开3台服务器并仍然可以访问HDFS中的所有文件。

设置更高的复制因子会增加您的整体HDFS使用率,因此如果您的总数据大小为1TB,则RF = 3意味着您的HDFS使用量将为3TB,因为切断的块重复n-1(3-1 = 2)次整个集群。

相关问题