atlarge-research / graphalytics-platforms-powergraph Goto Github PK
View Code? Open in Web Editor NEWGraphalytics implementation for PowerGraph
License: Apache License 2.0
Graphalytics implementation for PowerGraph
License: Apache License 2.0
Adapt the platform driver implementation to the changes in the Platform interface (See ldbc/ldbc_graphalytics#158).
Currently none of the validation tests pass on Jenkins because the algorithms are not compiled during the build process. Due to the size of the main PowerGraph repository, pulling and building the PowerGraph dependency for every build is not feasible. A possible solution is compiling PowerGraph once as a shared library on the build server and linking against that library in future builds of this project (to be discussed with the maintainers of our Jenkins server).
Some integration tests have been added as unit tests, which will not be successful unless proper environment is set up. These tests need to be declared as integration test.
hi,
I have run the driver successfully in distributed environments : )
To conduct more experiments, I'm wondering whether the driver supports more configurations of powergraph than these already shown in platform.properties (namely platform.powergraph.nodes, platform.powergraph.num-threads). If it can support more than these two, can you list all the supported configuration options? Or shall I look into the code to identify?
Looking forward to your reply.
After packaging with mvn package -DskipTests
, running ./run-benchmark.sh
yields
[ 50%] Linking CXX executable main
/home/users/spollard/graphalytics/PowerGraph/release/src/graphlab/libgraphlab.a(hdfs.cpp.o): In function `graphlab::hdfs::hdfs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)':
/home/users/spollard/graphalytics/PowerGraph/src/graphlab/util/hdfs.hpp:110: undefined reference to `hdfsConnect'
/home/users/spollard/graphalytics/PowerGraph/release/src/graphlab/libgraphlab.a(hdfs.cpp.o): In function `graphlab::hdfs::~hdfs()':
/home/users/spollard/graphalytics/PowerGraph/src/graphlab/util/hdfs.hpp:115: undefined reference to `hdfsDisconnect'
collect2: error: ld returned 1 exit status
CMakeFiles/main.dir/build.make:96: recipe for target 'main' failed
make[2]: *** [main] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/main.dir/all' failed
make[1]: *** [CMakeFiles/main.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
This can be (temporarily) patched by editing bin/standard/CMakeFile/main.dir/link.txt
to include the -lhdfs
flag. However, running the benchmark again yields
$ ./run-benchmark.sh
grep: /disks/large/home/users/spollard/graphalytics/graphalytics-platforms-powergraph/graphalytics-0.3-powergraph-0.1/config//granula.properties: No such file or directory
-- Configuring done
-- Generating done
-- Build files have been written to: /home/users/spollard/graphalytics/graphalytics-platforms-powergraph/graphalytics-0.3-powergraph-0.1/bin/standard
[ 50%] Linking CXX executable main
/home/users/spollard/graphalytics/PowerGraph/deps/local/lib/libhdfs.a(hdfsJniHelper.o): In function `getJNIEnv':
/home/users/spollard/graphalytics/PowerGraph/deps/hadoop/src/hadoop/src/c++/libhdfs/hdfsJniHelper.c:404: undefined reference to `JNI_GetCreatedJavaVMs'
/home/users/spollard/graphalytics/PowerGraph/deps/hadoop/src/hadoop/src/c++/libhdfs/hdfsJniHelper.c:458: undefined reference to `JNI_CreateJavaVM'
collect2: error: ld returned 1 exit status
CMakeFiles/main.dir/build.make:96: recipe for target 'main' failed
make[2]: *** [main] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/main.dir/all' failed
make[1]: *** [CMakeFiles/main.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
spollard@arya:~/graphalytics/graphalytics-platforms-powergraph/graphalytics-0.3-powergraph-0.1๐บ vim bin/standard/CMakeFiles/main.dir/link.txt
spollard@arya:~/graphalytics/graphalytics-platforms-powergraph/graphalytics-0.3-powergraph-0.1๐บ ./run-benchmark.sh
grep: /disks/large/home/users/spollard/graphalytics/graphalytics-platforms-powergraph/graphalytics-0.3-powergraph-0.1/config//granula.properties: No such file or directory
-- Configuring done
-- Generating done
-- Build files have been written to: /home/users/spollard/graphalytics/graphalytics-platforms-powergraph/graphalytics-0.3-powergraph-0.1/bin/standard
[ 50%] Linking CXX executable main
/home/users/spollard/graphalytics/PowerGraph/deps/local/lib/libhdfs.a(hdfsJniHelper.o): In function `getJNIEnv':
/home/users/spollard/graphalytics/PowerGraph/deps/hadoop/src/hadoop/src/c++/libhdfs/hdfsJniHelper.c:404: undefined reference to `JNI_GetCreatedJavaVMs'
/home/users/spollard/graphalytics/PowerGraph/deps/hadoop/src/hadoop/src/c++/libhdfs/hdfsJniHelper.c:458: undefined reference to `JNI_CreateJavaVM'
collect2: error: ld returned 1 exit status
CMakeFiles/main.dir/build.make:96: recipe for target 'main' failed
make[2]: *** [main] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/main.dir/all' failed
make[1]: *** [CMakeFiles/main.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Notice that this is with my LD_LIBRARY_PATH set to
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/
When doing the usual business after installing PowerGraph, one gets
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running nl.tudelft.graphalytics.powergraph.algorithms.bfs.BreadthFirstSearchJobTest
02:17:48.866 [WARN ] failed to load powergraph.properties
org.apache.commons.configuration.ConfigurationException: Cannot locate configuration source powergraph.properties
at org.apache.commons.configuration.AbstractFileConfiguration.load(AbstractFileConfiguration.java:259) ~[commons-configuration-1.10.jar:1.10]
at org.apache.commons.configuration.AbstractFileConfiguration.load(AbstractFileConfiguration.java:238) ~[commons-configuration-1.10.jar:1.10]
at org.apache.commons.configuration.AbstractFileConfiguration.<init>(AbstractFileConfiguration.java:158) ~[commons-configuration-1.10.jar:1.10]
at org.apache.commons.configuration.PropertiesConfiguration.<init>(PropertiesConfiguration.java:252) ~[commons-configuration-1.10.jar:1.10]
at nl.tudelft.graphalytics.powergraph.Utils.loadConfiguration(Utils.java:69) [test-classes/:?]
at nl.tudelft.graphalytics.powergraph.algorithms.bfs.BreadthFirstSearchJobTest.execute(BreadthFirstSearchJobTest.java:55) [test-classes/:?]
at nl.tudelft.graphalytics.powergraph.algorithms.bfs.BreadthFirstSearchJobTest.executeUndirectedBreadthFirstSearch(BreadthFirstSearchJobTest.java:42) [test-classes/:?]
at nl.tudelft.graphalytics.validation.algorithms.bfs.BreadthFirstSearchValidationTest.testUndirectedBreadthFirstSearchOnValidationGraph(BreadthFirstSearchValidationTest.java:91) [graphalytics-validation-0.3.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_91]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_91]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_91]
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) [junit-4.11.jar:?]
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.11.jar:?]
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) [junit-4.11.jar:?]
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) [junit-4.11.jar:?]
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) [junit-4.11.jar:?]
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) [junit-4.11.jar:?]
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) [junit-4.11.jar:?]
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) [junit-4.11.jar:?]
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) [junit-4.11.jar:?]
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) [junit-4.11.jar:?]
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) [junit-4.11.jar:?]
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) [junit-4.11.jar:?]
at org.junit.runners.ParentRunner.run(ParentRunner.java:309) [junit-4.11.jar:?]
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264) [surefire-junit4-2.17.jar:2.17]
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153) [surefire-junit4-2.17.jar:2.17]
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124) [surefire-junit4-2.17.jar:2.17]
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200) [surefire-booter-2.17.jar:2.17]
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153) [surefire-booter-2.17.jar:2.17]
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) [surefire-booter-2.17.jar:2.17]
The build process with mvn clean package failed due to missing license headers.
The following line needs to contain the correct replacements:
graphalytics-platforms-powergraph/LICENSE
Line 190 in b1177e1
Hello. I am running on a 72-core machine. I saw from a previous issue for GraphLab that there may be concerns running on more than 64 threads, but when setting the powergraph.properties.num-threads to any value (in this case 4) the program still won't run. Here is the error.
Forgive me if this is a misconfiguration from PowerGraph.
ERROR: fiber_control.cpp(launch:270): Check failed: b<nworkers [4 < 4]
17:41:30.436 [ERROR] Algorithm "Local clustering coefficient" on graph "dota-league failed to complete:
nl.tudelft.graphalytics.PlatformExecutionException: failed to execute command
at nl.tudelft.graphalytics.powergraph.PowerGraphPlatform.executeAlgorithmOnGraph(PowerGraphPlatform.java:122) ~[graphalytics-platforms-powergraph-std-0.1.jar:?]
at nl.tudelft.graphalytics.BenchmarkSuiteRunner.execute(BenchmarkSuiteRunner.java:133) [graphalytics-platforms-powergraph-std-0.1.jar:?]
at nl.tudelft.graphalytics.Graphalytics.main(Graphalytics.java:48) [graphalytics-platforms-powergraph-std-0.1.jar:?]
Caused by: java.io.IOException: unexpected error code
at nl.tudelft.graphalytics.powergraph.PowerGraphJob.run(PowerGraphJob.java:80) ~[graphalytics-platforms-powergraph-std-0.1.jar:?]
at nl.tudelft.graphalytics.powergraph.PowerGraphPlatform.executeAlgorithmOnGraph(PowerGraphPlatform.java:120) ~[graphalytics-platforms-powergraph-std-0.1.jar:?]
... 2 more
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.