apachehadoop被设计成在一堆商品机器(节点)上运行。这不是为在基于云的复杂场景中运行而设计的。但是,由于云允许通过vms模拟单个节点,基于云的hadoop集群应运而生。但这给我带来了理解上的困难。当我研究hadoop集群的任何标准解释时,它总是在prem体系结构上,因为所有hadoop体系结构都是用逻辑和简单的prem视图来解释的。但这给理解基于云的集群如何工作带来了困难——尤其是hdfs、数据局部性等概念。在on prem版本的解释中,每个节点都有自己的“本地”存储(这也意味着存储硬件是为特定节点固定的,它不会被洗牌),而且也不会假设节点曾经被删除。此外,我们将该存储视为节点本身的一部分,因此我们从不考虑杀死节点并保留存储以供以后使用。
现在在基于云的hadoop(hdinsight)模型中,我们可以附加任何azure存储帐户作为集群的主存储。因此,假设我们有一个包含4个工作节点和2个头节点的集群,那么单个azure存储帐户将充当6个虚拟机的hdfs空间?再说一次,实际的业务数据甚至不存储在上面--而是存储在附加的存储帐户上。所以我无法理解这是如何在prem hadoop集群上转换的?hadoop集群的核心设计围绕着数据局部性的概念,即数据最接近于处理。我知道当我们创建hdinsight集群时,我们会在与所连接的存储帐户相同的区域中创建它。但它更像是多个处理单元(vm),它们都共享公共存储,而不是使用各自本地存储的单个节点。可能,只要它能够足够快地访问数据中心中的数据(就好像它驻留在本地一样),就不重要了。但不确定是不是这样。基于云的模型向我展示了以下图片:-
有人能解释一下apachehadoop设计是如何被转换成基于azure的模型的吗?这种混乱源于这样一个事实:存储帐户是固定的,我们可以随时终止/旋转集群,指向相同的存储帐户。
1条答案
按热度按时间pgvzfuti1#
当hdinsight执行其任务时,它将数据从存储节点流式传输到计算节点。但是hadoop执行的许多map、sort、shuffle和reduce任务都是在计算节点本身所在的本地磁盘上完成的。
map、reduce和sort任务通常将在网络负载最小的compute节点上执行,而shuffle任务将使用一些网络将数据从mappers节点移动到reduce较少的节点。
将数据存储回存储器的最后一步通常是更小的数据集(例如查询数据集或报表)。最后,在初始和最终流阶段期间,网络被更充分地利用,而大多数其他任务在节点内执行(即,最小网络利用率)。
要了解更多详细信息,您可以查看“为什么在azure上使用带有hdinsight的blob存储”和“hdinsight体系结构”。