1
2023 年全国职业院校技能大赛
赛题第 04 套
赛项名称: 大数据应用开发
英文名称: Big Data Application Development
赛项组别: 高等职业教育组
赛项编号: GZ033
2
背景描述
工业互联网是工业全要素、全产业链、全价值链的全面连接,是
人、机、物、工厂互联互通的新型工业生产制造服务体系,是互联网
从消费领域向生产领域、从虚拟经济向实体经济拓展的核心载体,是
建设现代化经济体系、实现高质量发展和塑造全球产业竞争力的关键
支撑,工业大数据则是工业互联网实现工业要素互联之后的核心价值
创造者。随着大数据行业的发展,工业数据收集呈现时间维度不断延
长、数据范围不断扩大、数据粒度不断细化的趋势。以上三个维度的
变化使得企业所积累的数据量以加速度的方式在增加,最终构成了工
业大数据的集合。
为完成工业大数据分析工作,你所在的小组将应用大数据技术,
以 Scala 作为整个项目的基础开发语言,基于大数据平台综合利用
Hudi、Spark、Flink、Vue.js 等技术,对数据进行处理、分析及可
视化呈现,你们作为该小组的技术人员,请按照下面任务完成本次工
作。
3
任务 A:大数据平台搭建(容器环境)(15 分)
环境说明:
服务端登录地址详见各任务服务端说明。
补充说明:宿主机及各容器节点可通过 Asbru 工具或 SSH 客户端进
行 SSH 访问。
子任务一:Hadoop 完全分布式安装配置
本任务需要使用 root 用户完成相关配置,安装 Hadoop 需要配置前置环境。
命令中要求使用绝对路径,具体要求如下:
1、 从 宿 主 机 /opt 目 录 下 将 文 件 hadoop-3.1.3.tar.gz 、
jdk-8u212-linux-x64.tar.gz 复制到容器 Master 中的/opt/software 路径
中(若路径不存在,则需新建),将 Master 节点 JDK 安装包解压到/opt/module
路径中(若路径不存在,则需新建),将 JDK 解压命令复制并粘贴至客户端桌
面【Release\任务 A 提交结果.docx】中对应的任务序号下;
2、 修改容器中/etc/profile 文件,设置 JDK 环境变量并使其生效,配置完毕后
在 Master 节点分别执行“java -version”和“javac”命令,将命令行执
行结果分别截图并粘贴至客户端桌面【Release\任务 A 提交结果.docx】中
对应的任务序号下;
3、 请完成 host 相关配置,将三个节点分别命名为 master、slave1、slave2,
并做免密登录,用 scp 命令并使用绝对路径从 Master 复制 JDK 解压后的安
装文件到 slave1、slave2 节点(若路径不存在,则需新建),并配置
slave1、slave2 相关环境变量,将全部 scp 复制 JDK 的命令复制并粘贴至客
户端桌面【Release\任务 A 提交结果.docx】中对应的任务序号下;
4、 在 Master 将 Hadoop 解压到/opt/module(若路径不存在,则需新建)目录下,
并将解压包分发至 slave1、slave2 中,其中 master、slave1、slave2 节点
4
均作为 datanode,配置好相关环境,初始化 Hadoop 环境 namenode,将初始
化命令及初始化结果截图(截取初始化结果日志最后 20 行即可)粘贴至客
户端桌面【Release\任务 A 提交结果.docx】中对应的任务序号下;
5、 启动 Hadoop 集群(包括 hdfs 和 yarn),使用 jps 命令查看 Master 节点与
slave1 节 点 的 Java 进 程 , 将 jps 命 令 与 结 果 截 图 粘 贴 至 客 户 端 桌 面
【Release\任务 A 提交结果.docx】中对应的任务序号下。
子任务二:Spark on Yarn 安装配置
本任务需要使用 root 用户完成相关配置,已安装 Hadoop 及需要配置前置环
境,具体要求如下:
1、 从宿主机/opt 目录下将文件 spark-3.1.1-bin-hadoop3.2.tgz 复制到容器
Master 中的/opt/software(若路径不存在,则需新建)中,将 Spark 包解
压到/opt/module 路径中(若路径不存在,则需新建),将完整解压命令复制
粘贴至客户端桌面【Release\任务 A 提交结果.docx】中对应的任务序号下;
2、 修改容器中/etc/profile 文件,设置 Spark 环境变量并使环境变量生效,在
/opt 目录下运行命令 spark-submit --version,将命令与结果截图粘贴至
客户端桌面【Release\任务 A 提交结果.docx】中对应的任务序号下;
3、 完 成 on yarn 相 关 配 置 , 使 用 spark on yarn 的 模 式 提 交
$SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar 运 行 的 主
类为 org.apache.spark.examples.SparkPi,将运行结果截图粘贴至客户端
桌面【Release\任务 A 提交结果.docx】中对应的任务序号下(截取 Pi 结果
的前后各 5 行)。
( 运 行 命 令 为 : spark-submit --master yarn --class
org.apache.spark.examples.SparkPi
$SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar)
子任务三:Hudi 安装配置
本任务需要使用 root 用户完成相关配置,具体要求如下:
1、 从 宿 主 机 /opt 目 录 下 将 maven 相 关 安 装 包 复 制 到 容 器 Master 中 的
5
/opt/software(若路径不存在,则需新建)中,将 maven 相关安装包解压
到/opt/module/目录下(若路径不存在,则需新建)并配置 maven 本地库为
/opt/software/RepMaven/,远程仓库使用阿里云镜像,配置 maven 的环境
变量 , 并 在 /opt/下 执 行 mvn -v , 将运 行 结 果 截图 粘 贴 至 客户 端 桌 面
【Release\任务 A 提交结果.docx】中对应的任务序号下;
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
2、 从 宿 主 机 /opt 目 录 下 将 Hudi 相 关 安 装 包 复 制 到 容 器 Master 中 的
/opt/software(若路径不存在,则需新建)中,将 Hudi 相关安装包解压到
/opt/module/目录下(若路径不存在,则需新建),将命令复制并粘贴至客
户端桌面【Release\任务 A 提交结果.docx】中对应的任务序号下;
3、 完 成 解 压 安 装 及 配 置 后 使 用 maven 对 Hudi 进 行 构 建
( spark3.1,scala-2.12 ) , 编 译 完 成 后 与 Spark 集 成 , 集 成 后 使 用
spark-shell 操作 Hudi,将 spark-shell 启动使用 spark-shell 运行下面给
到的案例,并将最终查询结果截图粘贴至客户端桌面【Release\任务 A 提交
结果.docx】中对应的任务序号下。
(提示:编译需要替换以下内容:
1.将父模块 pom.xml 替换;
2.hudi-common/src/main/java/org/apache/hudi/common/table/log/block/Ho
odieParquetDataBlock.java 替换;
2. 将 packaging/hudi-spark-bundle/pom.xml 替换;
3.将 packaging/hudi-utilities-bundle/pom.xml 替换)
import org.apache.hudi.QuickstartUtils._
import scala.collection.JavaConversions._
import org.apache.spark.sql.SaveMode._
import org.apache.hudi.DataSourceReadOptions._
import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.config.HoodieWriteConfig._
import org.apache.hudi.common.model.HoodieRecord