WSL中搭建SPARK平台(中)

打印 上一主题 下一主题

主题 859|帖子 859|积分 2577

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

第四章:在 ubuntu 上安装 docker
1.创建课程文件夹及所需目次和文件:
  1. mkdir -p 课程文件夹/{opt,sm,sw1,sw2}
复制代码
2.创建 hosts 文件:
  1. cd 课程文件夹
  2. touch hosts
复制代码
在hosts文件中添加集群节点的IP和主机名:
  1. 127.0.0.1       localhost
  2. 172.19.0.2      sm
  3. 172.19.0.3      sw1
  4. 172.19.0.4      sw2
复制代码

这些IP地址对应Docker网络中的容器IP,确保在创建Docker网络时指定了这些IP,大概利用Docker的静态IP分配。
将 hosts 文件复制到各节点目次:
  1. sudo cp /课程文件夹/hosts /课程文件夹/sm/hosts
  2. sudo cp /课程文件夹/hosts /课程文件夹/sw1/hosts
  3. sudo cp /课程文件夹/hosts /课程文件夹/sw2/hosts
复制代码
3.在opt目次下安装必要的软件,拥有足够的权限(必要用到 sudo)
将以下软件安装包下载并放置到opt目次下:
Anaconda(或Miniconda)
Hadoop 3.3.4
JDK 1.8.0_351
Spark 3.3.1(与Hadoop 3兼容的版本)
确保已安装必要的工具:
  1. cd opt
  2. sudo apt update
  3. sudo apt install -y wget curl tar
复制代码

(1)安装 Miniconda3
下载 Miniconda3 安装包
  1. sudo wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O Miniconda3.sh
复制代码
安装 Miniconda3
  1. sudo bash 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 文件:
  1. mkdir -p /opt/jdk
  2. tar -zxvf jdk-8u351-linux-x64.tar.gz -C /课程文件夹/opt/jdk
复制代码

(3)安装 Hadoop
下载 Hadoop 安装包
  1. sudo wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
复制代码
解压 Hadoop 安装包
  1. sudo mkdir -p /opt/hadoop
  2. sudo tar -zxvf hadoop-3.3.4.tar.gz -C /课程文件夹/opt/hadoop
复制代码
Hadoop 安装路径为 /opt/hadoop/hadoop-3.3.4

(4)安装 Spark
下载 Spark 安装包
  1. sudo wget https://downloads.apache.org/spark/spark-3.3.1/spark-3.3.1-bin-hadoop3.tgz
复制代码
解压 Spark 安装包
  1. sudo mkdir -p /opt/spark
  2. sudo tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /课程文件夹/opt/spark
复制代码
Spark 安装路径为 /opt/spark/spark-3.3.1-bin-hadoop3

(5)
安装完成后,可以删除下载的安装包以释放空间:
  1. rm -f Miniconda3.sh
  2. rm -f jdk-8u351-linux-x64.tar.gz
  3. rm -f hadoop-3.3.4.tar.gz
  4. rm -f spark-3.3.1-bin-hadoop3.tgz
复制代码

目次文件结构:

