HamaWhite原创,转载请注明出处。欢迎大家增加Giraph
技术交流群
: 228591158

本文目的:在改动GPS源代码后,具体描写叙述怎样编译和分发到各Worker节点上。

以下以Graph Coloring 算法为例进行解说。本文基于GPS的前三篇文章。

1. 首先在Master(test150)上改动源代码。

Graph Coloring算法源代码路径:gps.examples.coloring包,主要改动ColoringVertex.java类。

该算法在Selection(MIS_1)阶段是依照顶点的出度大小概率性的选择UNDECIDED状态的顶点,源代码例如以下:

  1. if (ColoringVertexType.NOT_IN_SET == value.type
  2. || ColoringVertexType.IN_SET == value.type) {
  3. return;
  4. }
  5. double probability = getNeighborsSize() > 0 ? 1.0 /
  6. ((double) 2*value.numRemainingNeighbors) : 1;
  7. if (Math.random() <= probability) {
  8. value.type = ColoringVertexType.SELECTED_AS_POSSIBLE_IN_SET;
  9. if (value.numRemainingNeighbors > 0) {
  10. ColoringMessage newSelectedAsPossibleMessage = ColoringMessage
  11. .newNeighborSelectedAsPossibleMessage(getId());
  12. for (int neighborId : getNeighborIds()) {
  13. if (neighborId >= 0) {
  14. sendMessage(neighborId, newSelectedAsPossibleMessage);
  15. }
  16. }
  17. }
  18. }

以下改动为:选择全部的UNDECIDED状态的顶点,而非概率性选择。

改动后源代码例如以下:

  1. if (ColoringVertexType.NOT_IN_SET == value.type
  2. || ColoringVertexType.IN_SET == value.type) {
  3. return;
  4. }
  5. //double probability = getNeighborsSize() > 0 ?
  6.  
  7. 1.0 /
  8. // ((double) 2*value.numRemainingNeighbors) : 1;
  9. //if (Math.random() <= probability) {
  10. // value.type = ColoringVertexType.SELECTED_AS_POSSIBLE_IN_SET;
  11. if (value.numRemainingNeighbors > 0) {
  12. ColoringMessage newSelectedAsPossibleMessage = ColoringMessage
  13. .newNeighborSelectedAsPossibleMessage(getId());
  14. for (int neighborId : getNeighborIds()) {
  15. if (neighborId >= 0) {
  16. sendMessage(neighborId, newSelectedAsPossibleMessage);
  17. }
  18. }
  19. }
  20. //}

2. 由于之前已编译过GPS源代码,而且把Jar包等文件已分发到集群中各个Worker节点上,所以此步骤是删除之前的文件。删除Master节点trunk文件夹下的:gps-0.0.1-slave.tar.gz 、gps_node_runner.jar和classes文件夹,删除Worker节点trunk文件夹下的 conf 、gps-0.0.1-slave.tar.gz 、gps_node_runner.jar 、libs  、scripts。logs文件夹保留。

3. 參考 GPS-Graph Processing System集群安装笔记(一),又一次编译和分发Jar包等文件。

以下附上我的脚本。因中间使用了我自己的脚本,故不可直接使用,可是能够參考。脚本所在文件夹:/home/gougou/GPS/trunk。

  1. cd /home/gougou/GPS/trunk
  2. # delete master files
  3. rm -rf gps_node_runner.jar
  4. rm -rf classes
  5. rm -rf gps-0.0.1-slave.tar.gz
  6.  
  7. # delete worker files. the Shell writed by myself.
  8. cd /home/gougou/ShellUtils
  9. ./deleteDirectory.sh /home/gougou/GPS/trunk/conf
  10. ./deleteDirectory.sh /home/gougou/GPS/trunk/gps-0.0.1-slave.tar.gz
  11. ./deleteDirectory.sh /home/gougou/GPS/trunk/gps_node_runner.jar
  12. ./deleteDirectory.sh /home/gougou/GPS/trunk/libs
  13. ./deleteDirectory.sh /home/gougou/GPS/trunk/scripts/
  14.  
  15. # compile GPS source code
  16. cd /home/gougou/GPS/trunk
  17. cd local-master-scripts
  18. # generate gps_node_runner.jar and classes under trunk directory
  19. ./make_gps_node_runner_jar.sh
  20. # generate gps-0.0.1-slave.tar.gz under trunk directory
  21. ./make_gps_tar_gz.sh
  22.  
  23. cd ../master-scripts
  24. cp slaves temp
  25. cp slaves-12 slaves
  26. ./copy_and_untar_gps_tar_to_slaves.sh 12
  27. mv temp slaves

4. 在trunk/master-scripts文件夹下,执行Graph Coloring 算法,命令例如以下:

  1. ./start_gps_nodes.sh 2 GC-Test5-1 \
  2. "-ifs /user/gougou/GC-Test5/gc-5.txt \
  3. -hcf /home/gougou/hadoop-1.0.3/conf/core-site.xml \
  4. -jc gps.examples.coloring.JobConfiguration \
  5. -mcfg /machine-configs/test_machine_config_2.cfg \
  6. -log4jconfig /home/gougou/GPS/trunk/conf/log4j.config"

