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




相关文章
|
9月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1271 108
|
8月前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
2330 10
|
8月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
526 99
|
7月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
839 6
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
937 79
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
1978 91
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
798 161
|
Prometheus 监控 Cloud Native
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
951 163
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
Ubuntu 关系型数据库 MySQL
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
523 16

热门文章

最新文章