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 改动源代码经验总结 (四)的更多相关文章

  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. Elasticsearch如何做到亿级数据查询毫秒级返回?

    阅读本文大概需要 6 分钟. 如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有 ...

  2. idea git项目修改后无法提交 颜色都是灰色

    现象: idea git项目修改后无法提交   修改后的文件提交时不显示  颜色都是灰色 分析问题出现的原因: git未识别idea下项目. 排查: 发现是因为这个项目之前是基于svn的,然后直接导入 ...

  3. promise 小抄

    catch的用法 我们知道Promise对象除了then方法,还有一个catch方法,它是做什么用的呢?其实它和then的第二个参数一样,用来指定reject的回调,用法是这样: getNumber( ...

  4. python 学习笔记一 (数据结构和算法)

    2018年刚刚过完年,从今天起,做一个认真的技术人.开始进入记笔记阶段. python内置了很多数据结构,list , set,dictionary 1.将序列分解为单独的变量 1.1 通过赋值的方式 ...

  5. 为什么现在改用int.TryParse了

    以前一直用 int.Parse(x)或者 Convert.ToInt64(x),后来项目中发现如果x变量的值为null是,就报错了,哪怕我这样写 int.Parse(x=x??"0" ...

  6. 学习Objective-C入门教程(分享)

    原百度文库连接:http://wenku.baidu.com/view/6786064fe518964bcf847c63.html PS:需要原文档的可以留邮箱发送! (我叫雷锋,不要谢我) 学习Ob ...

  7. 从源码看ASP.NET框架(一)-打造页面控件树

    测试实例如下: 前台代码MyFirstWeb.aspx(没有服务器控件,即没有runat) CodeBehind="MyFirstWeb.aspx.cs":表示代码后置类文件 In ...

  8. [Java]Java分层概念

      service是业务层 action层即作为控制器 DAO (Data Access Object) 数据访问 1.JAVA中Action层, Service层 ,modle层 和 Dao层的功能 ...

  9. 三角形状的点阵模糊效果iOS源码

    源码FFAngularPointilism,FFAngularPointilism能够将UIImageView像添加滤波器一样生成三角形状的点阵模糊效果.可以通过动画方式来模糊,也可以立刻模糊.另外并 ...

  10. 更改计算机名后DB2不能启动的解决方法

    1.找到以下位置目录下相应的文件db2nodes.cfg C:\Documents and Settings\All Users\Application Data\IBM\DB2\DB2COPY1\D ...