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. Vue项目中如何使用less(添加less依赖)

    今天在新工程里添加了一段样式代码代码突然报错了: <!-- Add "scoped" attribute to limit CSS to this component onl ...

  2. linux 怎么在后台添加运行脚本,即使关机也可以用

    nohup ma.php >guangxindai.log 2>&1 & 或者 nohup ma.php & 在shell中,文件描述符通常是:STDIN标准输入, ...

  3. 《Typecript 入门教程》 3、接口

    转载:<TypeScript 中文入门教程> 3.接口 介绍 TypeScript的核心原则之一是对值所具有的shape进行类型检查. 它有时被称做“鸭式辨型法”或“结构性子类型化”. 在 ...

  4. JavaScript--输出内容(document.write)

    document.write() 可用于直接向 HTML 输出流写内容.简单的说就是直接在网页中输出内容. 第一种:输出内容用“”括起,直接输出""号内的内容. <scrip ...

  5. Django总结四

    0.ORM操作 1.必会的13条 返回对象列表的 all filter exclude order_by reverse distinct 特殊的对象列表 values values_list 返回对 ...

  6. 服务器上oracle的监听设置

    1.查看本机的计算机名 2.修改etc/host 3.修改oracle的listener.ora(我服务器上的路径:) 4.修改tnsnames.ora(和上边文件一个目录)

  7. c# winform控件dock属性停造位置、摆放顺序详解

    dock : [英文释义- 码头.依靠][winform释义- 获取或设置当前控件依靠到父容器的哪一个边缘.] 用途:多数控件都有这个属性,主要用来设置控件的布局. 但对于不太了解这个属性的朋友来说有 ...

  8. MYSQL 使用自定义表变量

    mysql  用户自定义表变量,ENGINE=MyISAM DEFAULT CHARSET=gb2312; 制定编码方式,防止乱码 DROP TABLE IF EXISTS p_temp; creat ...

  9. suse 下的gcc安装

    在付出了一天的努力之后终于在win7系统上面硬盘安装suse操作系统成功,可是随之而来的问题居然是没有安装GCC,这对我来说是一个不小的打击,因为很多工作和工具安装需要通过GCC来编译,因此我只好求助 ...

  10. 3星|《管理十诫》:十年前可口可乐退休CEO的一生管理经验总结

    管理十诫:影响你一生的管理哲学 英文书应该是2008年出版的.国内出版过几个译本. 作者是可口可乐CEO.本书是他从可口可乐CEO退下来后写的管理经验总结.作者总结了11条CEO不应该做的事.这11条 ...