Coder Social home page Coder Social logo

bde2020-docker-spark's Introduction

Gitter chat Build Status Twitter

Spark docker

Docker images to:

  • Setup a standalone Apache Spark cluster running one Spark Master and multiple Spark workers
  • Build Spark applications in Java, Scala or Python to run on a Spark cluster
Currently supported versions:
  • Spark 3.2.0 for Hadoop 3.2 with OpenJDK 8 and Scala 2.12
  • Spark 3.1.2 for Hadoop 3.2 with OpenJDK 8 and Scala 2.12
  • Spark 3.1.1 for Hadoop 3.2 with OpenJDK 8 and Scala 2.12
  • Spark 3.1.1 for Hadoop 3.2 with OpenJDK 11 and Scala 2.12
  • Spark 3.0.2 for Hadoop 3.2 with OpenJDK 8 and Scala 2.12
  • Spark 3.0.1 for Hadoop 3.2 with OpenJDK 8 and Scala 2.12
  • Spark 3.0.0 for Hadoop 3.2 with OpenJDK 11 and Scala 2.12
  • Spark 3.0.0 for Hadoop 3.2 with OpenJDK 8 and Scala 2.12
  • Spark 2.4.5 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.4.4 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.4.3 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.4.1 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.4.0 for Hadoop 2.8 with OpenJDK 8 and Scala 2.12
  • Spark 2.4.0 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.3.2 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.3.1 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.3.1 for Hadoop 2.8 with OpenJDK 8
  • Spark 2.3.0 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.2.2 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.2.1 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.2.0 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.1.3 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.1.2 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.1.1 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.1.0 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.0.2 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.0.1 for Hadoop 2.7+ with OpenJDK 8
  • Spark 2.0.0 for Hadoop 2.7+ with Hive support and OpenJDK 8
  • Spark 2.0.0 for Hadoop 2.7+ with Hive support and OpenJDK 7
  • Spark 1.6.2 for Hadoop 2.6 and later
  • Spark 1.5.1 for Hadoop 2.6 and later

Using Docker Compose

Add the following services to your docker-compose.yml to integrate a Spark master and Spark worker in your BDE pipeline:

version: '3'
services:
  spark-master:
    image: bde2020/spark-master:3.2.0-hadoop3.2
    container_name: spark-master
    ports:
      - "8080:8080"
      - "7077:7077"
    environment:
      - INIT_DAEMON_STEP=setup_spark
  spark-worker-1:
    image: bde2020/spark-worker:3.2.0-hadoop3.2
    container_name: spark-worker-1
    depends_on:
      - spark-master
    ports:
      - "8081:8081"
    environment:
      - "SPARK_MASTER=spark://spark-master:7077"
  spark-worker-2:
    image: bde2020/spark-worker:3.2.0-hadoop3.2
    container_name: spark-worker-2
    depends_on:
      - spark-master
    ports:
      - "8082:8081"
    environment:
      - "SPARK_MASTER=spark://spark-master:7077"
  spark-history-server:
      image: bde2020/spark-history-server:3.2.0-hadoop3.2
      container_name: spark-history-server
      depends_on:
        - spark-master
      ports:
        - "18081:18081"
      volumes:
        - /tmp/spark-events-local:/tmp/spark-events

Make sure to fill in the INIT_DAEMON_STEP as configured in your pipeline.

Running Docker containers without the init daemon

Spark Master

To start a Spark master:

docker run --name spark-master -h spark-master -d bde2020/spark-master:3.2.0-hadoop3.2

Spark Worker

To start a Spark worker:

docker run --name spark-worker-1 --link spark-master:spark-master -d bde2020/spark-worker:3.2.0-hadoop3.2

Launch a Spark application

Building and running your Spark application on top of the Spark cluster is as simple as extending a template Docker image. Check the template's README for further documentation.

Kubernetes deployment

The BDE Spark images can also be used in a Kubernetes enviroment.

To deploy a simple Spark standalone cluster issue

kubectl apply -f https://raw.githubusercontent.com/big-data-europe/docker-spark/master/k8s-spark-cluster.yaml

This will setup a Spark standalone cluster with one master and a worker on every available node using the default namespace and resources. The master is reachable in the same namespace at spark://spark-master:7077. It will also setup a headless service so spark clients can be reachable from the workers using hostname spark-client.

Then to use spark-shell issue

kubectl run spark-base --rm -it --labels="app=spark-client" --image bde2020/spark-base:3.2.0-hadoop3.2 -- bash ./spark/bin/spark-shell --master spark://spark-master:7077 --conf spark.driver.host=spark-client

To use spark-submit issue for example

kubectl run spark-base --rm -it --labels="app=spark-client" --image bde2020/spark-base:3.2.0-hadoop3.2 -- bash ./spark/bin/spark-submit --class CLASS_TO_RUN --master spark://spark-master:7077 --deploy-mode client --conf spark.driver.host=spark-client URL_TO_YOUR_APP

You can use your own image packed with Spark and your application but when deployed it must be reachable from the workers. One way to achieve this is by creating a headless service for your pod and then use --conf spark.driver.host=YOUR_HEADLESS_SERVICE whenever you submit your application.

bde2020-docker-spark's People

Contributors

aaabramov avatar andreclaudino avatar bilalakil avatar casperlehmann avatar caspervg avatar cecton avatar celsomarques avatar colonellanda avatar data-drone avatar earthquakesan avatar edouardpoitras avatar erikap avatar fahadsiddiqui avatar gezimsejdiu avatar gmouchakis avatar ideal avatar madnificent avatar nborisenko avatar purbanow avatar raphgauthier avatar rmalleman avatar shimamoto avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.