0


WSL中搭建SPARK平台(中)

提示:本部分教程将指导您在Docker容器中构建一个Spark集群,包括配置主节点和工作节点。

文章目录


第四章:在 ubuntu 上安装 docker

1.创建课程文件夹及所需目录和文件:

mkdir -p 课程文件夹/{opt,sm,sw1,sw2}

2.创建 hosts 文件:

cd 课程文件夹
touch hosts

在hosts文件中添加集群节点的IP和主机名:

127.0.0.1       localhost
172.19.0.2      sm
172.19.0.3      sw1
172.19.0.4      sw2

这些IP地址对应Docker网络中的容器IP,确保在创建Docker网络时指定了这些IP,或者使用Docker的静态IP分配。
这些IP地址对应Docker网络中的容器IP,确保在创建Docker网络时指定了这些IP,或者使用Docker的静态IP分配。

将 hosts 文件复制到各节点目录:

sudocp /课程文件夹/hosts /课程文件夹/sm/hosts
sudocp /课程文件夹/hosts /课程文件夹/sw1/hosts
sudocp /课程文件夹/hosts /课程文件夹/sw2/hosts

3.在opt目录下安装必要的软件,拥有足够的权限(需要用到 sudo)
将以下软件安装包下载并放置到opt目录下:

Anaconda(或Miniconda)
Hadoop 3.3.4
JDK 1.8.0_351
Spark 3.3.1(与Hadoop 3兼容的版本)
确保已安装必要的工具:

cd opt
sudoapt update
sudoaptinstall -y wgetcurltar

在这里插入图片描述

(1)安装 Miniconda3

下载 Miniconda3 安装包

sudowget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O Miniconda3.sh

安装 Miniconda3

sudobash Miniconda3.sh -b -p /课程文件夹/opt/conda/miniconda3

-b 表示静默安装,-p /opt/miniconda3 指定安装路径为 /opt/conda/miniconda3
在这里插入图片描述

(2) 安装 JDK(方法众多)

通过 Oracle 官网手动下载,登录 Oracle 账号,选择正确的安装包。
在这里插入图片描述

把JDK 安装包导入到wsl中的课程文件夹/opt:
打开文件资源管理器
在这里插入图片描述
在这里插入图片描述

找到opt,直接复制过来opt中:

提示:复制内容到 WSL(可使用 chmod 命令修改 WSL 文件夹权限,完成 Windows 资源管理器内的拖拽复制)
在这里插入图片描述

解压 JDK 文件:

mkdir -p /opt/jdk
tar -zxvf jdk-8u351-linux-x64.tar.gz -C /课程文件夹/opt/jdk

在这里插入图片描述

(3)安装 Hadoop
下载 Hadoop 安装包

sudowget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz

解压 Hadoop 安装包

sudomkdir -p /opt/hadoop
sudotar -zxvf hadoop-3.3.4.tar.gz -C /课程文件夹/opt/hadoop

Hadoop 安装路径为 /opt/hadoop/hadoop-3.3.4
在这里插入图片描述

(4)安装 Spark
下载 Spark 安装包

sudowget https://downloads.apache.org/spark/spark-3.3.1/spark-3.3.1-bin-hadoop3.tgz

解压 Spark 安装包

sudomkdir -p /opt/spark
sudotar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /课程文件夹/opt/spark

Spark 安装路径为 /opt/spark/spark-3.3.1-bin-hadoop3
在这里插入图片描述

(5)
安装完成后,可以删除下载的安装包以释放空间:

rm -f Miniconda3.sh
rm -f jdk-8u351-linux-x64.tar.gz
rm -f hadoop-3.3.4.tar.gz
rm -f spark-3.3.1-bin-hadoop3.tgz

在这里插入图片描述
目录文件结构:
在这里插入图片描述
(6)将 opt 目录中的子目录或文件分别复制到 sm、sw1 和 sw2 目录中:

