1. 程式人生 > >docker for spark

docker for spark

專案需求,有一個spark-streaming的程式,讀kafka的資料,需要構建一個不使用hadoop的spark

以下建立的映象參考網路,可以稍加修改就可以使用不同的版本。

可單獨啟動master,worker來構建一個standaline的叢集。

也可以預設啟動,啟動後,構建的是一個master,兩個worker的叢集。

使用的檔案如下:

start-spark spark-2.2.1-bin-hadoop2.7.tgz Dockerfile

#start-spark
#!/bin/bash if [[ "${1}" = 'master' ]]; then # Start Spark Master spark
-class org.apache.spark.deploy.master.Master -h $(hostname) 2>&1 >/data/sparklog-server.log elif [[ "${1}" = 'worker' ]]; then # Start Spark Worker spark-class org.apache.spark.deploy.worker.Worker spark://$2:7077 2>&1 >/data/sparklog.log else #start master and two workers nohup spark
-class org.apache.spark.deploy.master.Master -h $(hostname) 2>&1 >>/data/sparklog-server.log & #sleep 5 to wait spark-server start sleep 3 nohup spark-class org.apache.spark.deploy.worker.Worker $(cat /etc/hosts|grep spark_master|cut -f 1):7077 2>&1 >/data/sparkwlog1.log & nohup spark
-class org.apache.spark.deploy.worker.Worker $(cat /etc/hosts|grep spark_master|cut -f 1):7077 2>&1 >/data/sparkwlog2.log exit 1 fi

Dockerfile

FROM openjdk:8-jre

MAINTAINER [email protected]


WORKDIR spark 
COPY spark*.tgz ./
RUN  tar zxf spark*.tgz && mv spark-2.2.1-bin-hadoop2.7/* ./ \
     && rm -fr spark-2.2.1-bin-hadoop2.7 && rm spark*.tgz

EXPOSE 6066 7077 8080 8081


# Copy start script
COPY start-spark /usr/bin/start-spark
RUN  chmod +x /usr/bin/start-spark

ENV SPARK_HOME /spark
ENV PATH /spark/bin:$PATH 
ENV PATH /spark/sbin:$PATH

#volume /data
VOLUME /data

#entrypoint
CMD ["start-spark","all"]

使用方法:

構建 docker build -t spark .

1.啟動master

#start spark master

注意:--net 是我自己已經建立的一個橋接網路
docker run --rm -it --name spark_master -p 7077:7077 -p 8080:8080 --net loginsight -h spark_master spark start-spark master

2.啟動worker

docker run --rm -it  --net loginsight --name spark_worker1 spark start-spark worker $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' spark_master)

3.預設啟動

docker run --rm -it --name spark_master -p 7077:7077 -p 8080:8080 --net loginsight -h spark_master spark