PGX 19.1.0


The following instructions will allow you to get started quickly with PGX and to analyze graphs directly on your local machine. More advanced usage models, which include running PGX as a server, can be found at the end of this section.

System Requirements

The requirements for PGX on Oracle Linux (x86_64), on which PGX is actively tested, are the following:

  • Java SE 8 Development Kit (JDK8)
  • The enterprise scheduler of PGX Shared Memory requires the following shared libaries (with the minimum symbol versioning information mentioned in the parenthesis). If the requirements are not met, PGX Shared Memory falls back to the basic scheduler.
    • The GNU C Library (GLIBC_2.6)
    • The GNU dynamic linker/loader (GLIBC_2.3)
    • The POSIX Threading Library (GLIBC_2.3.2)
    • The Standard Math Library (GLIBC_2.2.5)
    • The Realtime Extensions library (GLIBC_2.2.5)
    • The NUMA policy support library (libnuma_1.2)
    • The GCC low-level runtime library (GCC_3.4)
    • The GNU C++ Library (GLIBCXX_3.4.19 and CXXABI_1.3.5)
  • In the case of PGX in distributed execution mode, each machine of the target cluster must fulfill the same requirements as the enterprise scheduler of PGX Shared Memory mentioned above. Each machine additionally requires the following shared libaries (with the minimum symbol versioning information mentioned in parenthesis):
    • The GNU Offloading and Multi Processing Runtime Library (GOMP_1.0 and OMP_3.0)

Checking for the existence of the required shared libraries

To check existing instances of a library (e.g., on your system, you can use the following commands:

# install 'mlocate' package in case the commands below does not work
sudo updatedb

To verify that an instance of a library has the minimum required symbol versioning information mentioned above, e.g., GLIBCXX_3.4.19 and CXXABI_1.3.5 for the library, you can use the following commands:

strings /path/to/ | grep -x GLIBCXX_3.4.19
strings /path/to/ | grep -x CXXABI_1.3.5

If no line is returned, then the library does not support the minimum required symbol versioning information. In this case, you need to get the required shared libraries with at least the minimum required symbol versioning information.

Getting and pointing to the required shared libraries

You can use your Linux distribution's package manager and software repositories to search and install the required shared libraries. Alternatively, you can look for newer versions of the shared libraries possibly brought in by other software, or you can build the shared libraries from sources. Please note that the shared libraries must have the minimum symbol versioning information mentioned above.

Specifically for the, and shared libraries, you can either update the system's default GCC to version 4.8.2 (or newer) or, if an official update is not available, manually upgrade the C++ libraries.

Once you have the newer libraries somewhere in the system, either in some directory discovered via the locate command or in /usr/local/lib64, you can then simply set your LD_LIBRARY_PATH to point to the directory containing the shared libraries before starting PGX:

export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH

To avoid setting the LD_LIBRARY_PATH after every login, you can add the command above to your ~/.bash_profile.

Basic Server Installation

  1. Install the Oracle JDK 8, if it is not already on your system. Refer to your system administrator, or follow these instructions to install:

    • Download Java SE 8 Development Kit (JDK8) from here .
    • Follow the installation instructions located above.
    • Make sure the JAVA_HOME environment variable points to the JDK8 home directory, e.g. export JAVA_HOME=/usr/lib/jvm/java-8-oracle.
  2. Download the PGX server package

  3. Unpack the downloaded zip file into a directory of your choice. For example, unzip -d /opt/pgx.

  4. cd into the installation directory. Verify PGX boots up by starting the PGX Shell:

    cd $PGX_HOME

See our troubleshooting section if you encounter problems.

Groovy Installation for PGX Shell

(This is only required for optional PGX Shell execution)

PGX Shell is a command-line tool that allows interactive execution of PGX API. Since PGX Shell itself is a Groovy application, it requires installation of Groovy for execution. For Linux and OSX, please follow the groovy installation guide. For Windows, please download the Windows installer and follow the Windows installation guide. Once the installation is finished. please make sure that GROOVY_HOME environment variable is set to the groovy installation directory.

Directory Structure

  • bin - PGX executables
  • conf - PGX configuration files
  • distributed - PGX distributed server binaries (multiple machine deployment)
  • examples - Example code (Java, Green-Marl) and example graph data
  • shared-memory - PGX shared-memory server binaries (single machine deployment)
  • yarn - libraries for Hadoop YARN deployment

Advanced use cases

Start a PGX Server

Read in the following tutorials how to start the PGX server in shared memory mode (single machine, scale up) or distributed mode (multiple machines, scale out):

Start the PGX shared memory server Start the PGX distributed server

PGX on Hadoop

PGX also supports HDFS and runs on YARN. Details for these can be found in these tutorials:

Load from and store to HDFS Run PGX as YARN application

Deploy PGX as Servlet Web Application

You can also run shared memory PGX inside of a web application. PGX ships with a WAR-file which can be deployed directly into your favorite servlet container:

Deploy PGX into Weblogic Deploy PGX into Tomcat

PGX Client

Do you already have a PGX server running? Refer to this tutorial to learn how to connect to a server:

Connect to a running PGX server