GridGain Developers Hub
GitHub logo GridGain iso GridGain.com
GridGain Software Documentation

Setting Up

System Requirements

GridGain was officially tested on:

JDK

Oracle JDK 8 and later, Open JDK 8 and later, IBM JDK 8 and later

OS

Linux (any flavor), Mac OSX (10.6 and up), Windows (XP and up), Windows Server (2008 and up), Oracle Solaris, z/OS

ISA

x86, x64, SPARC, PowerPC

Network

No restrictions (10G recommended)

Running GridGain with Java 9 or later

To run GridGain with Java 9/10/11, follow these steps:

  1. Set the JAVA_HOME environment variable or Windows PATH to point to the Java installation directory.

  2. GridGain uses proprietary SDK APIs that are not available by default. You need to pass specific flags to JVM to make these APIs available. If you use the start-up script ignite.sh (or ignite.bat for Windows), you do not need to do anything because these flags are already set up in the script. Otherwise, provide the following parameters to the JVM of your application:

    --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED
    # Used to get access to java UNSAFE (access to offheap memory).
    
    --illegal-access=permit
    # Allows access to private fields without accessors, used for dependency injection in user classes (for example, @IgniteInstanceResource annotation).
    
    --add-exports=java.base/sun.nio.ch=ALL-UNNAMED
    # Used for java.nio Selector optimization.
    
    --add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
    # Used to enable JMX monitoring capability.
    
    --add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
    # Used to allow jvisualvm to connect to Ignite process.
    
    --add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
    # Used for fast object construction during marshalling/unmarshalling.
  3. TLSv1.3, which is available in Java 11, is not supported at the moment. Consider adding -Djdk.tls.client.protocols=TLSv1.2 if SSL between nodes is used.

Using Binary Distribution

  • Download the appropriate binary package from https://www.gridgain.com/resources/download.

  • Unzip the archive into a directory.

  • (Optional) Set the IGNITE_HOME environment variable to point to the installation folder and make sure there is no trailing / in the path.

Using Maven

The easiest way to start developing with GridGain is to use Maven.

  • Add GridGain’s External Repository to the maven configuration file (see the configuration example below).

  • Set the gridgain.version property to the actual version you want to use.

  • Add the gridgain-core dependency if you want to use GridGain Enterprise or Ultimate Edition.

<properties>
    <gridgain.version>8.7.8</gridgain.version>
</properties>

<repositories>
    <repository>
        <id>GridGain External Repository</id>
        <url>http://www.gridgainsystems.com/nexus/content/repositories/external</url>
    </repository>
</repositories>

<dependencies>

    <dependency>
        <groupId>org.gridgain</groupId>
        <artifactId>ignite-core</artifactId>
        <version>${gridgain.version}</version>
    </dependency>

    <dependency>
        <groupId>org.gridgain</groupId>
        <artifactId>ignite-spring</artifactId>
        <version>${gridgain.version}</version>
    </dependency>

    <dependency>
        <groupId>org.gridgain</groupId>
        <artifactId>ignite-indexing</artifactId>
        <version>${gridgain.version}</version>
    </dependency>

    <!-- Add this dependency to use GridGain Enterprise Edition features -->
    <!--dependency>
        <groupId>org.gridgain</groupId>
        <artifactId>gridgain-core</artifactId>
        <version>${gridgain.version}</version>
    </dependency-->

    <!-- Add this dependency to use GridGain Ultimate Edition features. -->
    <!--dependency>
        <groupId>org.gridgain</groupId>
        <artifactId>gridgain-ultimate</artifactId>
        <version>${gridgain.version}</version>
    </dependency-->

</dependencies>

Using Docker

If you want to run GridGain in Docker, refer to the Docker Deployment section.

Enabling Modules

GridGain ships with a number of modules that provide various functionality. You can import modules one by one, as required.

All modules are included in the binary distribution, but by default they are disabled (except for the ignite-core, ignite-spring, and ignite-indexing modules). Modules can be found in the lib/optional directory of the distribution package (each module is located in a separate sub-directory).

Depending on how you use GridGain, you can enable modules using one of the following methods:

  • If you use the binary distribution, move the lib/optional/{module-dir} to the lib directory before starting the node.

  • Add libraries from lib/optional/{module-dir} to the classpath of your application.

  • Add a module as a Maven dependency to your project.

    <dependency>
        <groupId>org.gridgain</groupId>
        <artifactId>ignite-indexing</artifactId>
        <version>${gridgain.version}</version>
    </dependency>

The following modules are available:

Module’s artifactId Description

ignite-aop

GridGain AOP module provides capability to turn any Java method to a distributed closure by adding @Gridify annotation to it.

ignite-aws

Cluster discovery on AWS S3. Refer to Amazon S3 IP Finder for details.

ignite-cassandra-serializers

The GridGain Cassandra Serializers module provides additional serializers to store objects as BLOBs in Cassandra. The module could be used as in conjunction with the GridGain Cassandra Store module.

ignite-cassandra-store

GridGain Cassandra Store provides a CacheStore implementation backed by the Cassandra database.

