本人原創,轉載請注明出處!歡迎大家加入 Giraph 技術交流群 : 228591158 本文目的:在修改GPS源碼后,詳細描述如何編譯和分發到各Worker節點上。下面以Graph Coloring 算法為例進行講解,本文基于GPS的前三篇文章。 1. 首先在Master(test150)上修改源碼。G
本人原創,轉載請注明出處!歡迎大家加入Giraph 技術交流群: 228591158
本文目的:在修改GPS源碼后,詳細描述如何編譯和分發到各Worker節點上。下面以Graph Coloring 算法為例進行講解,本文基于GPS的前三篇文章。
1. 首先在Master(test150)上修改源碼。Graph Coloring算法源碼路徑:gps.examples.coloring包,主要修改ColoringVertex.java類。該算法在Section(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); } } } }
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); } } } //}
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
./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"
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com