2024年职业院校技能大赛中职组大数据应用与服务赛项参考答案
竞赛交流群:点击链接加入群聊【中职大数据应用与服务技能竞赛】:
https://qm.qq.com/q/FqGXD5u3yQ
模块一:平台搭建与运维
(一)任务一:大数据平台搭建
1.子任务一:基础环境准备
本任务需要使用 root 用户完成相关配置,安装 Hadoop 需要配置前置环境。命令中要求使用绝对路径,具体要求如下:
(1)配置三个节点的主机名,分别为 master、slave1、slave2,然后修改三个节点的 hosts 文件,使得三个节点之间可以通过主机名访问,在 master上将执行命令 cat /etc/hosts 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;
(2)将 /opt/software 目录下将文件 jdk-8u191-linux-x64.tar.gz 安装包(若slave1、slave2节点不存在以上文件则需从master节点复制)解压到 /opt/module 路径中(若路径不存在,则需新建),将 JDK 解压命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(3)在 /etc/profile 文件中配置 JDK 环境变量 JAVA_HOME 和 PATH 的值,并让配置文件立即生效,将在 master上 /etc/profile 中新增的内容复制并粘贴至【提交结果.docx】中对应的任务序号下;
(4)查看 JDK 版本,检测 JDK 是否安装成功,在 master 上将执行命令java-vserion 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下
(5)创建 hadoop 用户并设置密码,为 hadoop 用户添加管理员权限。在master 上将执行命令 grep ‘hadoop’ /etc/sudoers 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;
(6)关闭防火墙,设置开机不自动启动防火墙,在 master 上将执行命令systemctl status fireawlld 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;
(7)配置三个节点的SSH免密登录,在 master 上通过 SSH 连接 slave1 和 slave2 来验证。
2.子任务二:Hadoop 完全分布式安装配置
(1)本任务需要使用 root 用户和 hadoop 用户完成相关配置,使用三个节点完成
Hadoop 完全分布式安装配置。命令中要求使用绝对路径,具体要求如下:
在master 节点中的/opt/software 目录下将文件 hadoop-3.3.6.tar.gz 安装包解压到 /opt/module 路径中,将 hadoop 安装包解压命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(2)在 master 节点中将解压的 Hadoop 安装目录重命名为 hadoop ,并修改该目录下的所有文件的所属者为 hadoop,所属组为 hadoop,将修改所属者的完整命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(3)在 master 节点中使用 hadoop 用户依次配置 hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、masters和 workers 配置文件,Hadoop集群部署规划如下表,将 yarn-site.xml 文件内容复制并粘贴至【提交结果.docx】中对应的任务序号下;
服务器 | master | slave1 | slave2 |
---|---|---|---|
DHFS | NameNode | ||
HDFS | SecondaryNameNode | ||
HDFS | DataNode | DataNode | DataNode |
YARN | ResourceManager | ||
YARN | NodeManager | NodeManager | NodeManager |
历史日志服务器 | JobHistoryServer |
(4)在 master 节点中使用 scp 命令将配置完的 hadoop 安装目录直接拷贝至 slave1 和 slave2 节点,将完整的 scp 命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(5)在 slave1 和 slave2 节点中将 hadoop 安装目录的所有文件的所属者为 hadoop,所属组为 hadoop。
(6)在三个节点的 /etc/profile 文件中配置 Hadoop 环境变量HADOOP_HOME 和 PATH 的值,并让配置文件立即生效,将 master 节点中 /etc/profile 文件新增的内容复制并粘贴至【提交结果.docx】中对应的任务序号下;
(7)在 master 节点中初始化 Hadoop 环境 namenode,将初始化命令及初始化结果(截取初始化结果日志最后 20 行即可)粘贴至【提交结果.docx】中对应的任务序号下;
(8)在 master 节点中依次启动HDFS、YARN集群和历史服务。在 master 上将执行命令 jps 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;
(9)在 slave2 查看 Java 进程情况。在 slave1上将执行命令 jps 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下。
3.子任务三:Flume 安装配置
本任务需要使用 root 用户和 hadoop 用户完成相关配置,已安装Hadoop 及需要配置前置环境,具体要求如下:
(1)从master中的/opt/software 目录下将文件 apache-flume-1.11.0bin.tar.gz 解压到 /opt/module 目录下,将解压命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(2)把解压后的 apache-flume-1.11.0-bin 文件夹更名为 flume-1.11.0,并修改该目录下的所有文件的所属者为 hadoop,所属组为 hadoop,将修改所属者的完整命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(3)使用 hadoop 用户完善 flume-env.sh 相关配置设置,配置 Flume 环境变量,并使环境变量生效,执行命令 flume-ng version 并将命令与结果截图粘贴至【提交结果.docx】中对应的任务序号下。
4.子任务四:Kafka 安装配置
本任务需要使用 root 用户完成相关配置,已安装 Hadoop 及需要配置前置环境,具体要求如下:
(1)从master中的/opt/software 目录下将文件 kafka_2.12-3.6.1.tgz 解压到 /opt/module 目录下,把解压后的 kafka_2.12-3.6.1 文件夹更名为 kafka,将 Kafka 解压命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(2)配置好 zookeeper,其中 zookeeper 使用集群模式,分别将 master、slave1、slave2 作为其节点(若 zookpeer 已安装配置好,则无需再次配置);
(3)配置 Kafka 环境变量,并使环境变量生效,将新增的环境变量内容截图粘贴至【提交结果.docx】中对应的任务序号下;
(4)使用 kafka-server-start.sh --version 查看 Kafka 的版本内容,并将命令和结果截图粘贴至【提交结果.docx】中对应的任务序号下;
(5)修改 server.properties 配置文件,并分发 Kafka 文件到 slave1、 slave2 中,并在每个节点启动 Kafka,将启动命令和结果截图粘贴至【提交结果.docx】中对应的任务序号下;
(6)创建 Topic,其中 Topic 名称为 installtopic,分区数为 2,副本数为2,将创建命令和创建成果截图粘贴至【提交结果.docx】中对应的任务序号下。
5.子任务五:Zookeeper 集群安装配置
本任务需要使用 root 用户完成相关配置,已安装 Hadoop 及需要配置前置环境,具体要求如下:
(1)在 master 节点将 /opt/software 目录下的 apache-zookeeper-3.8.3-bin.tar.gz 包解压到 /opt/module 路径下,将解压命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(2)把解压后的 apache-zookeeper-3.8.3-bin 文件夹更名为 zookeeper-3.8.3,将命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(3)设置 zookeeper 环境变量,将新增的环境变量内容复制并粘贴至【提交结果.docx】中对应的任务序号下;
(4)创建 zookeeper 配置文件 zoo.cfg 并配置 master、slave1、slave2 三个节点的集群配置,其中 dataDir 参数设置为 /opt/module/zookeeper-3.8.3/data ,提交 zoo.cfg 配置内容至【提交结果.docx】中对应的任务序号下;
(5)在 master 节点上创建文件 myid 用于标识服务器序号,并将文件内容设置为1;
(6)在 master 节点上将配置的 zookeeper 环境变量文件及 zookeeper 解压包拷贝到 slave1、slave2 节点,提交命令至【提交结果.docx】中对应的任务序号下;
(7)在 slave1 节点上修改 myid 文件内容修改为 2,在 slave2 节点上修改 myid 文件内容修改为 3,提交命令和结果截图粘贴至【提交结果.docx】中对应的任务序号下;
(8)在 master 节点、slave1 节点、slave2 节点分别启动 zookeeper,提交命令和结果截图粘贴至【提交结果.docx】中对应的任务序号下;
(9)在 master 节点、slave1 节点、slave2 节点分别查看 zookeeper 的状态,提交命令和结果截图粘贴至【提交结果.docx】中对应的任务序号下;
(10)在 master 节点查看 Java 进程,提交命令和结果截图粘贴至【提交结果.docx】中对应的任务序号下。
(二)任务二:数据库服务器的安装与运维
1. 子任务一:MySQL 安装配置
本任务需要使用 rpm 工具安装 MySQL 并初始化,具体要求如下:
(1)在 master 节点中的 /opt/software 目录下将 MySQL 5.7.44 安装包解压到 /opt/module 目录下;
(2)在master 节点中使用rpm-ivh 依次安装 mysql-community-common、mysql-community-libs、mysql-community-libs-compat 、 mysql-
community-client 和 mysql-community-server 包,将所有命令复制粘贴至【Release\提交结果.docx】中对应的任务序号下;
(3)在 master 节点中启动数据库系统并初始化 MySQL 数据库系统,将完整命令复制粘贴至【提交结果.docx】中对应的任务序号下;
2.子任务二:MySQL 运维
本任务需要在成功安装 MySQL 的前提,对 MySQL 进行运维操作,具体要求如下:
(1)配置服务端 MySQL 数据库的远程连接,将新增的配置内容复制粘贴至【提交结果.docx】中对应的任务序号下;
(2)配置 root 用户允许任意 IP 连接,将完整命令复制粘贴至【提交结果.docx】中对应的任务序号下;
(3)通过 root 用户登录 MySQL 数据库系统,查看 mysql 库下的所有表,将完整命令及执行命令后的结果复制粘贴至【提交结果.docx】中对应的任务序号下;
(4)输入命令以创建新的用户 hadoop,将完整命令及执行命令后的结果复制粘贴至【提交结果.docx】中对应的任务序号下;
(5)授予新用户查询数据和插入数据的权限,将完整命令及执行命令后的结果复制粘贴至【提交结果.docx】中对应的任务序号下;
(6)刷新权限,将完整命令及执行命令后的结果复制粘贴至【提交结果.docx】中对应的任务序号下。
3.子任务三:数据表的创建及维护
在 MySQL 数据库中创建“test”数据库,并在“test”数据库中分别创建“stu”、“course”及“score”共3个数据表。各个数据表的表字段格式如下:
表1“stu”的表字段结构
字段 | 类型 | 备注 |
---|---|---|
学号 | varchar | 主键 |
姓名 | varchar | |
性别 | varchar | |
专业 | varchar | |
班级 | varchar | |
学院 | varchar |
表2“course”的表字段结构
字段 | 类型 | 备注 |
---|---|---|
课程号 | varchar | 主键 |
课程名称 | varchar | |
开设学院 | varchar | |
学分 | int |
表3“score”的表字段结构
将创建“test”数据库、“stu”、“course”及“score” 的建表结果图分别截图复制粘贴至客户端桌面【提交结果.docx】中对应的任务序号下。
4.子任务四:添加数据记录
分别为“stu”、“course”及“score”数据表添加数据记录。各个数据表需要添加的数据记录如下:
表4“stu”数据表的数据记录
学号 | 姓名 | 性别 | 专业 | 班级 | 学院 |
---|---|---|---|---|---|
2023010148 | 蔡俊豪 | 男 | 机械设计 | 23机械设计1班 | 智能制造学院 |
2023010150 | 何铭业 | 男 | 机械设计 | 23机械设计1班 | 智能制造学院 |
2020010132 | 蔡小怡 | 女 | 计算机 | 20计算机1班 | 电子信息学院 |
2020010128 | 浪佳怡 | 女 | 计算机 | 20计算机1班 | 电子信息学院 |
2022010233 | 胡泽键 | 男 | 计算机 | 22计算机2班 | 电子信息学院 |
2022010308 | 方凯娜 | 女 | 计算机 | 22计算机3班 | 电子信息学院 |
2021030140 | 蔡思欣 | 女 | 财务管理 | 21财务管理1班 | 经济管理学院 |
2021030206 | 方贝乐 | 女 | 电子商务 | 21电子商务3班 | 经济管理学院 |
2022030309 | 冯富祥 | 男 | 商务管理 | 22商务管理1班 | 经济管理学院 |
2022040146 | 陈东杰 | 男 | 汽车制造 | 22汽车制造2班 | 汽车工程学院 |
2021040232 | 陈虹光 | 男 | 新能源 | 21新能源1班 | 汽车工程学院 |
2022020318 | 卓楚莹 | 女 | 计算机 | 22计算机3班 | 电子信息学院 |
2022050101 | 陈琳 | 女 | 酒店管理 | 22酒店管理1班 | 文化旅游学院 |
表5“course”数据表的数据记录
课程号 | 课程名称 | 开设学院 | 学分 |
---|---|---|---|
DZXX01 | C语言程序设计 | 电子信息学院 | 3 |
JJGL01 | 会计大数据分析 | 经济管理学院 | 3 |
ZNZZ01 | 自动控制应用 | 智能制造学院 | 3 |
DZXX02 | 人工智能概论 | 电子信息学院 | 2 |
QCGC01 | 汽车质量检验技术 | 汽车工程学院 | 3 |
QCGC02 | 汽车钣金 | 汽车工程学院 | 2 |
WHLY01 | 旅游大数据分析 | 文化旅游学院 | 3 |
JJGL02 | 市场营销实践 | 经济管理学院 | 2 |
表6“score”数据表的数据记录
学号 | 课程号 | 成绩 |
---|---|---|
2023010148 | DZXX01 | 55 |
2023010148 | JJGL01 | 99 |
2023010148 | ZNZZ01 | 55 |
2023010148 | DZXX02 | 64 |
2023010148 | QCGC01 | 68 |
2023010150 | QCGC02 | 90 |
2023010150 | WHLY01 | 81 |
2023010150 | JJGL02 | 85 |
2023010150 | DZXX01 | 67 |
2023010150 | JJGL01 | 98 |
2020010132 | ZNZZ01 | 98 |
2020010132 | DZXX02 | 98 |
2020010132 | QCGC01 | 64 |
2020010128 | QCGC02 | 99 |
2020010128 | WHLY01 | 60 |
2020010128 | JJGL02 | 87 |
2020010128 | DZXX01 | 82 |
2022010233 | JJGL01 | 91 |
2022010233 | ZNZZ01 | 67 |
2022010233 | DZXX02 | 66 |
2022010308 | QCGC01 | 65 |
2022010308 | QCGC02 | 75 |
2022010308 | WHLY01 | 65 |
2022010308 | JJGL02 | 58 |
2021030140 | DZXX01 | 57 |
2021030140 | JJGL01 | 50 |
2021030140 | ZNZZ01 | 89 |
2021030206 | DZXX02 | 61 |
2021030206 | QCGC01 | 59 |
2021030206 | QCGC02 | 69 |
2022030309 | WHLY01 | 99 |
2022030309 | JJGL02 | 59 |
2022040146 | DZXX01 | 80 |
2022040146 | JJGL01 | 81 |
2022040146 | ZNZZ01 | 69 |
2022040146 | DZXX02 | 92 |
2021040232 | QCGC01 | 99 |
2021040232 | QCGC02 | 68 |
2021040232 | WHLY01 | 78 |
2022020318 | JJGL02 | 93 |
2022020318 | DZXX01 | 96 |
2022020318 | JJGL01 | 98 |
2022050101 | ZNZZ01 | 79 |
2022050101 | DZXX02 | 55 |
2022050101 | QCGC01 | 58 |
将“stu”、“course”及“score”的数据添加结果图分别截图复制粘贴至客户端桌面【提交结果.docx】中对应的任务序号下。
5.子任务五:数据表查询
(1)将班级名称为“20计算机1班 ”的所有学生其“学号”、“姓名”、“班级”、修过的“课程名称”及对应的“成绩”显示出来;
(2)将修了课程“学分”等于“2”的所有学生其“学号”、“姓名”、“课程名称”、“学分”及对应的“成绩”显示出来;
(3)将课程“成绩”在“75”至“80”之间的学生其“学号”、“姓名”、“班级”、“课程名称”及对应的“成绩” 显示出来。
将上述SQL查询语句及查询结果图分别截图复制粘贴至客户端桌面【提交结果.docx】中对应的任务序号下。
二、模块二:数据获取与处理
(一)任务一:数据获取与清洗
1.子任务一:数据获取
有一份中国汽车销售数据:年份、月份、排名、车型、厂商、销量、售价(万元)。并且已存入到 sale_car.csv 文件中,请使用 pandas 读取 sale_car.csv 并将数据集的前10行打印在 IDE 终端的截图复制粘贴至【提交结果.docx】中对应的任务序号下。
2.子任务二:使用 Python 进行数据清洗
请使用 pandas 库加载并分析相关数据集,根据题目规定要求使用 pandas 库实现数据处理,具体要求如下:
(1)删除销量为空的记录,并将结果存储为 cleaned_data_c1_N.csv,N 为删除的数据条数。
(2)删除销量为负数的记录,并将结果存储为 cleaned_data_c2_N.csv,N 为删除的数据条数。
(3)删除销售月份格式不正确的记录,并存储为 cleaned_data_c3_N.csv,N 为修改的数据条数。
(4)删除车型名称重复的记录,并将结果存储为 cleaned_data_c4_N.csv,N 为删除的数据条数。
(5)输出车型或厂商字段为空的记录,并存储为 cleaned_data_c5_N.csv,N 为替换的数据条数。
将该 5 个文件名截一张图复制粘贴至【提交结果.docx】中对应的任务序号下。
(二)任务二:数据标注
1. 子任务一:车型豪华等级标注
使用 Python 编写脚本,根据车辆的售价(售价平均值)将汽车分为不同的豪华等级。具体的分类要求如下:
(1)经济型:售价低于10万元;
(2)中档型:售价在10万元至30万元之间;
(3)豪华型:售价超过30万元;
在数据集中新增一列“豪华等级”,根据上述标准对每种车型进行豪华等级标注,存入 luxury_level_mark.csv 文件中。具体格式如下:
编号 | 车型名称 | 售价平均值(万元) | 豪华等级 |
---|---|---|---|
1 | 轩逸 | 13.735 | 中档型 |
将 luxury_level_mark.csv 打开后的直接截图(不用下拉)复制粘贴至【提交结果.docx】中对应的任务序号下。
1.子任务二:销售等级标注
使用 Python 编写脚本,基于每月销售量,为每种车型分配一个销售等级。具体的分类要求如下:
(1)A级:月销售量超过10000辆;
(2)B级:月销售量在5000至9999辆之间;
(3)C级:月销售量低于5000辆;
在数据集中新增一列“销售等级”,根据上述标准为每种车型进行销售等级标注。
存入 sales_level_mark.csv 文件中。具体格式如下:
编号 | 车型名称 | 销售量 | 销售等级 |
---|---|---|---|
1 | 轩逸 | 61170 | A级 |
将 sales_level_mark.csv 打开后的直接截图(不用下拉)复制粘贴至【提交结果.docx】中对应的任务序号下。
(三)任务三:数据统计
1. 子任务一:HDFS 文件上传下载
本任务需要使用 Hadoop、HDFS 命令,已安装 Hadoop 及需要配置前置环境,具体要求如下:
(1)在 HDFS 目录下新建目录 /file2_1,将新建目录的完整命令粘贴至【提交结果.docx】中对应的任务序号下;
(2)修改权限,赋予目录 /file2_1 最高 777 权限,将修改目录权限的完整命令粘贴至【提交结果.docx】对应的任务序号下;
(3)下载 HDFS 新建目录 /file2_1,到本地容器 master 指定目录 /tmp 下,将完整命令粘贴至【提交结果.docx】中对应的任务序号下。
2.子任务二:计算输入文件中的单词数
本任务需要使用 Hadoop 默认提供的 wordcount 示例来完成单词数统计任务,具体要求如下:
(1)在 HDFS 上创建 /user/hadoop/input 目录;
(2)在 master 节点将 /var/log/dmesg 文件上传到 HDFS 的/user/hadoop/input 目录下;
(3)使用 Hadoop 中提供的 wordcount 示例对 HDFS 上的 dmesg 文件进行单词统计,并将统计结果存储到 HDFS 的 /user/hadoop/output 目录下;
(4)查看 HDFS 中的 /user/hadoop/output 单词数统计结果并将结果前二十行截图粘贴至【提交结果.docx】中对应的任务序号下。
3.子任务三:使用拟蒙特卡罗法估算 Pi 值
本任务需要使用 Hadoop 默认提供的 Pi 示例完成 Pi 值估算任务,具体要求如下:
(1)通过 Hadoop 提供的 Pi 示例,使用 16 个映射(每个映射 10,000 个示例)来估算 pi 值;
(2)将 Pi 值估算结果复制并粘贴至【提交结果.docx】中对应的任务序号下。
三、模块三:业务分析与可视化
(一)任务一:数据分析与可视化
1.子任务一:数据分析
在这个任务中,我们将运用Python对汽车销售数据进行深入分析,以揭示市场的关键趋势和洞察。参赛者需要运用Python的数据处理和分析库,如Pandas来完成以下任务:
(1)分析2023年每个月的汽车总销量,并找出销量最高的月份;
(2)计算每个厂商的年度总销量,并进行倒序排序展示前五名;
(3)计算不同价格区间(0-15万、15-30万、30-60万、60万以上)的车型销量,车型售价取平均值,并找出最受欢迎的价格区间;
(4)分析不同车型的销售趋势,找出年度销量增长最快的车型;
(5)筛选出售价在10万元以下的车型,并统计这些车型的总销量;
将该 5 个统计结果在 IDE 的控制台中打印并分别截图复制粘贴至【提交结
果.docx】中对应的任务序号下。
2.子任务二:数据可视化
在这个任务中,参赛者将使用 Matplotlib 库来创建直观、互动的图表,以揭示数据中的关键模式和趋势。具体要求如下:
(1)使用柱状图展示2023年每个月的汽车总销量,每个柱子代表一个月份,其高度表示该月的汽车总销量;
(2)创建条形图比较不同厂商的年度总销量,每个条形代表一个品牌,其长度表示该品牌在一年中的总销量;
(3)制作散点图探索车型售价(车型售价取平均值)与销量之间的关系,每个点代表一个车型,其位置根据该车型的售价和销量确定;
(4)使用饼图展示不同车型在总销量中的占比,每个饼图的切片代表一个车型,其大小表示该车型在总销量中的份额;
将该 4 个可视化图表分别截图复制粘贴至【提交结果.docx】中对应的任务序号下。
(二)任务二:业务分析
业务分析在汽车销售市场中至关重要,它可以帮助理解客户需求、市场趋势和产品定位。本任务中,我们将使用Python对汽车销售数据进行深入的业务分析,目的是识别市场的主要特征,并基于数据提出营销策略。
使用提供的汽车销售数据集,计算以下指标:
(1)最受欢迎的车型:根据年度销量,确定哪种车型最受欢迎;
(2)销量与售价的关系:分析售价与销量之间的关系,找出是否存在售价与销量的相关性;
(3)市场细分分析:根据销量和价格区间,识别不同市场细分(如经济型、中档型、豪华型)的表现;
根据上述分析结果,撰写一段简短的描述,提出至少两条针对汽车销售市场的营销策略建议。将内容复制粘贴至桌面【提交结果.docx】中对应的任务序号下。
1.在2015到2022年之中,2015年的最受欢迎的车型:RAV4荣放
2.销量的平均值为4095元,平均售价在13万元;并且在销量最大值达到了16907元,售价达到了141.58万元
3.并且大部分销量的多数在中档型,豪华型和经济型