Data locality in Hadoop

1. Hadoop中的数据本地性 – 目标

在Hadoop中,数据局部性是将计算靠近实际数据驻留的节点上的过程,而不是将大数据移动到计算。这可以最大限度地减少网络拥塞并提高系统的整体吞吐量。我们将在本节中详细讨论Hadoop的这一特性。我们将了解Hadoop中的数据局部性,数据局部性定义,Hadoop如何利用数据局部性,Hadoop数据局部性的需求,Hadoop MapReduce中的各种类型的数据局部性,Hadoop中的数据局部性优化以及Hadoop数据局部性的各种优点。

2. Hadoop中的数据局部性概念

让我们了解数据局部性概念以及MapReduce中的数据局部性是什么?

由于数据量巨大,Hadoop的主要缺点是交叉交换网络流量。 为了克服这个缺点,Hadoop中的数据局部性出现了。 MapReduce中的数据局部性是指将计算靠近实际数据驻留在节点上的能力,而不是将大数据移动到计算。 这可以最大限度地减少网络拥塞并提高系统的整体吞吐量。

在Hadoop中,数据集存储在HDFS中。 数据集被分成块并存储在Hadoop集群中的datanode中。 当用户运行MapReduce作业时,NameNode将此MapReduce代码发送到与MapReduce作业相关的数据可用的数据节点。

3.对Mapreduce中的数据局部性的要求

我们的系统架构需要满足以下条件,才能从数据局部性的所有优点中受益:

首先,集群应具有适当的拓扑结构。 Hadoop代码必须具有读取数据本地性的能力。

其次,Hadoop必须知道执行任务的节点的拓扑结构。 Hadoop必须知道数据的位置。

4. Hadoop中的数据区域类别

以下是Hadoop中的数据位置分类的各种类别:

4.1  Hadoop中的数据本地数据位置

当数据位于与处理数据的映射器相同的节点上时,它被称为数据本地数据局部性。在这种情况下,数据的接近性非常接近计算。这是最受欢迎的场景。

4.2 Hadoop中的机架内数据局部性 Intra-Rack

由于资源限制,并不总是可以在相同的数据节点上执行映射器。在这种情况下,最好在不同的节点上运行映射器,但在同一个机架上运行映射器。

4.3 Hadoop中的机架间数据局部性 Inter-Rack

由于资源限制,有时无法在同一机架的不同节点上执行映射器。在这种情况下,我们将在不同机架上的节点上执行映射器。这是最不推荐的场景。

5. Hadoop数据局部性优化

虽然Hadoop MapReduce中的数据局部性是Hadoop MapReduce的主要优点因为map代码是在数据所在的同一数据节点上执行的。但由于Hadoop中的 speculative execution,异构集群,数据分配和布局以及数据布局和输入 split等各种原因,实际上并非总是如此

数据本地性的挑战在大型集群中变得越来越普遍,因为数据节点和数据的数量越多,数据本地性就越少。在较大的集群中,某些节点比另一个节点更新更快,从而导致数据计算比率失衡,因此大型集群趋向于不完全同质。在推测执行中,尽管数据可能不是本地的,但它使用更加强大的计算能力。根本原因还在于数据布局和使用的输入split。非本地数据处理会给网络带来压力,从而给可扩展性带来问题。因此,网络成为瓶颈。

我们可以通过首先检测哪些作业具有数据局部性问题。解决问题更复杂,涉及到使用不同的调度程序或通过简单地更改作业的映射器和reducer的数量来更改数据位置和数据布局。然后我们必须验证相同工作负载的新执行是否具有更好的数据局部性比率。

6. Hadoop数据局部性的优点

MapReduce中的数据局部性有两个好处。

6.1 执行速度更快

在数据局部性中,程序移动到数据所在的节点,而不是将大数据移动到节点,这使得Hadoop更快。由于程序的大小总是小于数据的大小,移动数据是网络传输的瓶颈。

6.2高吞吐量

数据局部性增加了系统的整体吞吐量。

7. Hadoop中的数据局部性 – 总结

总之,我们可以说,数据本地化改进了系统的整体执行并使Hadoop更快。它减少了网络拥塞。

Data locality in Hadoop

发表评论

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

× 九 = 45