cp -r /课程文件夹/opt/* /课程文件夹/sm/
cp -r /课程文件夹/opt/* /课程文件夹/sw1/
cp -r /课程文件夹/opt/* /课程文件夹/sw2/

在这里插入图片描述

4.创建环境变量 .bashrc

nano /课程文件夹/.bashrc

添加以下内容,根据目录结构配置环境变量:

#!/bin/bash# 公共环境变量exportJAVA_HOME=/root/jdk/jdk1.8.0_351
exportPATH=$JAVA_HOME/bin:$PATHexportHADOOP_HOME=/root/hadoop/hadoop-3.3.4
exportPATH=$HADOOP_HOME/bin:$PATHexportSPARK_HOME=/root/spark/spark-3.3.1-bin-hadoop3
exportPATH=$SPARK_HOME/bin:$PATHexportCONDA_HOME=/root/conda/miniconda3
exportPATH=$CONDA_HOME/bin:$PATH# 打印已配置的环境变量以验证echo"JAVA_HOME=$JAVA_HOME"echo"HADOOP_HOME=$HADOOP_HOME"echo"SPARK_HOME=$SPARK_HOME"echo"PATH=$PATH"

在这里插入图片描述

环境变量路径:
JAVA_HOME:指向 sm、sw1、sw2 节点挂载的 jdk 目录。
HADOOP_HOME:指向各节点的 hadoop 目录。
SPARK_HOME:指向各节点的 spark 目录。
CONDA_HOME:指向各节点的 conda 目录。

动态打印:
脚本会打印出配置的环境变量值,便于验证配置是否正确。

复制到各节点目录:

sudocp /课程文件夹/.bashrc /课程文件夹/sm/.bashrc
sudocp /课程文件夹/.bashrc /课程文件夹/sw1/.bashrc
sudocp /课程文件夹/.bashrc /课程文件夹/sw2/.bashrc

5.配置SSH服务

nano /课程文件夹/sshd_config

编辑sshd_config文件,添加以下内容:

Include /etc/ssh/sshd_config.d/*.conf
# 启用公钥认证
PubkeyAuthentication yes# 禁用密码认证
PasswordAuthentication no
# 允许 root 用户登录
PermitRootLogin yes

KbdInteractiveAuthentication no
UsePAM no
Subsystem       sftp    /usr/lib/openssh/sftp-server

这些配置确保了容器内SSH服务可以使用公钥认证,并允许root用户登录

复制到各节点目录:

sudocp /课程文件夹/sshd_config /课程文件夹/sm/sshd_config
sudocp /课程文件夹/sshd_config /课程文件夹/sw1/sshd_config
sudocp /课程文件夹/sshd_config /课程文件夹/sw2/sshd_config

查看目录:

6.启动docker sm:
在启动容器时,挂载 .bashrc、sshd_config 和 hosts 文件到容器中。

sudo docker run --rm -it \
  --name sm \
  --hostname sm \
  --net spark_network \
  --volume /课程文件夹/sm:/root \
  --volume /课程文件夹/sm/.bashrc:/root/.bashrc \
  --volume /课程文件夹/sm/sshd_config:/etc/ssh/sshd_config \
  --volume /课程文件夹/sm/hosts:/etc/hosts \
  cc /bin/bash -c "source ~/.bashrc && service ssh start && /bin/bash"

在这里插入图片描述
解释命令

  1. sudo docker run 启动一个新的 Docker 容器。
  2. –rm 在容器停止运行后,自动删除容器,避免占用存储空间。
  3. -it -i:保持容器的标准输入流打开,便于交互。 -t:为容器分配一个伪终端。 这两个选项一起让容器进入交互式模式,可以手动操作容器。
  4. –name sm 设置容器的名称为 sm,便于标识和管理。
  5. –hostname sm 设置容器内部的主机名为 sm,便于容器内程序(如 SSH 或 Spark)识别自己的节点名称。
  6. –net spark_network 将容器加入名为 spark_network 的 Docker 网络,允许容器间通信。 spark_network 是一个自定义网络,需提前创建,创建请参考 WSL中搭建SPARK平台(上)
  7. –volume /课程文件夹/sm:/root 挂载主机目录 /课程文件夹/sm 到容器内的 /root 目录。 容器内的 /root 目录会包含主机的 sm 子目录内容,如 conda、hadoop、jdk、spark 等文件夹。
  8. –volume /课程文件夹/sm/.bashrc:/root/.bashrc 将主机上的 .bashrc 文件挂载到容器的 /root/.bashrc 中。 容器内的用户会自动加载这个文件中的环境变量配置,例如 JAVA_HOME、HADOOP_HOME 等。
  9. –volume /课程文件夹/sm/sshd_config:/etc/ssh/sshd_config 将主机上的 sshd_config 文件挂载到容器的 /etc/ssh/sshd_config 中。 配置 SSH 服务的参数,例如是否允许密码登录、是否允许 root 用户登录等。
  10. –volume /课程文件夹/sm/hosts:/etc/hosts 将主机上的 hosts 文件挂载到容器的 /etc/hosts 中。 配置主机名到 IP 地址的映射,便于容器内的程序通过主机名互相通信。
  11. cc 指定要运行的 Docker 镜像名为 cc。 该镜像需要提前构建,包含基础依赖。创建请参考 WSL中搭建SPARK平台(上)
  12. /bin/bash -c “source ~/.bashrc && service ssh start && /bin/bash” 容器启动后的运行命令,分为以下几个部分: source ~/.bashrc: 加载 .bashrc 文件,配置环境变量。 service ssh start: 启动 SSH 服务,允许容器接收远程登录请求。 /bin/bash: 启动一个交互式 Bash Shell,保持容器运行并允许用户操作。

验证环境配置:
在这里插入图片描述

验证 SSH 配置:
在这里插入图片描述

验证 hosts 文件:

在这里插入图片描述

接下来就是在容器内生成 SSH 密钥,并测试免密登录,并配置hadoop和spark的配置文件,最终启动 Spark 集群。


本文转载自: https://blog.csdn.net/pillpeople/article/details/143836444
版权归原作者 是纯一呀 所有, 如有侵权,请联系我们删除。

“WSL中搭建SPARK平台(中)”的评论:

还没有评论