分布式系统 - 主故障

时间:2014-02-06 17:46:42

标签: hadoop mapreduce distributed failover master

我最近在分布式系统上阅读了一些内容,例如谷歌的MapReduce和GSF研究论文。这两个系统都依赖于存在Master节点的事实,该节点协调其他“工作”节点。我想知道设计师如何保护自己免受主故障的影响?在MapReduce论文中我们可以阅读:

It is easy to make the master write periodic checkpoints of the master data structures described above. 
If the master task dies, a new copy can be started from the last checkpointed state

我不清楚WHO是否负责监控主故障?用户代码已经控制了分布式系统(Master),只是等待结果。工人节点应该选出新的领导者吗?是否应该有一个休眠节点的优先级列表,不时地ping主节点,如果发生故障,优先级最高的节点(ID)会启动?我不确定这是否有任何意义,所以我会感激指向文章或更多技术答案。

1 个答案:

答案 0 :(得分:2)

我没有文章,但让我们首先从两个方面来看待它:

  1. 你需要有一种可靠的方法来检测主人是否真的失败了,或者网络是否只是分区 - 没有100%可靠的方法来做到这一点
  2. 您需要选择一个新的主人,这可以使用您描述的技术完成,或者为了防止网络分区,您可以使用paxos算法查找新主人
  3. 这两点本身都很复杂,我认为这是MapReduce和GFS论文中没有涉及的原因,因为那些都集中在其他方面。

    转到MapReduce的开源实现 - Hadoop - 我相信Zookeeper正在处理监视主服务器的任务,并在发生故障时选择新的主服务器。我并不是100%肯定Hadoop,但我知道Giraph(pregel的开源实现)正是以这种方式使用Zookeeper。

    所以要看看它是如何解决的,你可能想找一些关于Zookeeper的论文。