An open API service indexing awesome lists of open source software.

https://github.com/apache/accumulo-proxy

Apache Accumulo Proxy
https://github.com/apache/accumulo-proxy

accumulo big-data hacktoberfest thrift

Last synced: 5 months ago
JSON representation

Apache Accumulo Proxy

Awesome Lists containing this project

README

        

[Apache Accumulo][accumulo] Proxy
--
[![Build Status][ti]][tl] [![Maven Central][mi]][ml] [![Javadoc][ji]][jl] [![Apache License][li]][ll]

This application acts as an Apache Accumulo Java client, and exposes its API as
an Apache [Thrift] service so that users can use their preferred programming
language to communicate with Accumulo (provided that language has a supported
Thrift language binding).

# Running the Accumulo proxy

1. Build the proxy tarball and install it.

```
cd /path/to/accumulo-proxy
mvn clean package -Ptarball
tar xzvf ./target/accumulo-proxy-2.0.0-SNAPSHOT-bin.tar.gz -C /path/to/install
```

2. Edit `proxy.properties` and run the proxy.

```
cd /path/to/install/accumulo-proxy-2.0.0-SNAPSHOT
./bin/accumulo-proxy -p conf/proxy.properties
```

# Docker Environment

The Accumulo Proxy can also now be packaged and started in a Docker container, see the [DOCKER.md](DOCKER.md) for full details.

# Build language specific bindings

Bindings have been built in `src/main/` for Java, Python, and Ruby.

Bindings for other languages can be built using the Thrift compiler. Follow the [Thrift tutorial]
to install a Thrift compiler and use the following command to generate language bindings.

```
thrift -r --gen
```

# Create an Accumulo client using Python

Run the commands below to install the Python bindings and create an example Python client:

```bash
mkdir accumulo-client/
cd accumulo-client/
pipenv --python 2.7
pipenv install thrift
pipenv install -e /path/to/accumulo-proxy/src/main/python
cp /path/to/accumulo-proxy/src/main/python/basic_client.py .
# Edit credentials if needed
vim basic_client.py
pipenv run python2 basic_client.py
```

# Create an Accumulo client using Ruby

Run the command below to create an example Ruby client:

```bash
mkdir accumulo-client/
cd accumulo-client/
cp /path/to/accumulo-proxy/src/main/ruby/Gemfile .
vim Gemfile # Set correct path
cp /path/to/accumulo-proxy/src/main/ruby/client.rb .
gem install bundler
bundle install
bundle exec ruby client.rb
```

# Java clients to Proxy

[Java clients] to the Proxy can be written to limit access to the cluster. The proxy can be placed
on a server in the cluster and clients can communicate with proxy from outside of the cluster.

[Java clients]: docs/java_client.md
[accumulo]: https://accumulo.apache.org
[Thrift]: https://thrift.apache.org
[Thrift tutorial]: https://thrift.apache.org/tutorial/
[li]: https://img.shields.io/badge/license-ASL-blue.svg
[ll]: https://www.apache.org/licenses/LICENSE-2.0
[mi]: https://maven-badges.herokuapp.com/maven-central/org.apache.accumulo/accumulo-proxy/badge.svg
[ml]: https://maven-badges.herokuapp.com/maven-central/org.apache.accumulo/accumulo-proxy/
[ji]: https://www.javadoc.io/badge/org.apache.accumulo/accumulo-proxy.svg
[jl]: https://www.javadoc.io/doc/org.apache.accumulo/accumulo-proxy
[ti]: https://github.com/apache/accumulo-proxy/workflows/QA/badge.svg
[tl]: https://github.com/apache/accumulo-proxy/actions