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