GPS-Graph Processing System 改动源代码经验总结 (四)
HamaWhite原创,转载请注明出处。欢迎大家增加Giraph
技术交流群: 228591158
本文目的:在改动GPS源代码后,具体描写叙述怎样编译和分发到各Worker节点上。
以下以Graph Coloring 算法为例进行解说。本文基于GPS的前三篇文章。
1. 首先在Master(test150)上改动源代码。
Graph Coloring算法源代码路径:gps.examples.coloring包,主要改动ColoringVertex.java类。
该算法在Selection(MIS_1)阶段是依照顶点的出度大小概率性的选择UNDECIDED状态的顶点,源代码例如以下:
- if (ColoringVertexType.NOT_IN_SET == value.type
- || ColoringVertexType.IN_SET == value.type) {
- return;
- }
- double probability = getNeighborsSize() > 0 ? 1.0 /
- ((double) 2*value.numRemainingNeighbors) : 1;
- if (Math.random() <= probability) {
- value.type = ColoringVertexType.SELECTED_AS_POSSIBLE_IN_SET;
- if (value.numRemainingNeighbors > 0) {
- ColoringMessage newSelectedAsPossibleMessage = ColoringMessage
- .newNeighborSelectedAsPossibleMessage(getId());
- for (int neighborId : getNeighborIds()) {
- if (neighborId >= 0) {
- sendMessage(neighborId, newSelectedAsPossibleMessage);
- }
- }
- }
- }
以下改动为:选择全部的UNDECIDED状态的顶点,而非概率性选择。
改动后源代码例如以下:
- if (ColoringVertexType.NOT_IN_SET == value.type
- || ColoringVertexType.IN_SET == value.type) {
- return;
- }
- //double probability = getNeighborsSize() > 0 ?
- 1.0 /
- // ((double) 2*value.numRemainingNeighbors) : 1;
- //if (Math.random() <= probability) {
- // value.type = ColoringVertexType.SELECTED_AS_POSSIBLE_IN_SET;
- if (value.numRemainingNeighbors > 0) {
- ColoringMessage newSelectedAsPossibleMessage = ColoringMessage
- .newNeighborSelectedAsPossibleMessage(getId());
- for (int neighborId : getNeighborIds()) {
- if (neighborId >= 0) {
- sendMessage(neighborId, newSelectedAsPossibleMessage);
- }
- }
- }
- //}
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。
- cd /home/gougou/GPS/trunk
- # delete master files
- rm -rf gps_node_runner.jar
- rm -rf classes
- rm -rf gps-0.0.1-slave.tar.gz
- # delete worker files. the Shell writed by myself.
- cd /home/gougou/ShellUtils
- ./deleteDirectory.sh /home/gougou/GPS/trunk/conf
- ./deleteDirectory.sh /home/gougou/GPS/trunk/gps-0.0.1-slave.tar.gz
- ./deleteDirectory.sh /home/gougou/GPS/trunk/gps_node_runner.jar
- ./deleteDirectory.sh /home/gougou/GPS/trunk/libs
- ./deleteDirectory.sh /home/gougou/GPS/trunk/scripts/
- # compile GPS source code
- cd /home/gougou/GPS/trunk
- cd local-master-scripts
- # generate gps_node_runner.jar and classes under trunk directory
- ./make_gps_node_runner_jar.sh
- # generate gps-0.0.1-slave.tar.gz under trunk directory
- ./make_gps_tar_gz.sh
- cd ../master-scripts
- cp slaves temp
- cp slaves-12 slaves
- ./copy_and_untar_gps_tar_to_slaves.sh 12
- mv temp slaves
4. 在trunk/master-scripts文件夹下,执行Graph Coloring 算法,命令例如以下:
- ./start_gps_nodes.sh 2 GC-Test5-1 \
- "-ifs /user/gougou/GC-Test5/gc-5.txt \
- -hcf /home/gougou/hadoop-1.0.3/conf/core-site.xml \
- -jc gps.examples.coloring.JobConfiguration \
- -mcfg /machine-configs/test_machine_config_2.cfg \
- -log4jconfig /home/gougou/GPS/trunk/conf/log4j.config"
完!
GPS-Graph Processing System 改动源代码经验总结 (四)的更多相关文章
- 《Wonderland: A Novel Abstraction-Based Out-Of-Core Graph Processing System》章明星
在2018年3月28日于美国弗吉尼亚州威廉斯堡结束的ACM ASPLOS 2018会议上,计算机系高性能所师生发表了两篇长文.一篇是我系博士生章明星为第一作者,导师武永卫为通讯作者的“Wonderla ...
- 转债---Pregel: A System for Large-Scale Graph Processing(译)
转载:http://duanple.blog.163.com/blog/static/70971767201281610126277/ 作者:Grzegorz Malewicz, Matthew ...
- Pregel: A System for Large-Scale Graph Processing(译)
[说明:Pregel这篇是发表在2010年的SIGMOD上,Pregel这个名称是为了纪念欧拉,在他提出的格尼斯堡七桥问题中,那些桥所在的河就叫Pregel.最初是为了解决PageRank计算问题,由 ...
- 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 ...
- 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 ...
- oracle 实例启动报错(ORA-01078: failure in processing system parameters )
在启动Oracle数据库时报错,如下: [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Productio ...
- 启动Oracle时提示:ORA-01078:failure in processing system parameters
一.使用环境操作系统:CentOS release 6.2 (Final) 数据库:Oracle 12g数据库主目录:/ora12/product/product/12.1.0/db_1 二.问题描述 ...
- [解决思路]ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file
oracle数据库,服务器异常断电,导致数据库不能启动.... 错误提示: SQL> startup ORA-01078: failure in processing system parame ...
- Spark-1.5.2之改动源代码后的自己定义打包编译
Spark-1.5.2之自己定义打包编译,基于当前最新版本号的spark源代码1.5.2版本号. 自己编译spark是改动spark源代码的必备条件,改动的源代码自己定义打包生效后才干公布到生产环境中 ...
随机推荐
- Salvation -- ---广搜 + 限定方向 ,
这个欣求 , 在迷宫里密室了方向 , 走过了一个地方 不做标记 还一个劲 , 找不到媳妇不亏 . 这个题 我跳了两个坑 , 1 : 习惯性添加标记走过的 位置 ,导致所有的位置都能 走过一遍 , ...
- Flume OG 与 Flume NG 的对比
Flume OG 与 Flume NG 的对比 1.Flume OG Flume OG:Flume original generation 即Flume 0.9.x版本,它由agent.collect ...
- session一致性架构设计实践.
一.缘起 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文. Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建se ...
- 我的github教程
这篇文章记录个人常用的一些命令,和记不住的一些命令. 安装 在 Windows 上安装 Git ,有个叫做 msysGit 的项目提供了安装包: http://msysgit.github.io/ 完 ...
- Microsoft SQL Server学习(一)--基本概念
数据库的分类 关系型数据库 非关系型数据库 数据库的发展 数据都是以文件的形式存储在硬盘上FATFAT32NTFS LinuxEXT 数据库设计流程 文件系统缺陷 数据库的专业术语 数据库引擎服务 E ...
- =new、=null、.clear()、system.gc()的区别
开发经验告诉我 = new是指向另一个地址空间 =null对象被回收 .clear()对象被清空,但是仍然指向原来的地址空间 这三种方式都并没有真正的清理内存 只有system.gc()是直接清理,但 ...
- eclipse的任务列表
如上图所示,备注加 TODO ,可以在tasks列表中显示,提示你还有哪些工作需要完善 昨天遇到一个问题,加了 TODO 任务列表里却不显示,后来发现是因为任务列表只显示了前100条,而我的项 ...
- CAD处理键盘被按下事件(com接口VB语言)
主要用到函数说明: MxDrawXCustomEvent::KeyDown 键盘被按下,详细说明如下: 参数 说明 LONG lVk 是按钮码,如F8,的值为#define VK_F8 0x77 返回 ...
- Unity如何播放带有alpha 通道的视频
问题: 当使用Video Player播放带有alpha 通道的视频时带有黑色背景 解决方式: 使用文件格式为WEBM的视频,对视频文件进行的修改 在RawImage中,将New Render Tex ...
- Ansible 利用playbook批量部署Nginx
我这里直接部署的,环境已经搭建好,如果不知道的小伙伴可以看上一遍ansible搭建,都写好了,这里是根据前面环境部署的 192.168.30.21 ansible 192.168.30.25 ...