我最近读了一些关于分布式系统的文章,例如google的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
我不清楚的是谁负责监控主机故障?用户代码已经将控制权交给了分布式系统(master really),只需等待结果。工人节点应该选举新的领导人吗?是否应该有一个休眠节点的优先级列表,不时ping master,如果失败,将启动具有最高优先级(id)的节点?我不知道这是否有任何意义,所以我将感谢您的文章或任何更多的技术性的答案指点。
1条答案
按热度按时间6tqwzwtp1#
我没有文章,但我们先从两个方面来看:
你需要有一个可靠的方法来检测主设备是否真的发生了故障或者网络只是被分区了-没有一个100%可靠的方法来做到这一点
您需要选择一个新的主机,这可以通过您描述的技术来完成,或者为了防止网络分区,您可以使用paxos算法来找到一个新的主机
这两点本身都很复杂,我认为这是mapreduce和gfs论文中没有涉及它们的原因,因为它们关注的是其他方面。
关于mapreduce的开源实现-hadoop-我相信zookeeper负责监视主机并在出现故障时选择一个新的主机。我对hadoop不是百分之百肯定,但我知道giraph(pregel的开源实现)就是这样使用zookeeper的。
所以,要想知道它是如何解决的,你可能需要寻找关于Zookeeper的文件。