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
答:
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&useSSL=false&useUnicode=true&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
*本资料产品图片及技术数据仅供参考,如有更新恕不另行通知,具体内容解释权归唯众所有。