Supported Configurations and System Requirements

This topic describes the supported configurations and system requirements for GemFire XD.

Before installing GemFire XD, make sure your system meets the minimum system requirements for installing and running the product.

Supported Configurations

The following table shows all supported configurations for GemFire XD.

Note: Pivotal GemFire XD 1.3.0 will be the last GemFire XD release to support Java SE 6.
Operating System Processor Architecture JVM Production or Developer Support
Red Hat EL 5, 6.4, 6.5 x86 (64bit)

Java SE 1.7.0_05

Java SE 1.6.0_26

CentOS 6.4, 6.5 x86 (64bit)

Java SE 1.7.0_05

Java SE 1.6.0_26

Windows Server 2008 R2 Standard* x86 (64bit and 32 bit)

Java SE 1.7.0_05

Java SE 1.6.0_26

Windows 7 SP1 Professional or Enterprise* x86 (64bit and 32 bit)

Java SE 1.7.0_05

Java SE 1.6.0_26

Ubuntu 10.11 x86 (64 bit)

Java SE 1.7.0_05

Java SE 1.6.0_26

Mac OS X 10.8, 10.9 x86 (64 bit)

Java SE 1.7.0_05

Java SE 1.6.0_26


*The Microsoft Loopback Adapter is not supported.

Note: The GemFire XD product download does not include Java; you must download and install a supported JDK for your system.

Host Machine Requirements

Requirements for each host:
  • A supported Java SE installation.
  • File system that supports long file names.
  • Adequate per-user quota of file handles (ulimit for Linux). Large deployments with HDFS-persistent tables can require several thousand file descriptors to manage the HDFS log files for partitioned table buckets. Ensure that you set a high enough ulimit (up to the hard limit of 81,920) for your system. See How GemFire XD Manages HDFS Data and Compaction for HDFS Log Files.
  • TCP/IP.
  • System clock set to the correct time.
  • For each Linux host, the hostname and host files must be properly configured. See the system manpages for hostname and hosts.
  • For each Linux host, configure the swap volume to be the same size as the physical RAM installed in the computer.
  • Time synchronization service such as Network Time Protocol (NTP).
Note: For troubleshooting, you must run a time synchronization service on all hosts. Synchronized time stamps allow you to merge log messages from different hosts, for an accurate chronological history of a distributed run.
Note: If you deploy GemFire XD to a virtualized host, see also Running GemFire XD in Virtualized Environments.

External Load Balancing, HA Solutions Not Supported

GemFire XD does not support using external load balancing techniques between clients and the GemFire XD distributed system, or between distributed system members. This includes software and hardware load balancers, Virtual IP Addresses (VIPs), and proxies. Similarly, external HA techniques such as Linux-HA and Windows Clustering are not supported.

Increase Unicast Buffer Size on Linux Platforms

On Linux platforms, execute the following commands as the root user to increase the unicast buffer size:
  1. Edit the /etc/sysctl.conf file to include the following lines:
  2. Reload sysctl.conf:
    sysctl -p

Disable SYN Cookies on Linux Platforms

Many default Linux installations use SYN cookies to protect the system against malicious attacks that flood TCP SYN packets. The use of SYN cookies dramatically reduces network bandwidth, and can be triggered by a running GemFire XD distributed system.

If your GemFire XD distributed system is otherwise protected against such attacks, disable SYN cookies to ensure that GemFire XD network throughput is not affected.

To disable SYN cookies permanently:
  1. Edit the /etc/sysctl.conf file to include the following line:
    net.ipv4.tcp_syncookies = 0

    Setting this value to zero disables SYN cookies.

  2. Reload sysctl.conf:
    sysctl -p

Filesystem Type for Linux Platforms

For optimum disk-store performance, Pivotal recommends the use of ext4 filesystems when operating on Linux or Solaris platforms. See Optimizing a System with Disk Stores.

Pivotal HD 2.1 Required for HDFS Integration

This release of GemFire XD is provided as a standalone product. However, GemFire XD 1.3 requires Pivotal HD Enterprise 2.1 in order to provide HDFS and HAWQ integration features. If you install GemFire XD on a machine that does not have a Pivotal HD installation, keep in mind that GemFire XD still requires libraries from the following Pivotal HD directories in order to support HDFS integration features:

