
大规模图数据专栏
在Pregel的基础之上研究相关的类似的系统,giraph、hama、GPS等系统。
数据探险家
专注分享Flink、Hadoop、Spark等大数据及AI技术,爱好原创
展开
-
GPS-Graph Processing System集群安装笔记(一)
1. 下载GPS安装包。在虚拟机上的/home/gougou目录下创建GPS文件夹,进入/home/gougou/GPS,执行下述命令。svn co https://subversion.assembla.com/svn/phd-projects/gps/trunk下载完成后在GPS文件夹下会生成trunk文件夹,trunk文件夹里包含了GPS的源码等文件。把trunk文件夹下的所有文件移动到GPS中,然后删除trunk文件夹。最后把整个GPS文件夹拷贝到test150:/home/gougou目录下。原创 2013-11-21 10:07:40 · 2710 阅读 · 0 评论 -
GPS-Graph Processing System每台机器运行多个Task经验总结(二)
GPS每台机器运行多个Task经验总结1. 集群环境由13台曙光A610服务器组成的集群,具体信息为:test150、test151、test152、test153、test154、test155、test156、test157、test158、test159、test60、test61、test164。每个服务器上都建有gougou用户,test150为master,其余1原创 2013-11-21 10:14:01 · 1652 阅读 · 0 评论 -
GPS-Graph Processing System 修改源码经验总结 (四)
本文目的:在修改GPS源码后,详细描述如何编译和分发到各Worker节点上。下面以Graph Coloring 算法为例进行讲解,本文基于GPS的前三篇文章。1. 首先在Master(test150)上修改源码。Graph Coloring算法源码路径:gps.examples.coloring包,主要修改ColoringVertex.java类。该算法在Section(MIS_1)阶段是按照顶点的出度大小概率性的选择UNDECIDED状态的顶点,源码如下:原创 2014-06-06 09:23:24 · 1920 阅读 · 0 评论 -
GPS-Graph Processing System Graph Coloring算法分析 (三)
Graph coloring is the problem of assigning a color to each vertex of an undirected graph such that no two adjacent vertices have the same color. We implement the greedy algorithm from Scalable parallel graph coloring algorithms. The algorithm iteratively f原创 2014-06-09 20:33:53 · 1641 阅读 · 0 评论 -
Hama学习总结
Hama学习笔记1. Hama定义Hama是基于HDFS上的BSP模型实现,其运行不需要MapReduce。例证如下: 在单点调试的Hama系统上,只运行NameNode、DataNode、BSPMasterRunner、GroomServerRunner和 ZooKeeperRunner进程,即可运行PageRank程序。2. MapReduce与BSP区别执行机制:MapR原创 2014-06-18 21:30:57 · 4163 阅读 · 3 评论 -
Giraph-Eclipse安装-源码调试
Giraph-Eclipse安装-调试源码1. 官网上下载giraph-1.0.0,放在 /home/hadoop目录下,把giraph-1.0.0文件夹重命名为giraph-1.0.0-src。2. 进入/home/hadoop/giraph-1.0.0-src 目录,用Maven对源码进行构建,命令如下:# mvn package –DskipTests原创 2013-11-06 19:08:56 · 6071 阅读 · 19 评论 -
基于Hama平台的并行Finding a Maximal Independent Set 算法的设计与实现
本文目的:讲解并行Finding a Maximal Independent Set(寻找最大独立集问题)算法,以及在Hama平台上如何实现该算法。该算法可方便移植到所有的Pregel-Like系统中,如Giraph、GPS (Graph Processing System)。前言:关于Maximal Independent Set(MIS)的基础知识参考我的博客《找最大独立集问题-Finding a Maximal Independent Set》。1. 本算法参考 Luby's classic pa原创 2014-06-18 17:29:18 · 4334 阅读 · 9 评论 -
Giraph 基础介绍
Giraph基于Hadoop而建,将MapReduce中Mapper进行封装,未使用reducer。在Mapper中进行多次迭代,每次迭代等价于BSP模型中的SuperStep。一个Hadoop Job等价于一次BSP作业。基础结构如下图所示。欢迎访问: 西北工业大学 - 大数据与知识管理研究室 (Northwestern Polytechnical University - BigData and Knowledge Management Lab),链接:http://wowbigdata.cn/,ht原创 2014-03-30 19:54:02 · 8543 阅读 · 0 评论 -
Giraph源码分析(一) —— 启动ZooKeeper服务
欢迎访问: 西北工业大学 - 大数据与知识管理研究室 (Northwestern Polytechnical University - BigData and Knowledge Management Lab),链接:http://wowbigdata.cn/,http://wowbigdata.net.cn/,http://wowbigdata.com.cn。说明:(1) 实验环境.原创 2014-03-30 19:45:30 · 5272 阅读 · 0 评论 -
Giraph源码分析(二)——启动Master/Worker服务
BspServiceWorker类有WorkerClient和WorkerServer实例,分别作为IPC通信的客户端和服务器端,通过Netty来发送数据。WorkerClient实例实际为NettyWorkerClient对象,WorkerServert实例实际为NettyWorkerServer对象。原创 2014-04-14 16:12:33 · 2788 阅读 · 0 评论 -
Giraph源码分析(三)—— 消息通信
1. 由前文知道每个BSPServiceWorker有一个WorkerServer对象,WorkerServer对象里面又有ServerData对象,作为数据实体。ServerData中包含该Worker的partitionStore、edgeStore、incomingMessageStore、currentMessageStore、聚集值等。 其中incomingMessageStor原创 2014-04-10 11:19:46 · 3799 阅读 · 0 评论 -
Giraph源码分析(四)—— Master 如何检查Worker启动成功
本文的目的:说明Giraph如何借助ZooKeeper来实现Master与Workers间的同步(?不太确定)。环境:在单机上(机器名:giraphx)启动了2个workers。Giraph遵从单Master多Workers结构,BSPServiceMaster使用MasterThread线程来进行全局的同步。每个Worker启动成功后,会向Master汇报自身的健康状况,那么Master是如何检测Workers是否都成功启动了?原创 2014-04-11 17:02:09 · 2190 阅读 · 0 评论 -
Giraph 源码分析(五)—— 加载数据+同步总结
master和workers同步过程总结。 (1)master创建znode A,然后检测A的子节点数目是否等于workers数目,不等于就陷入等待。某个worker创建一个子节点后,就会唤醒master进行检测一次。 (2)每个worker进行自己的工作,完成后,创建A的子节点A1。然后等待master创建znode B。 (3)若master检测到A的子节点数目等于workers的数目时,创建Znode B (4)master创建B 节点后,会激活各个原创 2014-04-14 20:46:23 · 3188 阅读 · 0 评论 -
Giraph源码分析(六)——Edge 分析
在Vertex类中,顶点的存储方式采用邻接表形式。每个顶点有 VertexId、VertexValue、OutgoingEdges和Halt,boolean型的halt变量用于记录顶点的状态,false时表示active,true表示inactive状态。原创 2014-04-21 15:42:11 · 2818 阅读 · 0 评论 -
Giraph源码分析(七)—— 添加消息统计功能
目的:近日因实验要求,需分析Giraph每个超步发送的消息量。Giraph自带能统计每个超步的执行时间,而无消息统计功能。本文通过添加和修改Giraph源码来实现此功能。原创 2014-04-24 15:17:15 · 2149 阅读 · 0 评论 -
Giraph源码分析(八)—— 统计每个SuperStep中参与计算的顶点数目
目的:科研中,需要分析在每次迭代过程中参与计算的顶点数目,来进一步优化系统。比如,在SSSP的compute()方法最后一行,都会把当前顶点voteToHalt,即变为InActive状态。所以每次迭代完成后,所有顶点都是InActive状态。在大同步后,收到消息的顶点会被激活,变为Active状态,然后调用顶点的compute()方法。本文的目的就是统计每次迭代过程中,参与计算的顶点数目。下面附上SSSP的compute()方法:原创 2014-05-06 09:14:40 · 2977 阅读 · 0 评论 -
Giraph源码分析(九)—— Aggregators 原理解析
改进:采用分片聚集 (sharded aggregators) . 在每个超级步的最后,每个聚集器被派发给一个Worker,该Worker接受和聚集其他Workers发送给该聚集器的值。然后Workers把自己的所有的聚集器发送给Master,这样Master就无需执行任何聚集,只是接收每个聚集器的最终值。在MasterCompute.compute执行后,Master不是直接把所有的聚集器发送给所有的Workers,而是发送给聚集器所属的Worker,然后每个Worker再把其上的聚集器发送给所有的Wor原创 2014-05-22 22:11:58 · 4432 阅读 · 0 评论