16.1. Installing GeoMesa Kudu

16.1.1. Installing the Binary Distribution

GeoMesa Kudu artifacts are available for download or can be built from source. The easiest way to get started is to download the most recent binary version (2.1.0) from GitHub.

Extract it somewhere convenient:

# download and unpackage the most recent distribution:
$ wget "https://github.com/locationtech/geomesa/releases/download/geomesa_2.11-$VERSION/geomesa-kudu_2.11-$VERSION-bin.tar.gz"
$ tar xvf geomesa-kudu_2.11-$VERSION-bin.tar.gz
$ cd geomesa-kudu_2.11-$VERSION
$ ls
bin/  conf/  dist/  docs/  examples/  lib/  LICENSE.txt  logs/

16.1.2. Building from Source

GeoMesa Kudu may also be built from source. For more information refer to Building from Source in the developer manual, or to the README.md file in the the source distribution. The remainder of the instructions in this chapter assume the use of the binary GeoMesa Kudu distribution. If you have built from source, the distribution is created in the target directory of geomesa-kudu/geomesa-kudu-dist.

More information about developing with GeoMesa may be found in the Developer Manual.

16.1.3. Setting up the Kudu Command Line Tools

GeoMesa comes with a set of command line tools for managing Kudu features located in geomesa-kudu_2.11-$VERSION/bin/ of the binary distribution.

In order to run distributed ingest from the command-line tools, Hadoop must be available on the classpath. By default, GeoMesa will attempt to read Hadoop related environment variables to build the classpath. You can configure environment variables and classpath settings in geomesa-kudu_2.11-$VERSION/conf/geomesa-env.sh or in your external env (e.g. bashrc file). The logic GeoMesa uses to determine which external entries to include on the classpath is:

1. If the environmental variable GEOMESA_HADOOP_CLASSPATH is set then GeoMesa will use it as the classpath and skip all other logic.

2. Next, if $HADOOP_HOME is set then GeoMesa will attempt to build the classpath by searching for JAR and configuration files in standard locations. Note that this is very specific to the installation or distribution of Hadoop you are using and may not be reliable.

3. If no environmental variables are set but the hadoop command is available then GeoMesa will generate the classpath by running hadoop classpath. This method of classpath determination may be slow, so it is recommended that you manually set these variables in your environment or the conf/geomesa-env.sh file.

If installing on a system without Hadoop, the install-hadoop.sh scripts in the bin directory may be used to download the required Hadoop JARs into the lib directory. You should edit this script to match the versions used by your installation.

In addition, geomesa-kudu will pull any additional entries from the GEOMESA_EXTRA_CLASSPATHS environment variable.

Note that the GEOMESA_EXTRA_CLASSPATHS and GEOMESA_HADOOP_CLASSPATH variables both follow standard Java Classpath conventions, which generally means that entries must be directories, JAR, or zip files. Individual XML files will be ignored. For example, to add a core-site.xml file to the classpath you must either include a directory on the classpath or add the file to a zip or JAR archive to be included on the classpath.

Use the geomesa-kudu classpath command in order to see what JARs are being used.

Due to licensing restrictions, dependencies for shape file support must be separately installed. Install them with the following scripts:

$ bin/install-jai.sh
$ bin/install-jline.sh

If desired, you may use the included script bin/geomesa-kudu configure to help set up the environment variables used by the tools. Otherwise, you may invoke the geomesa-kudu script using the fully-qualified path, and use the default configuration.

Note

See Logging Configuration for information about configuring the SLF4J implementation.

Test the command that invokes the GeoMesa Tools:

$ bin/geomesa-kudu
INFO  Usage: geomesa-kudu [command] [command options]
  Commands:
  ...

For more details, see Using the Kudu Command-Line Tools.

16.1.4. Installing GeoMesa Kudu in GeoServer

The Kudu GeoServer plugin is bundled by default in a GeoMesa binary distribution. To install, extract $GEOMESA_KUDU_HOME/dist/gs-plugins/geomesa-kudu-gs-plugin_2.11-$VERSION-install.tar.gz into GeoServer’s WEB-INF/lib directory.

Restart GeoServer after the JARs are installed.

16.1.4.1. Jackson Version

Warning

Some GeoMesa functions (in particular Arrow conversion) requires jackson-core-2.6.x. Some versions of GeoServer ship with an older version, jackson-core-2.5.0.jar. After installing the GeoMesa GeoServer plugin, be sure to delete the older JAR from GeoServer’s WEB-INF/lib folder.