1.目的

本Hadoop教程将帮助您了解Hadoop机架感知概念,Hadoop环境中的机架,为什么需要机架感知,Hadoop中的副本放置策略以及通过机架感知实现Hadoop中的副本放置策略以及在Hadoop HDFS中实施机架感知的优势。

2.什么是Hadoop HDFS中的机架感知?

在大量Hadoop集群中,为了在读/写HDFS文件时改善网络流量,namenode选择更靠近相同机架或附近机架的datanode来读/写请求。 Namenode通过维护每个数据节点的机架号来实现机架信息。 这种基于机架信息选择更紧密的datanode的概念在Hadoop中称为机架感知(Rack Awareness)。

机架感知掌握了集群拓扑的知识,更具体地说,不同的数据节点是如何分布在Hadoop集群的机架上的。 默认Hadoop安装假定所有数据节点都属于同一个机架。

3.为什么要提高机架感知

在大数据Hadoop中,由于以下原因需要机架感知:

提高数据的高可用性和可靠性。

提高集群的性能。

提高网络带宽。

尽管机架故障的机会远远小于节点故障,但如果整个机架出现故障,为了避免丢失数据。

尽可能将批量大数据保存在机架中。

假定机架内节点具有较高的带宽,较低的延迟。

4.通过Hadoop中的机架感知进行副本放置

放置副本对于确保HDFS的高可靠性和性能至关重要。 通过机架识别优化副本放置将HDFS与其他分布式文件系统区分开来。 使用如下策略完成HDFS中多个机架中的块复制:

“在一个节点上放置不超过一个副本。 不超过两个副本放置在同一个机架上。 这有一个限制,即用于块复制的机架数应该少于块副本总数“。

例如:

创建新块时:第一个副本放置在本地节点上。第二个放置在不同的机架上,第三个放置在本地机架上的不同节点上。

重新复制块时,如果现有副本的编号是1,请将第二个副本放在不同的机架上。如果现有副本的数量是两个,并且两个现有副本位于同一个机架上,则第三个副本将放置在不同的机架上。

一个简单但不是最佳的策略是将副本放置在不同的机架上。这样可以防止整个机架出现故障时丢失数据,并允许我们在读取数据时使用多个机架的带宽。此策略在集群中的副本之间均匀分配数据,以便在组件故障时能够轻松平衡负载。但是这种策略的最大缺点是会增加写入操作的成本,因为写入者需要将块传输到多个机架,并且不同机架中的两个节点之间的通信必须通过交换机。

在大多数情况下,同一机架中机器之间的网络带宽大于不同机架中机器之间的网络带宽。这就是我们使用复制品替换策略的原因。机架故障的可能性远小于节点故障。它不影响数据可靠性和可用性保证。但是,它确实会减少读取数据时使用的总体网络带宽,因为块副本仅放置在两个唯一的机架中,而不是三个。

4.1 性能如何?

更快的复制操作:由于副本放置在同一个机架内,它将使用更高的带宽和更低的延迟,从而使其更快。

如果YARN无法在查询数据所在的同一数据节点中创建容器,它将尝试在同一机架内的数据节点中创建容器。由于相同机架内的数据节点具有更高的带宽和更低的延迟,这将更具性能。

5. 实现机架感知的优势

最大限度地降低写入成本并最大限度地提高读取速度 – 机架感知可将读取/写入请求放置在相同或附近机架上的复制副本上。从而最大限度地降低写作成本并最大化阅读速度。

提供最大的网络带宽和低延迟 – 机架感知通过机架内的块传输最大化网络带宽。尤其是在机架感知的情况下,YARN能够优化MapReduce工作性能。它根据网络拓扑将任务分配给与其数据“更接近”的节点。如果不能将任务分配给数据存储在本地的节点,这尤其有用。

针对机架故障的数据保护 – 默认情况下,namenode将块的第二个和第三个副本分配给与第一个副本不同的机架中的节点。即使机架出现故障,也可提供数据保护;然而,只有在配置了Hadoop的机架配置知识的情况下才有可能。

 



关注微信服务号,手机看文章
关注微信服务号,手机看文章