什么是无状态节点?Hadoop节点是如何无状态的



无状态节点是否意味着彼此独立?你能向hadoop 解释这个w.r.t概念吗

解释如下:每个映射器/还原器都不知道所有其他映射器/减速器(即它们的当前状态、它们的特定输出(如果有的话)等)。这种无状态状态对某些数据处理工作负载(如图数据)来说不太好,但允许轻松并行化(特定的map/reduce任务可以在任何节点上运行,这意味着失败的mapper/reduce不是问题,只需在相同的输入split/mappers的输出上启动一个新任务即可)。

我想说,计算基础设施中节点的状态性与您定义的含义略有不同。请记住,总是有协调过程在某个地方运行,所以节点之间没有完全的独立性。

它在计算基础设施中的实际含义是,节点不存储任何关于它们在持久存储上执行的计算的信息。考虑以下情况,您在一些机器上运行master,将任务委派给工作人员,工作人员在RAM中维护信息,并在任务计算需要时从RAM中检索信息。工作人员还将结果写入RAM。您可以将工作节点视为无状态,因为无论何时工作节点出现故障(例如断电),它都不会有任何机制允许它从停止的点恢复执行。但master仍然会知道节点出现故障,并将任务委派给群集中的另一台机器。

关于Hadoop,首先,体系结构是有状态的,因为每当作业开始执行时,它都会将所有元数据传输到工作节点(jar文件、拆分位置等)。其次,当作业被安排在不包含输入数据的节点上时,它将被转移到那里。此外,中间数据正是出于故障恢复的原因而存储在磁盘上的,因此故障恢复机制可以从停止执行的点开始恢复作业。