All Projects → Lewuathe → Docker Trino Cluster

Lewuathe / Docker Trino Cluster

Licence: apache-2.0
Multiple node presto cluster on docker container

Projects that are alternatives of or similar to Docker Trino Cluster

Presto Go Client
A Presto client for the Go programming language.
Stars: ✭ 183 (+125.93%)
Mutual labels:  sql, presto
Presto Ethereum
Presto Ethereum Connector -- SQL on Ethereum
Stars: ✭ 450 (+455.56%)
Mutual labels:  sql, presto
K8s Vagrant Multi Node
A Kubernetes Vagrant Multi node environment using kubeadm.
Stars: ✭ 141 (+74.07%)
Mutual labels:  makefile, cluster
Maha
A framework for rapid reporting API development; with out of the box support for high cardinality dimension lookups with druid.
Stars: ✭ 101 (+24.69%)
Mutual labels:  sql, presto
Ksync
Sync files between your local system and a kubernetes cluster.
Stars: ✭ 1,005 (+1140.74%)
Mutual labels:  cluster, docker-container
Presto
The official home of the Presto distributed SQL query engine for big data
Stars: ✭ 12,957 (+15896.3%)
Mutual labels:  sql, presto
Crate
CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of data in real-time.
Stars: ✭ 3,254 (+3917.28%)
Mutual labels:  sql, cluster
Trino
Official repository of Trino, the distributed SQL query engine for big data, formerly known as PrestoSQL (https://trino.io)
Stars: ✭ 4,581 (+5555.56%)
Mutual labels:  sql, presto
Hubot Slack Docker
Docker container running Github Hubot.
Stars: ✭ 21 (-74.07%)
Mutual labels:  makefile, docker-container
Dockerized lara
Build your Laravel App with Redis - Mongodb - MariaDB - Nginx - php7 - zsh
Stars: ✭ 9 (-88.89%)
Mutual labels:  makefile, docker-container
Docker Superset
Repository for Docker Image of Apache-Superset. [Docker Image: https://hub.docker.com/r/abhioncbr/docker-superset]
Stars: ✭ 86 (+6.17%)
Mutual labels:  sql, docker-container
Interference
opensource distributed database with base JPA implementation and event processing support
Stars: ✭ 57 (-29.63%)
Mutual labels:  sql, cluster
Dst Dedicated Server
Don't Starve Together dedicated server guide for all platforms (Linux, Mac, Windows) with Docker. Extensive documentation covering mods installation, server config and performance, world generation and setting up admins.
Stars: ✭ 187 (+130.86%)
Mutual labels:  cluster, docker-container
Linkis
Linkis helps easily connect to various back-end computation/storage engines(Spark, Python, TiDB...), exposes various interfaces(REST, JDBC, Java ...), with multi-tenancy, high performance, and resource control.
Stars: ✭ 2,323 (+2767.9%)
Mutual labels:  sql, presto
Datafusion
DataFusion has now been donated to the Apache Arrow project
Stars: ✭ 611 (+654.32%)
Mutual labels:  sql, cluster
Docker Redis Cluster
Dockerfile for Redis Cluster (redis 3.0+)
Stars: ✭ 1,035 (+1177.78%)
Mutual labels:  makefile, cluster
Directus Docker
Directus 6 Docker — Legacy Container [EOL]
Stars: ✭ 68 (-16.05%)
Mutual labels:  sql, docker-container
Pragmaticai
[Book-2019] Pragmatic AI: An Introduction to Cloud-based Machine Learning
Stars: ✭ 79 (-2.47%)
Mutual labels:  makefile
Awesome Blogdown
An awesome curated list of blogs built using blogdown
Stars: ✭ 80 (-1.23%)
Mutual labels:  makefile
Do more with twitter data
Tutorials for getting the most out of Twitter data.
Stars: ✭ 78 (-3.7%)
Mutual labels:  makefile

docker-trino-cluster CircleCI GitHub tag (latest by date) GitHub

docker-trino-cluster is a simple tool for launching multiple node trino cluster on docker container. The image is synched with the master branch of trino repository. Therefore you can try the latest trino for developing purpose easily.

Features

  • Multiple node cluster on docker container with docker-compose
  • Distribution of pre-build trino docker images
  • Override the catalog properties with custom one
  • Terraform module to launch ECS based cluster

Images

Role Image Pulls Tags
coordinator lewuathe/trino-coordinator Docker Pulls tags
worker lewuathe/trino-worker Docker Pulls tags

We are also providing ARM based images. Images for ARM have suffix -arm64v8 in the tag. For instance, the image of 336 has two types of images supporting multi-architectures. Following architectures are supported for now.

  • linux/amd64
  • linux/arm64/v8

Usage

Images are uploaded in DockerHub. These images are build with the corresponding version of trino. Image tagged with 306 uses trino 306 inside. Each docker image gets two arguments

Index Argument Description
1 discovery_uri Required parameter to specify the URI to coordinator host
2 node_id Optional parameter to specify the node identity. UUID will be generated if not given

You can launch multi node trino cluster in the local machine as follows.

# Create a custom network
$ docker network create trino_network

# Launch coordinator
$ docker run -p 8080:8080 -it \
    --net trino_network \
    --name coordinator \
    lewuathe/trino-coordinator:330-SNAPSHOT http://localhost:8080

# Launch two workers
$ docker run -it \
    --net trino_network \
    --name worker1 \
    lewuathe/trino-worker:330-SNAPSHOT http://coordinator:8080

$ docker run -it \
    --net trino_network \
    --name worker2 \
    lewuathe/trino-worker:330-SNAPSHOT http://coordinator:8080

docker-compose.yml

docker-compose enables us to coordinator multiple containers more easily. You can launch a multiple node docker trino cluster with the following yaml file. command is required to pass discovery URI and node id information which must be unique in a cluster. If node ID is not passed, the UUID is generated automatically at launch time.

version: '3'

services:
  coordinator:
    image: "lewuathe/trino-coordinator:${trino_VERSION}"
    ports:
      - "8080:8080"
    container_name: "coordinator"
    command: http://coordinator:8080 coordinator
  worker0:
    image: "lewuathe/trino-worker:${trino_VERSION}"
    container_name: "worker0"
    ports:
      - "8081:8081"
    command: http://coordinator:8080 worker0
  worker1:
    image: "lewuathe/trino-worker:${trino_VERSION}"
    container_name: "worker1"
    ports:
      - "8082:8081"
    command: http://coordinator:8080 worker1

The version can be specified as the environment variable.

$ trino_VERSION=330-SNAPSHOT docker-compose up

Custom Catalogs

While the image provides several default connectors (i.e. JMX, Memory, TPC-H and TPC-DS), you may want to override the catalog property with your own ones. That can be easily achieved by mounting the catalog directory onto /usr/local/trino/etc/catalog. Please look at volumes configuration for docker-compose.

services:
  coordinator:
    image: "lewuathe/trino-coordinator:${trino_VERSION}"
    ports:
      - "8080:8080"
    container_name: "coordinator"
    command: http://coordinator:8080 coordinator
    volumes:
      - ./example/etc/catalog:/usr/local/trino/etc/catalog

Terraform

You can launch trino cluster on AWS Fargate by using terraform-aws-trino module. The following Terraform configuration provides a trino cluster with 2 worker processes on Fargate.

module "trino" {
  source           = "github.com/Lewuathe/terraform-aws-trino"
  cluster_capacity = 2
}

output "alb_dns_name" {
  value = module.trino.alb_dns_name
}

Please see here for more detail.

Development

Build Image

$ make build

Snapshot Image

You may want to build the trino with your own build package for the development of trino itself.

$ cp /path/to/trino/trino-server/target/trino-server-330-SNAPSHOT.tar.gz /path/to/docker-trino-cluster/trino-base/
$ make snapshot

LICENSE

Apache v2 License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].