<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Giraph</id>
	<title>Giraph - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Giraph"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Giraph&amp;action=history"/>
	<updated>2026-07-17T12:51:25Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Giraph&amp;diff=2163971&amp;oldid=prev</id>
		<title>imported&gt;Cary&amp;gary：​小修改</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Giraph&amp;diff=2163971&amp;oldid=prev"/>
		<updated>2024-05-27T11:01:03Z</updated>

		<summary type="html">&lt;p&gt;小修改&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{编修}}&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| name = Apache Giraph&lt;br /&gt;
| logo = [[File:Apache_Giraph_Logo.svg|200px|Apache Giraph Logo]]&lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = &lt;br /&gt;
| collapsible = yes&lt;br /&gt;
| developer = [[Apache软件基金会]]&lt;br /&gt;
| operating system = [[跨平台]]&lt;br /&gt;
| size = &lt;br /&gt;
| programming language = [[Java]]&lt;br /&gt;
| genre = [[图 (数据结构)|图处理]]&lt;br /&gt;
| license = [[Apache License 2.0]]&lt;br /&gt;
| website = {{URL|http://giraph.apache.org}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Giraph&amp;#039;&amp;#039;&amp;#039; 是一个[[迭代]]的{{tsl|en|Graph_(abstract_data_type)|图计算}}系统。&lt;br /&gt;
Apache Giraph 是一个[[Apache]]项目，用于对[[大数据]]执行图形处理。 Giraph 的目的是为了解决大规模图的分布式计算问题，能够通过隐藏分布式和并行计算的细节以及提供一套用于描述图算法的 API。总的来说，Giraph 拥有了相对好的可扩展性，能够一定程度降低分布式图计算的使用门槛。&lt;br /&gt;
&lt;br /&gt;
==概述==&lt;br /&gt;
Giraph 计算的输入是由点和两点之间直连的边所组成的图，例如，点可以表示人，边可以表示朋友请求。每个[[顶点 (图论)|顶点]]保存一个值，每个边也保存一个值。输入不仅取决于图的[[拓扑]]逻辑，也取决于定点和边的初始值。&lt;br /&gt;
&lt;br /&gt;
计算过程由一序列的迭代进行，在[[BSP]]中叫做supersteps。每个顶点都active。在每个superstep中，每个active的顶点触发用户提供的计算方法。这些方法实现了将要输入的图中执行的图算法。簡單來說，在设计Giraph算法的时候要像顶点一样思考。计算方法如下：&lt;br /&gt;
&lt;br /&gt;
- 接受上一个superstep发送给顶点的消息;&lt;br /&gt;
&lt;br /&gt;
- 用消息、定点和伸出的边的值，可能导致值被修改，发送消息给其它顶点;&lt;br /&gt;
&lt;br /&gt;
计算方法并没有直接获取其它顶点的值以及他们的伸出的边。顶点之间通过传递消息来通信。&lt;br /&gt;
&lt;br /&gt;
在我们的单源最短路径的例子中，一个计算方法是：&lt;br /&gt;
&lt;br /&gt;
（1）从所有收到的消息中计算最小的值；&lt;br /&gt;
&lt;br /&gt;
（2）确定各个节点的当前值大小；&lt;br /&gt;
&lt;br /&gt;
（3）最小的值被接受作为顶点的值；&lt;br /&gt;
&lt;br /&gt;
（4）值和边的值沿着每一个外出的边发送。&lt;br /&gt;
&lt;br /&gt;
  public void compute(Iterable&amp;lt;DoubleWritable&amp;gt; messages) {&lt;br /&gt;
      double minDist = Double.MAX_VALUE;&lt;br /&gt;
      for (DoubleWritable message : messages) {&lt;br /&gt;
          minDist = Math.min(minDist, message.get());&lt;br /&gt;
      }&lt;br /&gt;
      if (minDist &amp;lt; getValue().get()) {&lt;br /&gt;
          setValue(new DoubleWritable(minDist));&lt;br /&gt;
          for (Edge&amp;lt;LongWritable, FloatWritable&amp;gt; edge : getEdges()) {&lt;br /&gt;
              double distance = minDist + edge.getValue().get();&lt;br /&gt;
              sendMessage(edge.getTargetVertexId(), new DoubleWritable(distance));&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
      voteToHalt();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== 系统架构 ==&lt;br /&gt;
系统架构包括Master、Worker、以及Zookeeper。&amp;lt;ref&amp;gt;{{Cite web|url=https://blog.csdn.net/firstdream10/article/details/99293702|title=Giraph 简介 - Ikroal 的博客         - CSDN博客|accessdate=2019-08-12|work=blog.csdn.net}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
-Master&lt;br /&gt;
 &lt;br /&gt;
Master 实质上运行在 Hadoop 的 MapTask 上， 其主要作用是对输入图进行分区、协调 Worker 的活动、维护一份存活的 Worker 列表（包括 Worker 的标识符、地址信息等）以及更新 Job 的状态。&lt;br /&gt;
&lt;br /&gt;
-Worker&lt;br /&gt;
 &lt;br /&gt;
Worker 也同样运行在 Hadoop 的 MapTask 上，其主要作用是维护已分配图的状态。&lt;br /&gt;
&lt;br /&gt;
-Zookeeper&lt;br /&gt;
 &lt;br /&gt;
Zookeeper 在 Giraph 中的主要作用是 Master 选举、命名服务以及协调服务。&lt;br /&gt;
&lt;br /&gt;
== 基础原理 ==&lt;br /&gt;
Giraph基于[[Hadoop]]而建，将[[MapReduce]]中Mapper进行封装，未使用reducer。在Mapper中进行多次迭代，每次迭代等价于BSP模型中的SuperStep。一个Hadoop Job等价于一次BSP作业。&amp;lt;ref&amp;gt;{{Cite web|url=http://blog.csdn.net/xin_jmail/article/details/22194057|title=Giraph 基础介绍 - Hama White 的博客         - CSDN博客|accessdate=2017-10-03|work=blog.csdn.net|archive-date=2017-10-04|archive-url=https://web.archive.org/web/20171004035332/http://blog.csdn.net/xin_jmail/article/details/22194057|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 參考資料 ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
{{官方网站}}&lt;br /&gt;
&lt;br /&gt;
[http://blog.csdn.net/xin_jmail/article/details/22194057 Giraph基础介绍 - Hama White 的博客] {{Wayback|url=http://blog.csdn.net/xin_jmail/article/details/22194057 |date=20171004035332 }}&lt;br /&gt;
 &lt;br /&gt;
[https://blog.csdn.net/firstdream10/article/details/99293702 Giraph简介 - Ikroal 的博客]&lt;br /&gt;
&lt;br /&gt;
{{Apache Software Foundation}}&lt;br /&gt;
 &lt;br /&gt;
[[Category:Apache软件基金会]]&lt;br /&gt;
[[Category:Hadoop]]&lt;br /&gt;
[[Category:数据挖掘和机器学习软件]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Cary&amp;gary</name></author>
	</entry>
</feed>