ignite-cloud

GridGain Cloud provides Apache jclouds implementations of the IP finder for TCP discovery.

ignite-direct-io

GridGain Direct IO is a plugin that provides a page store with the ability to write and read cache partitions in O_DIRECT mode.

ignite-gce

GridGain GCE provides Google Cloud Storage based implementations of IP finder for TCP discovery.

ignite-hibernate-core

ignite-hibernate_4.2

GridGain Hibernate provides Hibernate L2 cache implementation based on GridGain In-Memory Data Grid.

ignite-hibernate_5.1

GridGain Hibernate provides Hibernate L2 cache implementation based on GridGain In-Memory Data Grid.

ignite-indexing

SQL querying and indexing

ignite-jcl

Support for the Jakarta Commont Logging (JCL) framework.

ignite-jta

Integration of GridGain transactions with JTA.

ignite-kafka

GridGain Kafka Streamer provides capability to stream data from Kafka to GridGain caches.

ignite-kubernetes

GridGain Kubernetes module a TCP Discovery IP Finder that uses a dedicated Kubernetes service for IP addresses lookup of GridGain pods containerized by Kubernetes.

ignite-log4j

Support for Log4j

ignite-log4j2

Support for Log4j2

ignite-ml

GridGain ML Grid provides machine learning features and relevant data structures and methods of linear algebra, including on heap and off heap, dense and sparse, local and distributed implementations.

ignite-osgi

This module provides bridging components to make GridGain run seamlessly inside an OSGi container such as Apache Karaf.

ignite-osgi-karaf

This module contains a feature repository to facilitate installing GridGain into an Apache Karaf container.

ignite-osgi-paxlogging

This module is an OSGi fragment that exposes the following packages from the Pax Logging API bundle:

  • org.apache.log4j.varia

  • org.apache.log4j.xml

These packages are required when installing the ignite-log4j bundle, and are not exposed by default by the Pax Logging API - the logging framework used by Apache Karaf.

ignite-rest-http

GridGain REST-HTTP starts a Jetty-based server within a node that can be used to execute tasks and/or cache commands in grid using HTTP-based RESTful APIs.

ignite-scalar

The GridGain Scalar module provides Scala-based DSL with extensions and shortcuts for GridGain API.

ignite-scalar_2.10

GridGain Scalar module that supports Scala 2.10

ignite-schedule

This module provides functionality for scheduling jobs locally using UNIX cron-based syntax.

ignite-slf4j

Support for SLF4J logging framework.

ignite-spark

This module provides an implementation of Spark RDD abstraction that enables easy access to GridGain caches.

ignite-spring-data

GridGain Spring Data provides an integration with Spring Data framework.

ignite-spring-data_2.0

GridGain Spring Data 2.0 provides an integration with Spring Data 2.0 framework.

ignite-ssh

The GridGain SSH module provides capabilities to start GridGain nodes on remote machines via SSH.

ignite-tensorflow

The GridGain TensorFlow Integration Module allows using TensorFlow with GridGain. In this scenario GridGain will be a datasource for any TensorFlow model training.

ignite-urideploy

GridGain URI Deploy module provides capabilities to deploy tasks from different sources such as File System, HTTP, or even Email.

ignite-visor-console

Open source command line management and monitoring tool

ignite-web

GridGain Web allows you to start nodes inside any web container based on servlet and servlet context listener. In addition, this module provides capabilities to cache web sessions in a GridGain cache.

ignite-zookeeper

GridGain ZooKeeper provides a TCP Discovery IP Finder that uses a ZooKeeper directory to discover other GridGain nodes.

Configuration Recommendations

Below are some recommended configuration tips aimed at making it easier for you to operate a GridGain cluster or develop applications with GridGain.

Setting Work Directory

If you are going to use either binary distribution or Maven, you are encouraged to set up the work directory for GridGain. The work directory is used to store metadata information, index files, and your application data (if you use the Native Persistence feature). We recommend you always set up the work directory. You can do this in a few ways:

  • As an environmental variable:

    export IGNITE_WORK_DIR=/path/to/work/directory
  • In the configuration file:

    <bean class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="workDirectory" value="/path/to/work/directory"/>
        <!-- other properties -->
    </bean>
  • In the code:

    IgniteConfiguration igniteCfg = new IgniteConfiguration();
    igniteCfg.setWorkDirectory("/path/to/work/directory");
    var cfg = new IgniteConfiguration
    {
        WorkDirectory = "/path/to/work/directory"
    };
    IgniteConfiguration cfg;
    
    cfg.igniteHome = "/path/to/work/directory";

Logs play an important role when it comes to troubleshooting and finding what went wrong. Here are a few general tips on how to manage your log files:

  • Start GridGain in verbose mode:

    • If you use ignite.sh, specify the -v option.

    • If you start GridGain from Java code, add set the following system variable: IGNITE_QUIET=false.

  • Do not store log files in the /tmp folder. This folder is cleared up every time the server is restarted.

  • Make sure that there is enough space available on the storage where the log files are stored.

  • Archive old log files periodically to save on storage space.