2023年全国职业院校技能大赛中职组大数据应用与服务赛项题库参考答案陆续更新中,敬请期待…

2023年全国职业院校技能大赛中职组大数据应用与服务赛项题库参考答案陆续更新中,敬请期待...

武汉唯众智创科技有限公司

2024 年 2 月

联系人:辜渝傧13037102709

题号:试题01

模块一:平台搭建与运维

一)任务一:大数据平台搭建

本模块需要使用 root 用户完成相关配置;所有组件均在/root/software 目录下。
1.子任务一:基础环境准备

master、slave1、slave2三台节点都需要安装JDK

(1)将JDK安装包解压到/root/software目录下;
tar zxvf jdk-8u202-linux-x64.tar.gz -C /root/software

(2)在"/etc/profile"文件中配置JDK环境变量

JAVA_HOME和PATH的值,并让配置文件立即生效;
vi /etc/profile

在文件最底部添加如下内容

export JAVA_HOME=/root/software/jdk1.8.0
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

添加完成后保存。执行source /etc/profile命令。

(3)查看JDK版本,检测JDK是否安装成功。

答:输入java -version查看版本。

在master节点操作

(1)在master上生成SSH密钥对;
:执行ssh-keygen -t rsa,一直回车即可

(2)将master上的公钥拷贝到slave1和slave2上;
ssh-copy-id slave1

(3)在master 上通过 SSH 连接slave1 和slave2 来验证。
ssh slave1

2.子任务二:Hadoop 完全分布式安装配置

master、slave1、slave2三台节点都需要安装Hadoop

(1)在 主 节 点 将 Hadoop 安 装 包 解 压 到/root/software目录下;
tar zxvf hadoop-3.2.1.tar.gz -C /root/software/

(2)依次配置hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml和workers配置文件;Hadoop集群部署规划如下表;

表1 Hadoop集群部署规划

服务器 master slave1 slave2

HDFS NameNode

HDFS SecondaryNameNode

HDFS DataNode DataNode DataNode

YARN ResourceManager

YARN NodeManager NodeManager NodeManager

历史日志服务器 JobHistoryServer

hadoop-env.sh

bash 复制代码
export JAVA_HOME=/root/software/jdk1.8.0
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

core-site.xml:

bash 复制代码
<!-- 在configuration标签内添加以下内容 -->
<property>
	<name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
</property>
<!-- 临时文件存放位置 -->
<property>
	<name>hadoop.tmp.dir</name>
    <value>/root/software/hadoop-3.2.1/hadoopDatas/tempDatas</value>
</property>

hdfs-site.xml:

bash 复制代码
<!-- 在configuration标签内添加以下内容 -->
<!-- 设置副本数量 -->
<property>
        <name>dfs.replication</name>
    <value>2</value>
</property>
<!-- namenode存放的位置,老版本是用dfs.name.dir -->
<property>
        <name>dfs.namenode.name.dir</name>
    <value>/root/software/hadoop-3.2.1/hadoopDatas/namenodeDatas</value>
</property>
<!-- datanode存放的位置,老版本是dfs.data.dir -->
<property>
        <name>dfs.datanode.data.dir</name>
    <value>/root/software/hadoop-3.2.1/hadoopDatas/datanodeDatas/</value>
</property>
<!-- 关闭文件上传权限检查 -->
<property>
        <name>dfs.permissions.enalbed</name>
    <value>false</value>
</property>
<!-- namenode运行在哪儿节点,默认是0.0.0.0:9870,在hadoop3.x中端口从原先的50070改为了9870 -->
<property>
        <name>dfs.namenode.http-address</name>
    <value>master:9870</value>
</property>
<!-- secondarynamenode运行在哪个节点,默认0.0.0.0:9868 -->
<property>
        <name>dfs.namenode.secondary.http-address</name>
    <value>master:9868</value>
</property>

mapred-site.xml:

bash 复制代码
<!-- 在configuration标签内添加以下内容 -->
<!-- 设置mapreduce在yarn平台上运行 -->
<property>
        <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<!-- 配了上面这个下面这个也得配, 不然跑mapreduce会找不到主类。MR应用程序的CLASSPATH-->