完!

GPS-Graph Processing System 改动源代码经验总结 (四)的更多相关文章

  1. 《Wonderland: A Novel Abstraction-Based Out-Of-Core Graph Processing System》章明星

    在2018年3月28日于美国弗吉尼亚州威廉斯堡结束的ACM ASPLOS 2018会议上,计算机系高性能所师生发表了两篇长文.一篇是我系博士生章明星为第一作者,导师武永卫为通讯作者的“Wonderla ...

  2. 转债---Pregel: A System for Large-Scale Graph Processing(译)

    转载:http://duanple.blog.163.com/blog/static/70971767201281610126277/   作者:Grzegorz Malewicz, Matthew ...

  3. Pregel: A System for Large-Scale Graph Processing(译)

    [说明:Pregel这篇是发表在2010年的SIGMOD上,Pregel这个名称是为了纪念欧拉,在他提出的格尼斯堡七桥问题中,那些桥所在的河就叫Pregel.最初是为了解决PageRank计算问题,由 ...

  4. ORA-01078: failure in processing system parameters & LRM-00109: could not open parameter file

    安装了Oracle 12C后,启动数据库的过程中出现如下错误 SQL> startup ORA-01078: failure in processing system parameters LR ...

  5. ORA-01078:failure in processing system parameters

    一.使用环境操作系统:rhel 6.5 x64数据库:Oracle 11.2.0.1.0数据库主目录:/u01/app/oracle/product/11.2.0/ 二.问题描述用sys用户登录sql ...

  6. oracle 实例启动报错(ORA-01078: failure in processing system parameters )

    在启动Oracle数据库时报错,如下: [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Productio ...

  7. 启动Oracle时提示:ORA-01078:failure in processing system parameters

    一.使用环境操作系统:CentOS release 6.2 (Final) 数据库:Oracle 12g数据库主目录:/ora12/product/product/12.1.0/db_1 二.问题描述 ...

  8. [解决思路]ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file

    oracle数据库,服务器异常断电,导致数据库不能启动.... 错误提示: SQL> startup ORA-01078: failure in processing system parame ...

  9. Spark-1.5.2之改动源代码后的自己定义打包编译

    Spark-1.5.2之自己定义打包编译,基于当前最新版本号的spark源代码1.5.2版本号. 自己编译spark是改动spark源代码的必备条件,改动的源代码自己定义打包生效后才干公布到生产环境中 ...

随机推荐

  1. Salvation -- ---广搜 + 限定方向 ,

    这个欣求 , 在迷宫里密室了方向 , 走过了一个地方 不做标记 还一个劲 , 找不到媳妇不亏 . 这个题 我跳了两个坑 ,  1 : 习惯性添加标记走过的 位置  ,导致所有的位置都能 走过一遍 , ...

  2. Flume OG 与 Flume NG 的对比

    Flume OG 与 Flume NG 的对比 1.Flume OG Flume OG:Flume original generation 即Flume 0.9.x版本,它由agent.collect ...

  3. session一致性架构设计实践.

    一.缘起 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文. Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建se ...

  4. 我的github教程

    这篇文章记录个人常用的一些命令,和记不住的一些命令. 安装 在 Windows 上安装 Git ,有个叫做 msysGit 的项目提供了安装包: http://msysgit.github.io/ 完 ...

  5. Microsoft SQL Server学习(一)--基本概念

    数据库的分类 关系型数据库 非关系型数据库 数据库的发展 数据都是以文件的形式存储在硬盘上FATFAT32NTFS LinuxEXT 数据库设计流程 文件系统缺陷 数据库的专业术语 数据库引擎服务 E ...

  6. =new、=null、.clear()、system.gc()的区别

    开发经验告诉我 = new是指向另一个地址空间 =null对象被回收 .clear()对象被清空,但是仍然指向原来的地址空间 这三种方式都并没有真正的清理内存 只有system.gc()是直接清理,但 ...

  7. eclipse的任务列表

    如上图所示,备注加  TODO  ,可以在tasks列表中显示,提示你还有哪些工作需要完善 昨天遇到一个问题,加了  TODO  任务列表里却不显示,后来发现是因为任务列表只显示了前100条,而我的项 ...

  8. CAD处理键盘被按下事件(com接口VB语言)

    主要用到函数说明: MxDrawXCustomEvent::KeyDown 键盘被按下,详细说明如下: 参数 说明 LONG lVk 是按钮码,如F8,的值为#define VK_F8 0x77 返回 ...

  9. Unity如何播放带有alpha 通道的视频

    问题: 当使用Video Player播放带有alpha 通道的视频时带有黑色背景 解决方式: 使用文件格式为WEBM的视频,对视频文件进行的修改 在RawImage中,将New Render Tex ...

  10. Ansible 利用playbook批量部署Nginx

    我这里直接部署的,环境已经搭建好,如果不知道的小伙伴可以看上一遍ansible搭建,都写好了,这里是根据前面环境部署的 192.168.30.21     ansible 192.168.30.25  ...