Piccolo: Building Fast, Distributed Programs with Partitioned Tables
2010年的文章,许多分布式技术放在现在不算是什么,所以似乎也没啥好写的。 看上去Spark似乎可以完全取代这个系统,并且还支持比较细粒度的fault-tolerant。
这个分布式系统对标的是MPI,解决的也是使用MPI要解决的问题,比如PageRank. 像PageRank里面涉及到每个节点和相邻节点的rank更新, 如果使用MPI的话就要涉及通信而且这个拓扑还不太好确定,使用Partitioned Table的方式则可以极大地使用好data locality. Job描述上允许指定table的partition方式,还可以指定多个table使用相同的partition方式并且相同的partition在一个节点上。
MPI另外一个问题就是做fault-tolerant. 这个系统有个master节点,整个计算过程是由master节点控制的,task并不是静态地被绑定到worker上面去执行的,而是动态地去问master节点要,类似MapReduce的方式(这样就实现了work-stealing?)
另外master可以来控制global synchronization, 在特定的时间要求所有task做checkpoint,如果挂了的话整个系统从checkpoint开始重算,而各个task则读取自己的progress开始重算。