Apache Giraph Graph Partitioning ....分区p1可以部分驻留在worker w1中,部分驻留在worker w2中吗?

时间:2014-07-02 01:56:10

标签: giraph

我是Apache Giraph的新手。我的问题与Giraph图分区有关。据我所知,Giraph随机分割大图...可能是#cages> #workers以便加载平衡。但是,我的问题是,是#cages / worker总是一个整数?以其他方式说,是否会发生,分区(比如说p1)部分驻留在worker w1和worker w2中?或者,p1应该是w1还是w2?

2 个答案:

答案 0 :(得分:4)

Giraph中的分区是指顶点分区而不是图分区。例如,如果图形具有从1到10编号的10个顶点,那么可能的分区将是{1,2。 3},{4,5,6},{7,8,9,10}。每个分区都知道其外边缘指向的位置。每个worker为每个分配给它的分区创建线程。线程迭代分区中的每个顶点并执行计算功能。 因此,有了这些信息,我会说分区必须完全驻留在一个工作者身上。

你好@zahorak,

如果Giraph按原样实施Pregel,那么根据Pregel论文,没有必要使用#partitions == #workers。它说,

  

主服务器确定图表将具有多少分区,并为每个工作服务器分配一个或多个分区。该号码可以由用户控制。每个工作程序具有多个分区允许分区之间的并行性和更好的负载平衡,并且通常可以提高性能。

更新:我在Giraph用户邮件列表中找到了类似的问题。答复中给出的答案可能会有所帮助。这是线程的链接 - https://www.mail-archive.com/user@giraph.apache.org/msg01869.html

答案 1 :(得分:0)

AFAIK 没有,实际上我会说,#partitions == #workers

分区的原因是在一台服务器上处理图形的一部分。执行超级步骤后,发送到其他分区的消息将在群集内的服务器之间进行交换。

也许你理解分区之后的其他东西就像我一样,但对我来说分区意味着:

  

Giraph位于具有多个服务器的群集上,为了覆盖所有服务器,它需要分区图形。而不是简单地将一个节点随机地分配给 n 服务器之一。除此之外,您将获得 n 分区,每个分区中的节点由分配给它们的一台服务器执行,而不是其他。