Apache Hadoop 旨在跨大量商品机器(节点)运行。这不是为在基于云的复杂场景中运行而设计的。但是,由于云允许通过虚拟机模拟单个节点,因此出现了基于云的 Hadoop 集群。但这对我来说是一个理解困难。当我研究 Hadoop 集群的任何标准解释时,它始终是本地架构,因为所有 Hadoop 架构都是根据逻辑和简单的本地视图来解释的。但这给理解基于云的集群如何工作带来了困难——尤其是诸如 HDFS、数据局部性等概念。在本地版本的解释中,每个节点都有自己的“本地”存储(这也意味着存储硬件是固定的一个特定的节点,它不会被洗牌)并且它' s 也不假定该节点曾经被删除。此外,我们将该存储视为节点本身的一部分,因此我们从不考虑终止节点并保留存储以供以后使用。
现在在基于云的 Hadoop(HDInsight) 模型中,我们可以将任何 Azure 存储帐户附加为集群的主存储。那么假设我们有一个包含 4 个工作节点和 2 个头节点的集群,那么单个 Azure 存储帐户充当 6 个虚拟机的 HDFS 空间?再一次,实际的业务数据甚至没有存储在上面——它存储在附加的附加存储帐户上。所以我无法理解如何将其转换为本地 Hadoop 集群?Hadoop集群的核心设计围绕着数据局部性的概念,即数据最接近处理。我知道,当我们创建 HDInsight 群集时,我们会在与附加的存储帐户相同的区域中创建它。但它更像是多个处理单元 (VM) 都共享公共存储,而不是具有自己本地存储的单个节点。可能,只要它能够足够快地访问数据中心中的数据(就像它驻留在本地一样),就应该没有关系。但不确定是不是这样。基于云的模型向我展示了以下图片:-
有人能准确解释一下 Apache Hadoop 设计是如何转化为基于 Azure 的模型的吗?混淆的原因是存储帐户是固定的,我们可以在任何时候想要指向相同的存储帐户时终止/旋转集群。