无状态节点是否意味着彼此独立?你能解释这个概念w.r.t到hadoop
答案 0 :(得分:1)
我想说计算基础设施中节点的状态与你定义的意义略有不同。请记住,总会有协调进程在某处运行,因此节点之间没有完全独立。
计算基础架构实际上意味着节点不会存储有关它们在持久存储上执行的计算的任何信息。考虑以下情况,您可以在某台机器上运行master,将任务委派给工作人员,工作人员将信息保存在RAM中,并在必要时从RAM中检索任务计算。工人还将结果写入RAM。您可以将工作节点视为无状态,因为每当工作节点发生故障(例如断电)时,它就不会有任何机制允许它从已停止的点恢复执行。但是master仍然会知道节点已经失败,并且会将任务委托给集群中的另一台机器。
关于Hadoop,架构是有状态的,首先,因为每当作业开始执行时,它都会将所有元数据传输到工作节点(jar文件,拆分位置等)。其次,当作业在不包含输入数据的节点上进行调度时,它将被转移到那里。此外,中间数据存储在磁盘上,完全是出于故障恢复的原因,因此故障恢复机制可以从执行停止的点恢复作业。
答案 1 :(得分:1)
解释如下:每个映射器/缩减器都不知道所有其他映射器/缩减器(即关于它们的当前状态,它们的特定输出,如果有的话等)。这种无状态对于某些数据处理工作负载(例如图形数据)并不是很好,但允许轻松并行化(特定的map / reduce任务可以在任何节点上运行,这意味着失败的映射器/减速器不是问题,只需启动一个新的相同的输入分割/映射器输出)。