docker for spark

Posted huaxiaoyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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  $(tail -n 1 /etc/hosts |awk ‘{print $1}‘):7077 2>&1 >/data/sparkwlog1.log &
    nohup spark-class org.apache.spark.deploy.worker.Worker  $(tail -n 1 /etc/hosts |awk ‘{print $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

 

以上是关于docker for spark的主要内容,如果未能解决你的问题,请参考以下文章

python+spark程序代码片段

spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)(代码片段

Spark闭包与序列化

利用docker搭建spark hadoop workbench

如何在 Toad for Oracle 中使用自定义代码片段?

Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段