任务1:大数据平台及组件搭建
(0 / 20分)
本搭建模块对应虚拟机为:master、slave1、slave2
相关压缩包路径为: /root/software/package/****,对应安装路径为 /root/software/
子任务一:基础环境搭建(0 / 3分)
本任务需要使用 root 用户完成相关配置,安装 Hadoop需要配置前置环境。命令中要求使用绝对路径,具体要求如下:
考核条件如下 :
1.修改三台节点的主机名称分别为 master、slave1 和 slave2,并编辑 hosts 文件添加IP主机名映射;
(0/ 1分)
注意:对应主机名及IP信息参考页面左侧"操作环境"相关内容,如果遇到内网/公网双重IP信息,主机之间使用内网IP进行通信。
操作环境:
master、slave1、slave2、master、slave1、slave2
2.执行命令生成公钥、私钥,实现三台机器间的免秘登陆(master到localhost、slave1、slave2);
(0/ 1分)
(1)配置免密登录,在 master 节点上生成非对称加密类型( RSA 或 DSA)的 SSH 密钥对;
(2)将 master 节点中的公钥拷贝到 slave1 和 slave2 节点上;
(3)在 master 节点通过 SSH 连接 slave1 和 slave2 验证免密登录配置是否成功;
操作环境:
master、master、master
3.将JDK安装包解压到/root/software目录下,设置JDK环境变量并使其生效;
(0/ 1分)
(1) 配置 java 环境,解压 master 中的 /root/software/package 目录下 jdk-8u212-linux-x64.tar.gz 安装包到 /root/software(若路径不存在,则需新建) 路径下;
(2) 修改 /etc/profile 文件,设置JDK环境变量并使其生效,配置完毕后在三台节点分别执行"java -version"和"javac"命令。
操作环境:
master、slave1、slave2
以下是针对你的子任务一的详细命令操作步骤,分为三个部分,使用 root 用户 在三台主机上完成,全部使用 绝对路径。主机 IP 如下:
- master:101.200.150.180
- slave1:123.56.96.9
- slave2:123.56.135.124
✅ 子任务一:基础环境搭建
1. 修改主机名并配置 hosts 文件(每台机器都要做)
① 修改主机名(分别在对应机器上执行)
bash
# 在 101.200.150.180 上执行
hostnamectl set-hostname master
# 在 123.56.96.9 上执行
hostnamectl set-hostname slave1
# 在 123.56.135.124 上执行
hostnamectl set-hostname slave2
⚠️ 修改后建议重启或重新登录 shell 使主机名生效。
② 编辑 /etc/hosts 文件(三台机器都要做)
bash
vi /etc/hosts
添加以下内容:
101.200.150.180 master
123.56.96.9 slave1
123.56.135.124 slave2
172.18.15.251 master Nf!mKsKC7H2f
172.18.16.78 slave1 p8BtxHV!sCNt
172.18.16.80 slave2 zF6NT6#faJ9s
2. 配置 SSH 免密登录(仅在 master 上操作)
① 生成 RSA 密钥对(master 上执行)
bash
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
② 将公钥拷贝到 slave1 和 slave2
bash
ssh-copy-id -i /root/.ssh/id_rsa.pub root@localhost
ssh-copy-id -i /root/.ssh/id_rsa.pub root@slave1
ssh-copy-id -i /root/.ssh/id_rsa.pub root@slave2
③ 验证免密登录
bash
ssh localhost
ssh slave1
exit
ssh slave2
exit
如果能直接登录无需输入密码,说明配置成功。
3. 安装并配置 JDK (三台机器都要做 )
① 创建目录并解压 JDK
bash
tar -zxvf /root/software/package/jdk-8u212-linux-x64.tar.gz -C /root/software/
② 配置环境变量
编辑 /etc/profile:
bash
vi /etc/profile
在文件末尾添加:
bash
export JAVA_HOME=/root/software/jdk1.8.0_212
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使配置生效:
bash
source /etc/profile
③ 验证安装(三台机器都要执行)
bash
java -version
javac
若能正常输出版本信息和 javac 用法,说明配置成功。
✅ 总结:你需要在以下节点执行的操作
表格
|----------------|----------------------|
| 操作 | 执行节点 |
| 修改主机名、配置 hosts | master、slave1、slave2 |
| 生成密钥、配置免密登录 | master |
| 安装 JDK、配置环境变量 | master、slave1、slave2 |
如果你需要我帮你写成脚本形式(自动部署),也可以告诉我,我可以帮你写批量脚本。
子任务二:Zookeeper与Hadoop搭建配置(0 / 5分)
本任务需要使用root 用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:
Hadoop安全属性参考:
1.开启 Hadoop 安全授权,通过修改 Hadoop 核心配置文件 core-site.xml ,添加 "hadoop.security.authorization " 属性,并将其属性值设置为 "true ",开启安全授权功能。
2.为保证分布式文件系统 HDFS 上的数据安全性,通过修改 hdfs-site.xml 配置文件启用 HDFS 的权限控制 以及设置只有指定超级用户组才可以对 HDFS 文件系统进行读写、执行等权限操作。
- dfs.permissions.enabled:该属性设置为 true 表示启用 HDFS 的权限控制
- dfs.permissions.superusergroup:该属性用于配置超级用户组,此组内用户可绕过权限检查
3.通过配置 yarn-site.xml 禁用 Yarn 提供的 Web 服务接口和绑定本机地址,实现只允许内网可访问。同时禁用资源管理器的 RPC 调用地址防止 RPC 的未授权访问漏洞。(集群配置参考)
<!-- 禁用 Yarn 提供的 Web 服务接口和绑定本机地址,实现只允许内网可访问 -->
<!-- RM 服务绑定到的实际地址,指定为 master主机 -->
<property>
<name>yarn.resourcemanager.bind-host</name>
<value>master</value>
</property>
<!-- RM 资源管理器绑定的 Web UI 服务主机地址和端口号,改为 0.0.0.0:0 监听无效的IP和端口 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>0.0.0.0:0</value>
</property>
<!-- RM 资源管理器绑定的 Web UI 服务主机地址和端口号(HTTPS访问),改为 0.0.0.0:0 监听无效的IP和端口 -->
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>0.0.0.0:0</value>
</property>
<!-- NM 资源管理器绑定的 Web UI 服务主机地址和端口号,改为 0.0.0.0:0 监听无效的IP和端口 -->
<property>
<name>yarn.nodemanager.webapp.address</name>
<value>0.0.0.0:0</value>
</property>
<!-- NM 资源管理器绑定的 Web UI 服务主机地址和端口号(HTTPS访问),改为 0.0.0.0:0 监听无效的IP和端口 -->
<property>
<name>yarn.nodemanager.webapp.https.address</name>
<value>0.0.0.0:0</value>
</property>
4.修改 hadoop-policy.xml 服务认证配置文件(授予只有root用户才可操作的权限,可直接替换整个文件, 文件见"左侧附件")
考核条件如下 :1.在master节点将apache-zookeeper-3.5.7-bin.tar.gz包解压到/root/software(若路径不存在,则需新建)路径下;
(0/ 1分)
在master节点将/root/software/package目录下的apache-zookeeper-3.5.7-bin.tar.gz包解压到/root/software(若路径不存在,则需新建)路径下;
操作环境:
master
2.将相关解压后的文件拷贝到slave1、slave2节点,并在三台节点上配置对应环境变量;
(0/ 1分)
将相关解压后的文件拷贝到slave1、slave2节点,并在三台节点上配置对应环境变量;
操作环境:
slave1、slave2
3.修改对应配置文件,对应配置文件及主机标识要求如下;
(0/ 1分)
相关日志文件配置参考路径如下:
dataDir:/root/software/apache-zookeeper-3.5.7-bin/data/
dataLogDir:/root/software/apache-zookeeper-3.5.7-bin/zklog/
|--------|-------------------------|
| 主机 | 主机标识($dataDir/myid) |
| master | 1 |
| slave1 | 2 |
| slave2 | 3 |
操作环境:
master、slave1、slave2
4.在master将Hadoop解压并配置相关文件,并分发至slave1、slave2中,要求三台节点均为datanode,初始化Hadoop
(0/ 2分)
在master将/root/software/package目录下的hadoop-3.1.3.tar.gz解压到/root/software(若路径不存在,则需新建)目录下,配置相关配置文件,并将解压包分发至slave1、slave2中,其中master、slave1、slave2节点均作为datanode,配置好相关环境,初始化Hadoop环境namenode。
部分相关数据配置属性要求如下(hdfs-site.xml),其他属性选手自定义操作,相关安全属性参考"模块说明"及"附件文件"。
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/software/hadoop-3.1.3/hadoopDatas/namenodeDatas</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/software/hadoop-3.1.3/hadoopDatas/datanodeDatas</value>
</property>
操作环境:
master、slave1、slave2、master
下面给出 子任务二:Zookeeper 与 Hadoop 搭建配置 的 完整命令步骤 ,全部使用 root 用户 、绝对路径 ,按 5 个得分点顺序编排,可直接执行。
(IP 与题目一致:master 101.200.150.180,slave1 123.56.96.9,slave2 123.56.135.124)
✅ 1. master 节点解压 Zookeeper(1 分)
bash
tar -zxvf /root/software/package/apache-zookeeper-3.5.7-bin.tar.gz -C /root/software/
✅ 2. 分发 Zookeeper 并配置环境变量(1 分)
① 分发安装目录
bash
# 在 master 执行
scp -r /root/software/apache-zookeeper-3.5.7-bin root@slave1:/root/software/
scp -r /root/software/apache-zookeeper-3.5.7-bin root@slave2:/root/software/
② 三台机器均配置环境变量(以 master 为例,slave1/2 同理)
bash
cat >> /etc/profile <<'EOF'
# >>> zookeeper >>>
export ZOOKEEPER_HOME=/root/software/apache-zookeeper-3.5.7-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH
EOF
source /etc/profile
slave1、slave2 同样执行一次(可 ssh 过去执行)。
✅ 3. Zookeeper 配置(1 分)
① 创建数据/日志目录(三台均做)
bash
mkdir -p /root/software/apache-zookeeper-3.5.7-bin/data
mkdir -p /root/software/apache-zookeeper-3.5.7-bin/zklog
② 创建 myid 文件(三台值不同)
bash
# master
echo 1 > /root/software/apache-zookeeper-3.5.7-bin/data/myid
# slave1
echo 2 > /root/software/apache-zookeeper-3.5.7-bin/data/myid
# slave2
echo 3 > /root/software/apache-zookeeper-3.5.7-bin/data/myid
③ 生成统一配置文件(zoo.cfg)
在 master 执行:
bash
cat > /root/software/apache-zookeeper-3.5.7-bin/conf/zoo.cfg <<'EOF'
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/software/apache-zookeeper-3.5.7-bin/data
dataLogDir=/root/software/apache-zookeeper-3.5.7-bin/zklog
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
EOF
分发到 slave1、slave2:
bash
scp /root/software/apache-zookeeper-3.5.7-bin/conf/zoo.cfg root@slave1:/root/software/apache-zookeeper-3.5.7-bin/conf/
scp /root/software/apache-zookeeper-3.5.7-bin/conf/zoo.cfg root@slave2:/root/software/apache-zookeeper-3.5.7-bin/conf/
✅ 4. master 解压 Hadoop 并配置安全参数(2 分)
① 解压
✅ 3. Hadoop 解压 + 安全参数配置(master 完成 → 分发)
① 解压
bash
复制
tar -zxvf /root/software/package/hadoop-3.1.3.tar.gz -C /root/software/
② 创建数据目录(三台均做,可先 master 再分发)
bash
复制
mkdir -p /root/software/hadoop-3.1.3/hadoopDatas/{namenodeDatas,datanodeDatas}
③ 追加 JAVA_HOME 到 hadoop-env.sh(master 做 → 分发)
bash
echo "export JAVA_HOME=/root/software/jdk1.8.0_212" >> /root/software/hadoop-3.1.3/etc/hadoop/hadoop-env.sh
④ 配置安全版 core-site.xml
bash
cat > /root/software/hadoop-3.1.3/etc/hadoop/core-site.xml <<'EOF'
<?xml version="1.0"?>
<configuration>
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
EOF
⑤ 安全版 hdfs-site.xml(含数据路径 + 权限 + 超级组)
bash
cat > /root/software/hadoop-3.1.3/etc/hadoop/hdfs-site.xml <<'EOF'
<?xml version="1.0"?>
<configuration>
<!-- 数据目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/software/hadoop-3.1.3/hadoopDatas/namenodeDatas</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/software/hadoop-3.1.3/hadoopDatas/datanodeDatas</value>
</property>
<!-- 权限开关 -->
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>root</value>
</property>
</configuration>
EOF
⑥ 安全版 yarn-site.xml(仅内网)
bash
cat > /root/software/hadoop-3.1.3/etc/hadoop/yarn-site.xml <<'EOF'
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.bind-host</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>0.0.0.0:0</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>0.0.0.0:0</value>
</property>
<property>
<name>yarn.nodemanager.webapp.address</name>
<value>0.0.0.0:0</value>
</property>
<property>
<name>yarn.nodemanager.webapp.https.address</name>
<value>0.0.0.0:0</value>
</property>
</configuration>
EOF
⑦ 替换 hadoop-policy.xml(题目附件)
bash
cp /root/hadoop-policy.xml /root/software/hadoop-3.1.3/etc/hadoop/hadoop-policy.xml
⑧ workers 文件(3 台都是 datanode)
bash
echo -e "master\nslave1\nslave2" > /root/software/hadoop-3.1.3/etc/hadoop/workers
⑨ 整个 hadoop 目录同步到 slave1、slave2
bash
scp -r /root/software/hadoop-3.1.3 root@slave1:/root/software/
scp -r /root/software/hadoop-3.1.3 root@slave2:/root/software/
vim /etc/profile 只来 master
文件底部追加以下内容:
export HADOOP_HOME=/root/software/hadoop-3.1.3
export HADOOP_CLASSPATH='hadoop classpath'
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
✅ 4. 初始化 & 启动(一次性)
① 格式化 namenode(仅 master)
bash
hdfs namenode -format
② 启动脚本(master 一键)
bash
start-dfs.sh
start-yarn.sh
完成以上 4 大步即 子任务二 5 分拿满 ,且三台均以内网 IP 通信、安全参数全部生效。
如需 Zookeeper 启动脚本 或 HistoryServer 配置,再喊我!
子任务三:MySQL数据库安装配置(0 / 2分)
本任务需要使用root 用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:
本模块对应虚拟机为:master
相关压缩包路径为: /root/software/package/****,对应安装路径为 /root/software/
数据库版本:MySQL 5.7.24 用户名:root ,密码:123456
考核条件如下 :
1.解压并安装MySQL 5.7.24,以mysql用户身份执行命令初始化数据库,启动MySQL服务; (0/ 1分)
(1)将MySQL 5.7.24安装包解压到/root/software目录下;(/root/software/package/mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar)
(2)移除与MySQL冲突的MariaDB库,命令参考:yum remove -y mariadb-libs
使用rpm -ivh依次安装mysql-community-common、mysql-community-libs、mysql-community-libs-compat、mysql-community-client和mysql-community-server;
(3)在成功安装MySQL后,以mysql用户身份执行命令初始化数据库,生成生成空密码(命令参考如下),并启动MySQL服务(systemctl系统管理);
命令参考:/usr/sbin/mysqld --initialize-insecure --console --user=mysql
操作环境:master
2.修改root用户密码为123456,同时允许所有root用户可以从任何远程主机进行访问,刷新配置信息并生效;
(0/ 1分)
(1)使用root用户无密码登录MySQL,然后将root用户的密码修改为123456,修改完成退出MySQL,重新登录验证密码是否修改成功;
(2)为了允许MySQL用户远程登录,需要在"mysql"数据库的"user"表中更改用户的host项,将所有用户的localhost权限修改为允许任意远程主机访问;设置完成刷新配置信息,让其生效。
操作环境:master下面给出 子任务三:MySQL 5.7.24 安装配置 的 完整命令步骤 ,全部在 master(101.200.150.180) 用 root 用户 执行,路径与题目完全一致,可直接。
✅ 1. 解压并安装 MySQL 5.7.24(1 分)
① 进入目录并解压
bash
mkdir -p /root/software
cd /root/software
tar -xf /root/software/package/mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
② 移除冲突包
bash
yum remove -y mariadb-libs
③ 按顺序安装(必须严格顺序)
bash
rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm
④ 初始化数据库(生成空密码,mysql 用户执行)
bash
/usr/sbin/mysqld --initialize-insecure --console --user=mysql
⑤ 启动并设为开机自启
bash
systemctl start mysqld
systemctl enable mysqld
✅ 2. 设置 root 密码 123456 并允许远程登录(1 分)
① 无密码登录并修改密码
bash
mysql -uroot
在 MySQL 提示符下执行:
sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
退出验证:
sql
exit
重新登录测试:
bash
mysql -uroot -p123456
② 允许任意远程主机用 root 连接
再次进入 MySQL:
bash
mysql -uroot -p123456
依次执行:
sql
-- 切换库
USE mysql;
-- 查看当前 host 列表
SELECT User, Host FROM user;
-- 将所有 root 行的 host 改为 %
UPDATE user SET Host='%' WHERE User='root';
-- 刷新授权
FLUSH PRIVILEGES;
-- 退出
EXIT;
③ 关闭防火墙或放行 3306(一次性)
bash
# 关闭防火墙(最简)
systemctl stop firewalld
systemctl disable firewalld
✅ 验证
- 本机登录:
mysql -uroot -p123456 - 远程登录:在另一台机器(slave1/slave2 或本地 Navicat)执行
mysql -h 101.200.150.180 -uroot -p123456
能连即成功。
完成以上两步即满足子任务三全部得分点。
如需 一键脚本 或 二进制包地址缺失 的解决办法,再喊我!
子任务四:Hive安装配置(0 / 5分)
本任务需要使用root 用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:
考核条件如下 :
1.将 master 节点的/root/software/package目录下 apache-hive-3.1.2-bin.tar.gz 安装包解压到/root/software目录下
(0/ 1分)
将 master 节点的/root/software/package目录下 apache-hive-3.1.2-bin.tar.gz 安装包解压到/root/software目录下
操作环境:master
2.设置Hive环境变量,并使环境变量生效,执行命令hive --version查看版本号;
(0/ 2分)
设置Hive环境变量,并使环境变量生效,执行命令hive --version查看版本号;
操作环境:master
3.完成相关配置并添加所依赖包,将MySQL数据库作为Hive元数据库。初始化Hive元数据,并通过schematool相关命令执行初始化。 (0/ 2分)
对应依赖包:/root/software/mysql-connector-java-5.1.47-bin.jar
对应Hive依赖路径:/root/software/apache-hive-3.1.2-bin/lib
hive-site.xml配置中对应JDBC要求如下:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hivedb?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
格式化成功后,可在数据库中查看对应生成的hivedb数据库。
操作环境:master、master
子任务四:Hive 安装配置(5 分)
全部在 master(101.200.150.180) 用 root 完成,路径与题目 100% 一致,可即执行。
✅ 1. 解压 Hive(1 分)
bash
tar -zxvf /root/software/package/apache-hive-3.1.2-bin.tar.gz -C /root/software/
✅ 2. 环境变量 + 验证版本(2 分)
bash
cat >> /etc/profile <<'EOF'
# >>> hive >>>
export HIVE_HOME=/root/software/apache-hive-3.1.2-bin
export PATH=$HIVE_HOME/bin:$PATH
EOF
source /etc/profile
验证:bash
hive --version # 应打印 3.1.2 信息
✅ 3. 配置 MySQL 作为元数据库(2 分)
① 拷贝驱动到依赖目录
bash
cp /root/software/package/mysql-connector-java-5.1.47-bin.jar \
/root/software/apache-hive-3.1.2-bin/lib/
② 生成 hive-site.xml(直接覆盖)
bash
cat > /root/software/apache-hive-3.1.2-bin/conf/hive-site.xml <<'EOF'
<?xml version="1.0"?>
<configuration>
<!-- JDBC 连接 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hivedb?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<!-- JDBC 驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 连接账号密码 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- 元数据存储前缀 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>
EOF
③ 初始化元数据库(自动创建 hivedb)
bash
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod 777 /user/hive/warehouse
hdfs dfs -mkdir -p /tmp
hdfs dfs -chmod 777 /tmp
schematool -dbType mysql -initSchema --verbose
④ 验证
bash
mysql -uroot -p123456 -e "SHOW DATABASES LIKE 'hivedb';"
# 应看到 hivedb
子任务五:Spark安装部署0 / 5分)
本任务需要使用root 用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:
考核条件如下 :
1.将master中的/root/software/package目录下 spark-3.1.1-bin-hadoop3.2.tgz 安装包解压到/root/software路径中;
(0/ 2分)
将master中的/root/software/package目录下 spark-3.1.1-bin-hadoop3.2.tgz 安装包解压到/root/software路径中;
操作环境:master
2.修改/etc/profile文件,设置Spark环境变量并使环境变量生效,运行命令`spark-submit --version`查看版本号。
(0/ 3分)
配置文件角色参考如下:
|--------|--------|
| 主机 | 角色 |
| master | Master |
| slave1 | Worker |
| slave2 | Worker |
操作环境:master
下面给出 子任务五:Spark 安装部署 的完整命令步骤,全部在 master(101.200.150.180) 用 root 用户执行,可直接。
✅ 1. 解压 Spark(2 分)
bash
tar -zxvf /root/software/package/spark-3.1.1-bin-hadoop3.2.tgz -C /root/software/
✅ 2. 配置环境变量并验证版本(3 分)
① 追加到 /etc/profile(三台机器都要,先 master 再分发)
bash
cat >> /etc/profile <<'EOF'
# >>> spark >>>
export SPARK_HOME=/root/software/spark-3.1.1-bin-hadoop3.2
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
EOF
立即生效:
bash
source /etc/profile
验证版本:
bash
spark-submit --version
# 应出现 Spark 3.1.1 built for Hadoop 3.2 字样
② 将相同目录同步到 slave1、slave2(含环境变量)
bash
# 分发安装目录
scp -r /root/software/spark-3.1.1-bin-hadoop3.2 root@slave1:/root/software/
scp -r /root/software/spark-3.1.1-bin-hadoop3.2 root@slave2:/root/software/
# 分发 profile(如已统一配置可跳过)
scp /etc/profile root@slave1:/etc/
scp /etc/profile root@slave2:/etc/
在 slave1、slave2 执行:
bash
source /etc/profile
✅ 3. 角色配置(Master + 2 Workers)
① 进入配置目录
bash
cd /root/software/spark-3.1.1-bin-hadoop3.2/conf
② 指定 Master 主机名
bash
echo "master" > slaves # 该文件列出所有 Worker 节点
echo "slave1" > slaves
echo "slave2" >> slaves
③ 极简 spark-env.sh(先拷贝模板)
bash
cp spark-env.sh.template spark-env.sh
cat >> spark-env.sh <<'EOF'
export JAVA_HOME=/root/software/jdk1.8.0_212
export HADOOP_CONF_DIR=/root/software/hadoop-3.1.3/etc/hadoop
export SPARK_MASTER_HOST=master
export SPARK_MASTER_PORT=7077
EOF
④ 分发相同配置到 slave1、slave2
bash
scp -r /root/software/spark-3.1.1-bin-hadoop3.2/conf root@slave1:/root/software/spark-3.1.1-bin-hadoop3.2/
scp -r /root/software/spark-3.1.1-bin-hadoop3.2/conf root@slave2:/root/software/spark-3.1.1-bin-hadoop3.2/
✅ 4. 启动集群(master 上执行)
bash
# 启动 Master 与所有 Workers
start-master.sh
start-slaves.sh
✅ 5. 验证
-
Web UI
浏览器访问http://master:8080应能看到:
Alive Workers: 2(slave1、slave2) -
命令行bash
spark-submit --version # 三台都能打印 3.1.1
jps # master 出现 Master;slave1/2 出现 Worker
原因
Hadoop 3.x 的启动脚本默认 禁止 root 用户直接启动 各守护进程,必须显式声明环境变量 HDFS_*_USER 和 YARN_*_USER 才允许继续。
解决思路(二选一)
- 新建一个普通用户(推荐生产环境)
- 继续用 root,但在启动前 export 对应变量(实验环境最快,下面给出)
✅ 实验环境快速修复(root 继续用)
在 master 执行一次即可(可写进 /etc/profile.d/hadoop-env.sh 永久生效):
bash
复制
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
立即生效:
bash
复制
source /etc/profile.d/hadoop-env.sh
再启动:
bash
复制
start-dfs.sh
start-yarn.sh
如无其他错误,jps 应能看到 NameNode/DataNode/ResourceManager 等进程。
✅ 生产环境建议(可选)
bash
复制
# 创建专用用户
useradd -m hadoop
echo hadoop | passwd --stdin hadoop
visudo
添加:
hadoop ALL=(ALL) NOPASSWD:ALL
以后把 $HADOOP_HOME 目录 chown -R hadoop:hadoop /root/software/hadoop-3.1.3, 切换到 hadoop 用户再启动即可,无需再定义上述变量。
echo "export JAVA_HOME=/root/software/jdk1.8.0_212" >> /root/software/hadoop-3.1.3/etc/hadoop/hadoop-env.sh