For Linux deployments, you can manually copy these directories from a Pivotal HD installation to the GemFire XD machine in order to support HDFS tables. The gfxd script on Linux platforms automatically adds JAR files from these directories to the classpath when you start a GemFire XD member or run the gfxd utility. For Windows or Linux platforms, you can use an installed script to collect the required libraries into a ZIP file, and then copy the ZIP file to the ext-lib subdirectory of the GemFire XD installation directory. This automatically adds the libraries to the GemFire XD classpath, and is a necessary step for supporting HDFS tables on Windows platforms. See the procedures in Installing GemFire XD or Upgrading GemFire XD for more information.

Note: As a best practice for Linux platforms, you should try to install GemFire XD members and HDFS data nodes on the same machines. HDFS automatically tries to colocate new blocks on the local data nodes, which improves GemFire XD read and write performance for HDFS table data. If you deploy GemFire XD on the same machine as Pivotal HD, ensure that the machine meets the requirements for both products, and that disk resources are sufficient to support both the HDFS data and local GemFire XD table data required for that member. See also Requirements for Running GemFire XD and Hadoop on the Same Machine to lock the memory available to GemFire XD and avoid potential performance problems.

Requirements for Running GemFire XD and Hadoop on the Same Machine

Severe performance degradation can occur for insert-heavy workloads when GemFire XD and Hadoop run on the same machine and GemFire XD is configured with very large memory sizes (either off-heap or on-heap memory). The performance degradation occurs when the operating system pages out GemFire XD memory to disk.

To prevent this problem, perform these steps when deploying GemFire XD and Hadoop on the same machine:
  1. Increase the operating system's ulimit -l value (the maximum size that may be locked in memory) from the default of 32 KB to at least the total amount of memory used by GemFire XD for on-heap or off-heap storage.

    To permanently change the default limit for all users, edit the /etc/security/limits.conf file and add the line:

    * hard memlock limit-value-in-kb
  2. When you start each GemFire XD data store, include the gfxd -lock-memory option to prevent the operating system from paging out heap or off-heap memory.

Note: If you do not increase the "ulimit -l" value to at least the amount of memory used by GemFire XD, then GemFire XD will fail to start when you specify -lock-memory.

Note: Using locked memory in this manner increases the time required to start GemFire XD. The additional time required to start GemFire XD depends on the total amount of memory used, and can range from several seconds to 10 minutes or more. To improve startup time and reduce the potential of member timeouts, execute the following command before starting a GemFire XD member:
$ echo 1 > /proc/sys/vm/drop_caches

Requirements when using Hadoop without High Availability

If you do not configure your Hadoop system for high availability with redundant failover, then it is important that you set Hadoop timeout properties to these recommended values:
Table 1. Hadoop Client Timeout Properties
Client Timeout Property Recommended Value false 5000
ipc.client.connect.timeout 5000
ipc.client.connect.max.retries 2
ipc.client.connect.max.retries.on.timeouts 0
dfs.client.socket-timeout 30000

Using these values ensures that GemFire XD read operations to Hadoop quickly fail if the Hadoop node is unavailable (instead of hanging for a long period of time due to the default timeout intervals).

Restriction for Deploying HAWQ with GemFire XD

Due to the memory requirements and memory configuration required for each product, Pivotal does not support production deployments of GemFire XD and HAWQ on the same machine. Deploy GemFire XD and HAWQ on the same machine or virtual machine only for development or testing purposes.

Note: When you deploy GemFire XD with HAWQ on the same machine, you must set the swap volume to the same size as physical RAM. See Adding Swap Space in the RedHat or CentOS documentation for details.

Client Requirements

GemFire XD supports two JDBC drivers: a thin client JDBC driver and a peer JDBC driver. GemFire XD server instances and the peer driver are supported only with Java SE 6. You can download Java from

GemFire XD provides a managed ADO.NET driver that you can use for developing non-Java client applications. The ADO.NET driver uses IKVM technology to translate GemFire XD JDBC core libraries to .NET MSIL. The ADO.NET driver is supported for applications built using the Microsoft .NET 2.0 SP1 or higher framework.

In addition, GemFire XD now supports an ODBC driver that responds to ODBC API function calls in client applications. The GemFire XD ODBC driver supports ODBC 3.5 APIs and the unixODBC, iODBC, or Progress ODBC driver managers. The driver is a separate installation download from GemFire XD. SeeUsing ODBC Driver Functions in Client Applications for more information on driver installation requirements.