提示:本部分教程将引导您在Docker容器中构建一个Spark集群,包罗配置主节点和工作节点。
第四章:在 ubuntu 上安装 docker
1.创建课程文件夹及所需目次和文件:
- mkdir -p 课程文件夹/{opt,sm,sw1,sw2}
复制代码 2.创建 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分配。
将 hosts 文件复制到各节点目次:
- sudo cp /课程文件夹/hosts /课程文件夹/sm/hosts
- sudo cp /课程文件夹/hosts /课程文件夹/sw1/hosts
- 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兼容的版本)
确保已安装必要的工具:
- cd opt
- sudo apt update
- sudo apt install -y wget curl tar
复制代码
(1)安装 Miniconda3
下载 Miniconda3 安装包
- sudo wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O Miniconda3.sh
复制代码 安装 Miniconda3
- 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 文件:
- mkdir -p /opt/jdk
- tar -zxvf jdk-8u351-linux-x64.tar.gz -C /课程文件夹/opt/jdk
复制代码
(3)安装 Hadoop
下载 Hadoop 安装包
- sudo wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
复制代码 解压 Hadoop 安装包
- sudo mkdir -p /opt/hadoop
- sudo tar -zxvf hadoop-3.3.4.tar.gz -C /课程文件夹/opt/hadoop
复制代码 Hadoop 安装路径为 /opt/hadoop/hadoop-3.3.4
(4)安装 Spark
下载 Spark 安装包
- sudo wget https://downloads.apache.org/spark/spark-3.3.1/spark-3.3.1-bin-hadoop3.tgz
复制代码 解压 Spark 安装包
- sudo mkdir -p /opt/spark
- sudo tar -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
添加以下内容,根据目次结构配置情况变量:
- #!/bin/bash
- # 公共环境变量
- export JAVA_HOME=/root/jdk/jdk1.8.0_351
- export PATH=$JAVA_HOME/bin:$PATH
- export HADOOP_HOME=/root/hadoop/hadoop-3.3.4
- export PATH=$HADOOP_HOME/bin:$PATH
- export SPARK_HOME=/root/spark/spark-3.3.1-bin-hadoop3
- export PATH=$SPARK_HOME/bin:$PATH
- export CONDA_HOME=/root/conda/miniconda3
- export PATH=$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 目次。
动态打印:
脚本会打印出配置的情况变量值,便于验证配置是否精确。
复制到各节点目次:
- sudo cp /课程文件夹/.bashrc /课程文件夹/sm/.bashrc
- sudo cp /课程文件夹/.bashrc /课程文件夹/sw1/.bashrc
- sudo cp /课程文件夹/.bashrc /课程文件夹/sw2/.bashrc
复制代码 5.配置SSH服务
编辑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用户登录
复制到各节点目次:
- sudo cp /课程文件夹/sshd_config /课程文件夹/sm/sshd_config
- sudo cp /课程文件夹/sshd_config /课程文件夹/sw1/sshd_config
- sudo cp /课程文件夹/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"
复制代码
解释命令
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |