D001.8 Docker搭建Spark集群(实践篇)

简介: 环境及资源准备; 生成容器; 检验Hadoop与Spark

0x01 环境及资源准备


1. 安装Docker


请参考:D001.5 Docker入门(超级详细基础篇)的“0x01 Docker的安装”小节


2. 准备资源


a. 根据文末总结的文件目录结构,拷贝文章的资源,资源请参考:D001.6 Docker搭建Hadoop集群

b. 模仿Hadoop自己写一份

c. Dockerfile参考文件

FROM ubuntu
MAINTAINER shaonaiyi shaonaiyi@163.com
ENV BUILD_ON 2017-11-16
RUN apt-get update -qqy
RUN apt-get -qqy install vim wget net-tools  iputils-ping  openssh-server
#添加JDK
ADD ./jdk-8u161-linux-x64.tar.gz /usr/local/
#添加hadoop
ADD ./hadoop-2.7.5.tar.gz  /usr/local/
#添加scala
ADD ./scala-2.11.8.tgz /usr/local/
#添加spark
ADD ./spark-2.2.0-bin-hadoop2.7.tgz /usr/local/
ENV CHECKPOINT 2019-01-14
#增加JAVA_HOME环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_161
#hadoop环境变量
ENV HADOOP_HOME /usr/local/hadoop-2.7.5
#scala环境变量
ENV SCALA_HOME /usr/local/scala-2.11.8
#spark环境变量
ENV SPARK_HOME /usr/local/spark-2.2.0-bin-hadoop2.7
#将环境变量添加到系统变量中
ENV PATH $SCALA_HOME/bin:$SPARK_HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$PATH
RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && \
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && \
    chmod 600 ~/.ssh/authorized_keys
#复制配置到/tmp目录
COPY config /tmp
#将配置移动到正确的位置
RUN mv /tmp/ssh_config    ~/.ssh/config && \
    mv /tmp/profile /etc/profile && \
    mv /tmp/masters $SPARK_HOME/conf/masters && \
    cp /tmp/slaves $SPARK_HOME/conf/ && \
    mv /tmp/spark-defaults.conf $SPARK_HOME/conf/spark-defaults.conf && \
    mv /tmp/spark-env.sh $SPARK_HOME/conf/spark-env.sh && \ 
    mv /tmp/hadoop-env.sh $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \
    mv /tmp/hdfs-site.xml $HADOOP_HOME/etc/hadoop/hdfs-site.xml && \ 
    mv /tmp/core-site.xml $HADOOP_HOME/etc/hadoop/core-site.xml && \
    mv /tmp/yarn-site.xml $HADOOP_HOME/etc/hadoop/yarn-site.xml && \
    mv /tmp/mapred-site.xml $HADOOP_HOME/etc/hadoop/mapred-site.xml && \
    mv /tmp/master $HADOOP_HOME/etc/hadoop/master && \
    mv /tmp/slaves $HADOOP_HOME/etc/hadoop/slaves && \
    mv /tmp/start-hadoop.sh ~/start-hadoop.sh && \
    mkdir -p /usr/local/hadoop2.7/dfs/data && \
    mkdir -p /usr/local/hadoop2.7/dfs/name
RUN echo $JAVA_HOME
#设置工作目录
WORKDIR /root
#启动sshd服务
RUN /etc/init.d/ssh start
#修改start-hadoop.sh权限为700
RUN chmod 700 start-hadoop.sh
#修改root密码
RUN echo "root:shaonaiyi" | chpasswd
CMD ["/bin/bash"]


0x02 生成容器


1. 生成样本镜像


a. 切换成root用户(密码:shaonaiyi)

su root


20190114142625989.png


b. 拷贝资源文件spark_sny_all进到docker_bigdata目录(如有则不用创建)

mkdir docker_bigdata


20190124145414300.png


c. 生成样本镜像:shaonaiyi/spark

cd docker_bigdata/spark_sny_all

docker build -t shaonaiyi/spark .

此过程时间根据自己网络情况与自己装docker时的配置有关(10分钟左右)


2019012414565262.png


出现下图表示成功:


2019012415550657.png


2. 创建bigdata-spark网络


a. 修改脚本权限

chmod 700 build_network.sh

b. 创建网络

./build_network.sh

修改及创建后如图:


2019012415550657.png

3. 启动容器

a. 修改脚本权限

cd config

chmod 700 start_containers.sh

b. 启动容器(映射的端口多的为master)

./start_containers.sh


20190124171411819.png


0x03 检验Hadoop与Spark

1. 启动Hadoop与Spark

a. 查看启动的容器(显示跟刚刚一样)

docker ps

b. 进入容器hadoop-master(可用自己的容器ID)

docker attach hadoop-master

c. 修改脚本执行权限

ll

d. 启动Hadoop集群

./start-hadoop.sh


20190125102007367.png


无报错,且有进程(如报错可以重新生成容器试试):


2019012510403492.png

2. Web UI界面查看

a. 切换终端,查看端口映射(可看到51070端口映射到docker的50070端口)


docker port hadoop-master

20190125112837877.png

b. 在我们的windows系统执行(虚拟机的ip:port)

ps:自行修改ip


20190125104812478.png


20190125105442492.png


20190125105442492.png


20190125105400796.png


2. 停止并删除容器指令


a. 修改脚本权限

cd /home/shaonaiyi/docker_bigdata/spark_sny_all/config/

chmod 700 stop_containers.sh

b. 删除容器

./stop_containers.sh

c. 查看执行的容器(没有则表示删除成功)

docker ps


20190114152932256.png


0xFF 总结

  1. 本文为搭建Spark与Hadoop集群的实践篇,与上一篇有异曲同工之处:

D001.7 Docker搭建Hadoop集群(实践篇)

  1. 本次教程使用了ubuntu镜像,可在docker hub官网搜索指定的版本:https://hub.docker.com/
  2. 后期会出教程:

a. 在集群内部传统模式安装HBase

b. 使用Dockerfile方式安装HBase




相关文章
|
3月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
167 2
|
4天前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
144 91
|
20天前
|
存储 分布式计算 调度
Spark Master HA 主从切换过程不会影响到集群已有作业的运行, 为什么?
Spark Master 的高可用性(HA)机制确保主节点故障时,备用主节点能无缝接管集群管理,保障稳定运行。关键在于: 1. **Driver 和 Executor 独立**:任务执行不依赖 Master。 2. **应用状态保持**:备用 Master 通过 ZooKeeper 恢复集群状态。 3. **ZooKeeper 协调**:快速选举新 Master 并同步状态。 4. **容错机制**:任务可在其他 Executor 上重新调度。 这些特性保证了集群在 Master 故障时仍能正常运行。
|
2月前
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
97 8
|
2月前
|
Prometheus 监控 Cloud Native
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
160 8
|
2月前
|
监控 Docker 容器
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
73 6
|
3月前
|
安全 持续交付 Docker
深入理解并实践容器化技术——Docker 深度解析
深入理解并实践容器化技术——Docker 深度解析
109 2
|
3月前
|
Prometheus 监控 持续交付
深入理解Docker容器化技术:从基础到实践
深入理解Docker容器化技术:从基础到实践
|
3月前
|
安全 Docker 微服务
深入理解Docker容器技术:从基础到实践
深入理解Docker容器技术:从基础到实践
|
3月前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践