edit

Getting Started

To run AthenaX, you need to build both AthenaX and Flink, and setup YARN cluster. They require Java 8 and Maven 3 to be built.

Build AthenaX

$ git clone https://github.com/uber/AthenaX.git
$ mvn clean install
$ git clone https://github.com/apache/flink.git
$ mvn clean install

Install YARN

Follow the instruction.

Configuring AthenaX

The next step is to write a YAML-based configuration file. Here is an example:

athenax.master.uri: http://localhost:8083
catalog.impl: com.foo.MyCatalogProvider
clusters:
  foo:
    yarn.site.location: hdfs:///app/athenax/yarn-site.xml
    athenax.home.dir: hdfs:///tmp/athenax
    flink.uber.jar.location: hdfs:///app/athenax/flink.jar
    localize.resources:
      - http://foo/log4j.properties
    additional.jars:
      - http://foo/connectors.jar
      - http://foo/foo.jar
extras:
  foo: bar

The meanings of the configuration are the following:

Entry Required Description
athenax.master.uri Yes The REST endpoint that the AthenaX master should listen to.
catalog.impl Yes The class name of your catalog provider.
clusters Yes Describe the YARN cluster each of which is a sub-entry of the configuration.
yarn.site.location Yes The location of the yarn-site.xml that contains the Hadoop-specific configuration of the cluster. Will be used by all instances in the cluster.
athenax.home.dir Yes A temporary directory used when starting all instances.
flink.uber.jar.location Yes The location of the Flink uber JAR that is generated from the previous step.
localize.resources Yes Additional files that will be localized and shipped along with all job instances but will not be added into the classpaths of the instances (e.g., log4j.properties).
additional.jars Yes Additional JARs that will be localized and added into the classpaths of the instances (e.g., the JARs of the connectors and their dependency).
extras Yes Additional configuration that can be used by your customization.

Please see AthenaXConfiguration for more details on the configuration.

Start

$ java -jar athenax-backend-0.1-SNAPSHOT.jar --conf <your configuration>

AthenaX will start serving the REST API on the configured endpoint. Users can start submitting jobs.

Customizing AthenaX

AthenaX is designed to be pluggable in order to satisfy the needs in different contexts. The catalog, connectors, data store, and the watchdog are all pluggable. Please refer to the respective implementation for more details.