1. 程式人生 > >使用docker-compose建立spark叢集

使用docker-compose建立spark叢集

下載docker映象

sudo docker pull sequenceiq/spark:1.6.0

建立docker-compose.yml檔案

建立一個目錄,比如就叫 docker-spark,然後在其下建立docker-compose.yml檔案,內容如下:

version: '2'

services:
  master:
    image: sequenceiq/spark:1.6.0
    hostname: master
    ports:
      - "4040:4040"
      - "8042:8042"
      - "7077:7077"
      - "8088:8088"
- "8080:8080" restart: always command: bash /usr/local/spark/sbin/start-master.sh && ping localhost > /dev/null worker: image: sequenceiq/spark:1.6.0 depends_on: - master expose: - "8081" restart: always command: bash /usr/local/spark/sbin/start-slave.sh spark://master:7077 && ping localhost >/dev/null

其中包括一個master服務和一個worker服務。

建立並啟動spark叢集

sudo docker-compose up

叢集啟動後,我們可以檢視一下叢集狀態

sudo docker-compose ps
        Name                      Command               State                                                    Ports
----------------------------------------------------------------------
dockerspark_master_1   /etc/bootstrap.sh bash /us ...
Up ... dockerspark_worker_1 /etc/bootstrap.sh bash /us ... Up ...

預設我們建立的叢集包括一個master節點和一個worker節點。我們可以通過下面的命令擴容或縮容叢集。

sudo docker-compose scale worker=2

擴容後再次檢視叢集狀態,此時叢集變成了一個master節點和兩個worker節點。

sudo docker-compose ps
        Name                      Command               State                                                    Ports
------------------------------------------------------------------------
dockerspark_master_1   /etc/bootstrap.sh bash /us ...   Up      ...
dockerspark_worker_1   /etc/bootstrap.sh bash /us ...   Up      ...
dockerspark_worker_2   /etc/bootstrap.sh bash /us ...   Up      ...

此時也可以通過瀏覽器訪問 http://ip:8080 來檢視spark叢集的狀態。

執行spark作業

首先登入到spark叢集的master節點

sudo docker exec -it <container_name> /bin/bash

然後使用spark-submit命令來提交作業

/usr/local/spark/bin/spark-submit --master spark://master:7077 --class org.apache.spark.examples.SparkPi /usr/local/spark/lib/spark-examples-1.6.0-hadoop2.6.0.jar 1000

停止spark叢集

sudo docker-compose down