0

Apache Hadoop 旨在跨大量商品机器(节点)运行。这不是为在基于云的复杂场景中运行而设计的。但是,由于云允许通过虚拟机模拟单个节点,因此出现了基于云的 Hadoop 集群。但这对我来说是一个理解困难。当我研究 Hadoop 集群的任何标准解释时,它始终是本地架构,因为所有 Hadoop 架构都是根据逻辑和简单的本地视图来解释的。但这给理解基于云的集群如何工作带来了困难——尤其是诸如 HDFS、数据局部性等概念。在本地版本的解释中,每个节点都有自己的“本地”存储(这也意味着存储硬件是固定的一个特定的节点,它不会被洗牌)并且它' s 也不假定该节点曾经被删除。此外,我们将该存储视为节点本身的一部分,因此我们从不考虑终止节点并保留存储以供以后使用。

现在在基于云的 Hadoop(HDInsight) 模型中,我们可以将任何 Azure 存储帐户附加为集群的主存储。那么假设我们有一个包含 4 个工作节点和 2 个头节点的集群,那么单个 Azure 存储帐户充当 6 个虚拟机的 HDFS 空间?再一次,实际的业务数据甚至没有存储在上面——它存储在附加的附加存储帐户上。所以我无法理解如何将其转换为本地 Hadoop 集群?Hadoop集群的核心设计围绕着数据局部性的概念,即数据最接近处理。我知道,当我们创建 HDInsight 群集时,我们会在与附加的存储帐户相同的区域中创建它。但它更像是多个处理单元 (VM) 都共享公共存储,而不是具有自己本地存储的单个节点。可能,只要它能够足够快地访问数据中心中的数据(就像它驻留在本地一样),就应该没有关系。但不确定是不是这样。基于云的模型向我展示了以下图片:-

在此处输入图像描述

有人能准确解释一下 Apache Hadoop 设计是如何转化为基于 Azure 的模型的吗?混淆的原因是存储帐户是固定的,我们可以在任何时候想要指向相同的存储帐户时终止/旋转集群。

4

1 回答 1

1

当 HDInsight 执行其任务时,它会将数据从存储节点流式传输到计算节点。但是 Hadoop 正在执行的许多映射、排序、洗牌和归约任务都是在本地磁盘上完成的,这些本地磁盘与计算节点本身一起驻留。

map、reduce 和 sort 任务通常将在具有最小网络负载的计算节点上执行,而 shuffle 任务将使用一些网络将数据从 mappers 节点移动到较少的 reduce 节点。

将数据存储回存储器的最后一步通常是一个小得多的数据集(例如,查询数据集或报告)。最后,网络在初始和最终流阶段被更频繁地使用,而大多数其他任务都在节点内执行(即最小的网络利用率)。

要了解更多详细信息,您可以查看“为什么在 Azure 上将 Blob 存储与 HDInsight 一起使用”和“ HDInsight 架构”。

于 2020-10-01T14:30:23.363 回答