<property>
        <name>mapreduce.application.classpath</name>
    <value>/root/software/hadoop-3.2.1/share/hadoop/mapreduce/*:/root/software/hadoop-3.2.1/share/hadoop/mapreduce/lib/*</value>
</property>
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
</property>

yarn-site.xml:

bash 复制代码
<!-- 在configuration标签内添加以下内容 -->
<!-- resourcemanager运行在哪个节点 -->
<property>
        <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>
<!-- nodemanager获取数据的方式 -->
<property>
        <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<!-- 关闭虚拟内存检查 -->
<property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

workers:

删掉里面的localhost,添加以下内容

bash 复制代码
master
slave1
slave2

(3)在master节点的Hadoop 安装目录下依次创建

hadoopDatas/tempDatas 、 hadoopDatas/namenodeDatas 、

hadoopDatas/datanodeDatas、hadoopDatas/dfs/nn/edits、

hadoopDatas/dfs/snn/name 和

hadoopDatas/dfs/nn/snn/edits目录;

答:进入hadoop安装目录下执行下面命令:

bash 复制代码
mkdir -p hadoopDatas/tempDatas
mkdir -p hadoopDatas/namenodeDatas 
mkdir -p hadoopDatas/datanodeDatas
mkdir -p hadoopDatas/dfs/nn/edit
mkdir -p hadoopDatas/dfs/snn/name
mkdir -p hadoopDatas/dfs/nn/snn/edits

(4)在master节点上使用scp命令将配置完的Hadoop安装目录直接拷贝至slave1和slave2;

bash 复制代码
scp -r /root/software/hadoop-3.2.1 root@slave1:/root/software/
scp -r /root/software/hadoop-3.2.1 root@slave2:/root/software/

(5)三台节点的"/etc/profile"文件中配置Hadoop环境变量HADOOP_HOME和PATH的值,并让配置文件立即生效;

bash 复制代码
vi /etc/profile
export HADOOP_HOME=/root/software/hadoop-3.2.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile

(6)在主节点格式化集群;

bash 复制代码
hdfs namenode -format

(7)在主节点依次启动HDFS、YARN集群和历史服务

bash 复制代码
start-all.sh
mapred --daemon start historyserver(mr-jobhistory-daemon.sh start historyserver)

3.子任务三:MySQL 安装配置

只在master节点操作

(1)将MySQL 5.7.25安装包解压到/root/software

目录下;
tar xf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar -C /root/software

(2)使用 rpm -ivh 依 次 安 装 mysql-community-

common、mysql-community- libs、mysql-community-libs-

compat 、 mysql-community-client 和 mysql-community-

server包;

bash 复制代码
rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

(3)安装好MySQL后,使用mysql用户初始化和启动数据库;
systemctl start mysqld.service

(4)使用root用户无密码登录MySQL,然后将root用户的密码修改为123456,修改完成退出MySQL,重新登录验证密码是否修改成功;

更改"mysql"数据库里的 user 表里的 host 项,从

localhost 改成即可实现用户远程登录;设置完成刷新配置信息,让其生效。

bash 复制代码
systemctl stop mysqld.service
vi /etc/my.cnf

加入下面配置

bash 复制代码
skip-grant-tables
systemctl start mysqld.service

此时即可无密码登录mysql,登录后执行下面命令修改密码

bash 复制代码
flush privileges;
set password for root@localhost = password('123456');
flush privileges;
exit

修改完成后注释skip-grant-tables并重启服务。

在mysql命令行执行下面命令即可远程登录

bash 复制代码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;

4.子任务四:Hive 安装配置

只在master节点操作。

(1)将Hive 3.1.2的安装包解压到/root/software

目录下;
tar zxf apache-hive-3.1.2-bin.tar.gz -C /root/software/

(2)在"/etc/profile"文件中配置Hive环境变量HIVE_HOME

和PATH的值,并让配置文件立即生效;

bash 复制代码
vi /etc/profile
export HIVE_HOME=/root/software/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile

(3)查看Hive版本,检测Hive环境变量是否设置成功;
hive --version

(4)切换到 $HIVE_HOME/conf 目录下,将 hive-env.sh.

template文件复制一份并重命名为hive-env.sh;然后,使用vim编辑器进行编辑,在文件中配置HADOOP_HOME、HIVE_CONF_DIR以及HIVE_AUX_JARS_PATH参数的值,将原有值删除并将前面的注释符#去掉;配置完成,保存退出;

bash 复制代码
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
HADOOP_HOME=/root/software/hadoop-3.2.1
export HIVE_CONF_DIR=/root/software/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/root/software/apache-hive-3.1.2-bin/lib

(5)将 /root/software 目 录 下 的 MySQL 驱 动 包mysql-connector-java-5.1.47-bin.jar拷贝到 H I V E H O M E / l i b 目录下; ∗ ∗ 答 ∗ ∗ : ' c p / r o o t / s o f t w a r e / m y s q l − c o n n e c t o r − j a v a − 5.1.47. j a r / r o o t / s o f t w a r e / a p a c h e − h i v e − 3.1.2 − b i n / l i b ' ( 6 )在 HIVE_HOME/lib目录下; **答**:`cp /root/software/ mysql-connector-java-5.1.47.jar /root/software/apache-hive-3.1.2-bin/lib` (6)在 HIVEHOME/lib目录下;∗∗答∗∗:'cp/root/software/mysql−connector−java−5.1.47.jar/root/software/apache−hive−3.1.2−bin/lib'(6)在HIVE_HOME/conf目录下创建一个名为hive-site.xml的文件,并使用vim编辑器进行编辑;

配置如下内容:

表2 配置内容

配置参数 描述 参数值

javax.jdo.optio n.ConnectionURL 连接元数据库的链接信息 jdbc:mysql://master:3306/hivedb

?createDatabaseIfNotExist=true& amp;useSSL=false&useUnicode

=true&characterEncoding=UTF

-8

javax.jdo.optio n.ConnectionDri verName 连接数据库驱动 com.mysql.jdbc.Driver

javax.jdo.optio n.ConnectionUse 连接数据库用户名称 root

rName

javax.jdo.optio n.ConnectionPas sword 连接数据库用户密码

123456

bash 复制代码
touch hive-site.xml
vim hive-site.xml
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>username to use against metastore database</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
        <description>password to use against metastore database</description>
    </property>
</configuration>

(7)使用schematool命令,通过指定元数据库类型为"mysql",来初始化源数据库的元数据;
/root/software/apache-hive-3.1.2-bin/bin/schematool -initSchema -dbType mysql -verbos

(8)使用CLI启动Hive,进入Hive客户端;在Hive默认数据库下创建一个名为student的管理表;

表3 数据表

字段 数据类型

id int

name string

bash 复制代码
hive
create table student(id int,name string);

(9)通过insert语句往student表中插入一条测试数据。
insert into student(id,name) values(1,"test");

5.子任务五:Flume 安装配置

只在master 节点操作。

(1)将 Flume 1.11.0 的 安 装 包 解 压 到

/root/software目录下;
tar zxvf apache-flume-1.11.0-bin.tar.gz -C /root/software/

(2)在"/etc/profile"文件中配置Flume环境变量

FLUME_HOME和PATH的值,并让配置文件立即生效;

bash 复制代码
vim /etc/profile
export FLUME_HOME=/root/software/apache-flume-1.11.0-bin
export PATH=$PATH:$FLUME_HOME/bin
source /etc/profile

(3)使 用 cd 命 令 进 入 /root/software/apache- flume-1.11.0-bin/conf 目录下, 使用cp 命令将flume-env.sh.template文件复制一份,并重命名为flume-env.sh使用vim 命令打开 "flume-env.sh" 配置文件, 找到JAVA_HOME参数位置,将前面的"#"去掉,将值修改为本机JDK的实际位置;修改完成,保存退出;

bash 复制代码
cd /root/software/apache-flume-1.11.0-bin/conf
cp flume-env.sh.template flume-env.sh
vim flume-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0

(4)查看Flume版本,检测Flume是否安装成功。
flume-ng version

(二)任务二:数据库配置维护

1.子任务一:数据库配置

在Hive 中创建一个名为 comm 的数据库,如果数据库已经存在,则不进行创建。
create database if not exists comm;
2.子任务二:创建相关表

(1)在 comm 数 据 库 下 创 建一个名为ods_behavior_log的外部表,如果表已存在,则先删除;分区字段为dt,即根据日期进行分区;同时,使用location关键 字 将 表 的 存 储 路 径 设 置 为 HDFS 的/behavior/ods/ods_behavior_log目录;字段类型如下表所示;

表4 字段类型

字段 数据类型 说明

line string 一整行JSON数据

dt string 日期,分区字段
:-- 删除已存在的表

bash 复制代码
drop table if exists comm.ods_behavior_log;

-- 创建外部表

bash 复制代码
create external table comm.ods_behavior_log(line string) partitioned by (dt string) location '/behavior/ods/ods_behavior_log';

(2)使用loaddata子句将本地/root/eduhq/data/app_log/behavior目录下的每个数据文件依次加载到外部表ods_behavior_log的对应分区中,按照日志文件对应日期定义静态分区(例如:dt='2023-01-01')
load data local inpath '/root/eduhq/data/app_log/behavior/behavior2023-01-01.log' into table ods_behavior_log partition(dt='2023-01-01');

其他同理。

(3)查看ods_behavior_log表的所有现有分区、前3行数据,并统计外部表ods_behavior_log数据总行数;

bash 复制代码
SHOW PARTITIONS ods_behavior_log;
select * from ods_behavior_log limit 3;
select count(*) from ods_behavior_log;

(4)在 comm 数 据 库 下 创 建 一 个 名 为

dwd_behavior_log的外部表,如果表已存在,则先删除;分区字段为dt,即根据日期进行分区;另外,要求指定表的存储路径为HDFS的/behavior/dwd/dwd_behavior_log目录,存储文件类型为"orc",文件的压缩类型为"snappy";字段类型如下表所示;

表5 字段类型

字段 数据类型 说明

client_ip string 客户端请求的IP地址

device_type

string 请求的设备类型, 手机

mobile或者电脑pc

type

string 上网的模式,4G、5G或

WiFi

device string 设备ID

url string 访问的资源路径

province string 省份

city string 城市

ts bigint 时间戳

dt string 日期,分区字段

bash 复制代码
drop table if exists comm.dwd_behavior_log;
create external table comm.dwd_behavior_log(client_ip string,device_type string,type string,device string,url string,province string,city string,ts bigint) partitioned by (dt string) STORED AS orc location '/behavior/dwd/dwd_behavior_log' tblproperties ("orc.compress"="SNAPPY");

更多内容请联系

武汉唯众智创科技有限公司

欲了解更多信息,欢迎登录www.whwzzc.com,咨询电话13037102709

*本资料产品图片及技术数据仅供参考,如有更新恕不另行通知,具体内容解释权归唯众所有。

相关推荐
bin91534 小时前
【EXCEL数据处理】000010 案列 EXCEL文本型和常规型转换。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。
大数据·数据库·信息可视化·数据挖掘·数据分析·excel·数据可视化
极客先躯7 小时前
Hadoop krb5.conf 配置详解
大数据·hadoop·分布式·kerberos·krb5.conf·认证系统
2301_786964369 小时前
3、练习常用的HBase Shell命令+HBase 常用的Java API 及应用实例
java·大数据·数据库·分布式·hbase
matlabgoodboy10 小时前
“图像识别技术:重塑生活与工作的未来”
大数据·人工智能·生活
happycao12311 小时前
Flink 03 | 数据流基本操作
大数据·flink
Neituijunsir11 小时前
2024.09.22 校招 实习 内推 面经
大数据·人工智能·算法·面试·自动驾驶·汽车·求职招聘
Data 31713 小时前
Hive数仓操作(十一)
大数据·数据库·数据仓库·hive·hadoop
qtj-00114 小时前
普通人在刚开始做副业时要注意哪些细节?
大数据·微信·新媒体运营·创业创新
知识分享小能手14 小时前
mysql学习教程,从入门到精通,SQL 修改表(ALTER TABLE 语句)(29)
大数据·开发语言·数据库·sql·学习·mysql·数据分析
a6953188_15 小时前
如何评估一个副业项目的可行性?
大数据·微信·创业创新