Compose-Spark组件-单独启动(docker)

DockerFile代码注意事项

FROM openjdk:8u131-jre-alpine
# openjdk:8u131-jre-alpine作为基础镜像,体积小,自带jvm环境。
MAINTAINER <eway>
# 切换root用户避免权限问题,utf8字符集,bash解释器。安装一个同步为上海时区的时间
USER root
ENV LANG=C.UTF-8
RUN apk add --no-cache  --update-cache bash
ENV TZ=Asia/Shanghai
RUN apk --update add wget bash tzdata \
    && cp /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone
# 下载解压spark
WORKDIR /usr/local
RUN wget "http://www.apache.org/dist/spark/spark-2.0.2/spark-2.0.2-bin-hadoop2.7.tgz" \
   && tar -zxvf spark-*  \
   && mv spark-2.0.2-bin-hadoop2.7 spark \
   && rm -rf spark-2.0.2-bin-hadoop2.7.tgz

# 配置环境变量、暴露端口
ENV SPARK_HOME=/usr/local/spark
ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
ENV PATH=${PATH}:${JAVA_HOME}/bin:${SPARK_HOME}/bin

EXPOSE 6066 7077 8080 8081 4044
WORKDIR $SPARK_HOME
CMD ["/bin/bash"]

单个启动组件

启动 worker 容器

注:--link <目标容器名> 该参数的主要意思是本容器需要使用目标容器的服务,所以指定了容器的启动顺序,并且在该容器的 hosts 文件中添加目标容器名的 DNS。

启动 historyserver 容器

运行spark程序

运行 spark 程序例子 spark-submit #提交spark程序 --conf spark.eventLog.enabled=true # 允许spark程序日志的记录,最后在ip:18080能查询到 --conf spark.eventLog.dir=hdfs://namenode:9000/user/spark/history \

将spark程序日志放在hadoop的【hdfs】分布式文件系统。也可以挂在在本地。

但分布式文件系统因为分布式的原因他更安全,和能跨主机。 --master spark://namenode:7077 # spark-submit提交spark程序到--master指定的master节点 --class org.apache.spark.examples.SparkPi ./examples/jars/spark-examples_2.11-2.0.2.jar

docker-compose部署服务

Last updated

Was this helpful?