(6)将 opt 目次中的子目次或文件分别复制到 sm、sw1 和 sw2 目次中:
  1. cp -r /课程文件夹/opt/* /课程文件夹/sm/
  2. cp -r /课程文件夹/opt/* /课程文件夹/sw1/
  3. cp -r /课程文件夹/opt/* /课程文件夹/sw2/
复制代码

4.创建情况变量 .bashrc
  1. nano /课程文件夹/.bashrc
复制代码
添加以下内容,根据目次结构配置情况变量:
  1. #!/bin/bash
  2. # 公共环境变量
  3. export JAVA_HOME=/root/jdk/jdk1.8.0_351
  4. export PATH=$JAVA_HOME/bin:$PATH
  5. export HADOOP_HOME=/root/hadoop/hadoop-3.3.4
  6. export PATH=$HADOOP_HOME/bin:$PATH
  7. export SPARK_HOME=/root/spark/spark-3.3.1-bin-hadoop3
  8. export PATH=$SPARK_HOME/bin:$PATH
  9. export CONDA_HOME=/root/conda/miniconda3
  10. export PATH=$CONDA_HOME/bin:$PATH
  11. # 打印已配置的环境变量以验证
  12. echo "JAVA_HOME=$JAVA_HOME"
  13. echo "HADOOP_HOME=$HADOOP_HOME"
  14. echo "SPARK_HOME=$SPARK_HOME"
  15. echo "PATH=$PATH"
复制代码

情况变量路径:
JAVA_HOME:指向 sm、sw1、sw2 节点挂载的 jdk 目次。
HADOOP_HOME:指向各节点的 hadoop 目次。
SPARK_HOME:指向各节点的 spark 目次。
CONDA_HOME:指向各节点的 conda 目次。
动态打印:
脚本会打印出配置的情况变量值,便于验证配置是否精确。
复制到各节点目次:
  1. sudo cp /课程文件夹/.bashrc /课程文件夹/sm/.bashrc
  2. sudo cp /课程文件夹/.bashrc /课程文件夹/sw1/.bashrc
  3. sudo cp /课程文件夹/.bashrc /课程文件夹/sw2/.bashrc
复制代码
5.配置SSH服务
  1. nano /课程文件夹/sshd_config
复制代码
编辑sshd_config文件,添加以下内容:
  1. Include /etc/ssh/sshd_config.d/*.conf
  2. # 启用公钥认证
  3. PubkeyAuthentication yes
  4. # 禁用密码认证
  5. PasswordAuthentication no
  6. # 允许 root 用户登录
  7. PermitRootLogin yes
  8. KbdInteractiveAuthentication no
  9. UsePAM no
  10. Subsystem       sftp    /usr/lib/openssh/sftp-server
复制代码
这些配置确保了容器内SSH服务可以利用公钥认证,并答应root用户登录
复制到各节点目次:
  1. sudo cp /课程文件夹/sshd_config /课程文件夹/sm/sshd_config
  2. sudo cp /课程文件夹/sshd_config /课程文件夹/sw1/sshd_config
  3. sudo cp /课程文件夹/sshd_config /课程文件夹/sw2/sshd_config
复制代码
检察目次:

6.启动docker sm:
在启动容器时,挂载 .bashrc、sshd_config 和 hosts 文件到容器中。
  1. sudo docker run --rm -it \
  2.   --name sm \
  3.   --hostname sm \
  4.   --net spark_network \
  5.   --volume /课程文件夹/sm:/root \
  6.   --volume /课程文件夹/sm/.bashrc:/root/.bashrc \
  7.   --volume /课程文件夹/sm/sshd_config:/etc/ssh/sshd_config \
  8.   --volume /课程文件夹/sm/hosts:/etc/hosts \
  9.   cc /bin/bash -c "source ~/.bashrc && service ssh start && /bin/bash"
复制代码

解释命令

  • sudo docker run
    启动一个新的 Docker 容器。
  • –rm
    在容器停止运行后,自动删除容器,避免占用存储空间。
  • -it
    -i:保持容器的尺度输入流打开,便于交互。
    -t:为容器分配一个伪终端。
    这两个选项一起让容器进入交互式模式,可以手动利用容器。
  • –name sm
    设置容器的名称为 sm,便于标识和管理。
  • –hostname sm
    设置容器内部的主机名为 sm,便于容器内程序(如 SSH 或 Spark)辨认本身的节点名称。
  • –net spark_network
    将容器加入名为 spark_network 的 Docker 网络,答应容器间通讯。
    spark_network 是一个自界说网络,需提前创建,创建请参考 WSL中搭建SPARK平台(上)
  • –volume /课程文件夹/sm:/root
    挂载主机目次 /课程文件夹/sm 到容器内的 /root 目次。
    容器内的 /root 目次会包罗主机的 sm 子目次内容,如 conda、hadoop、jdk、spark 等文件夹。
  • –volume /课程文件夹/sm/.bashrc:/root/.bashrc
    将主机上的 .bashrc 文件挂载到容器的 /root/.bashrc 中。
    容器内的用户会自动加载这个文件中的情况变量配置,例如 JAVA_HOME、HADOOP_HOME 等。
  • –volume /课程文件夹/sm/sshd_config:/etc/ssh/sshd_config
    将主机上的 sshd_config 文件挂载到容器的 /etc/ssh/sshd_config 中。
    配置 SSH 服务的参数,例如是否答应暗码登录、是否答应 root 用户登录等。
  • –volume /课程文件夹/sm/hosts:/etc/hosts
    将主机上的 hosts 文件挂载到容器的 /etc/hosts 中。
    配置主机名到 IP 地址的映射,便于容器内的程序通过主机名相互通讯。
  • cc
    指定要运行的 Docker 镜像名为 cc。
    该镜像必要提前构建,包罗基础依赖。创建请参考 WSL中搭建SPARK平台(上)
  • /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 集群。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莫张周刘王

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表