(第二套)ZZ052大数据应用与服务赛项赛题

模块一:平台搭建与运维

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

1.子任务一:基础环境准备

(1)对三台环境更新主机名,配置hosts文件,以node01作为时钟源并进行时间同步;

1
2
3
# 其他三台一样
[root@localhost ~]# hostnamectl set-hostname master
vi /etc/hosts

(2)执行命令生成公钥、私钥,实现三台机器间的免秘登陆;

1
2
3
4
5
# 其他三台一样
[root@localhost ~]# ssh-keygen
[root@localhost ~]# ssh-copy-id master
[root@localhost ~]# ssh-copy-id slave1
[root@localhost ~]# ssh-copy-id slave2

(3)从宿主机/root 目录下将文件 jdk-8u212-linux-x64.tar.gz 复制到容器 node01 中的/root/software 路径中(若路径不存在,则需新建),将 node01 节点 JDK 安装包解压到/root/software 路径中(若路径不存在,则需新建);

1
2
[root@localhost software]# mkdir /root/software
[root@localhost software]# tar -zxvf /opt/software/jdk-8u391-linux-x64.tar.gz -C /root/software/

(4)修改容器中/etc/profile 文件,设置 JDK 环境变量并使其生效,配置完毕后在 node01 节点分别执行“java - version”和“javac”命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[root@localhost software]# vi /etc/profile
# 新增
export JAVA_HOME=/root/software/jdk
export PATH=$PATH:$JAVA_HOME/bin
[root@localhost software]# source /etc/profile
[root@localhost software]# java -version
java version "1.8.0_391"
Java(TM) SE Runtime Environment (build 1.8.0_391-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)
[root@localhost software]# javac
用法: javac <options> <source files>
其中, 可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件和注释处理程序的位置
-cp <路径> 指定查找用户类文件和注释处理程序的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖所安装扩展的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-parameters 生成元数据以用于方法参数的反射
-d <目录> 指定放置生成的类文件的位置
-s <目录> 指定放置生成的源文件的位置
-h <目录> 指定放置生成的本机标头文件的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-encoding <编码> 指定源文件使用的字符编码
-source <发行版> 提供与指定发行版的源兼容性
-target <发行版> 生成特定 VM 版本的类文件
-profile <配置文件> 请确保使用的 API 在指定的配置文件中可用
-version 版本信息
-help 输出标准选项的提要
-A关键字[=值] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标记> 直接将 <标记> 传递给运行时系统
-Werror 出现警告时终止编译
@<文件名> 从文件读取选项和文件名

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

本任务需要使用 root 用户完成相关配置,安装 Hadoop需要配置前置环境。命令中要求使用绝对路径,具体要求如下:

(1)在 node01 将 Hadoop 解压到/root/software(若路径不存在,则需新建)目录下,并将解压包分发至 node02、node03 中,其中三节点节点均作为 datanode,配置好相关环境,初始化 Hadoop 环境 namenode;

1
2
3
4
5
6
7
[root@localhost software]# tar -zxvf /opt/software/hadoop-3.3.6.tar.gz -C /root/software/
# 分发
[root@localhost software]# scp -r jdk/ hadoop/ slave1:`pwd`
[root@localhost software]# scp -r jdk/ hadoop/ slave2:`pwd`

# 初始化
[root@localhost software]# hadoop namenode -format

(2)开启集群,查看各节点进程。

1
2
3
4
5
6
7
8
9
10
11
# 启动
[root@localhost software]# start-all.sh
[root@localhost software]# jps
47810 ResourceManager
48597 WebAppProxyServer
49205 JobHistoryServer
47450 SecondaryNameNode
49371 Jps
48060 NodeManager
46766 NameNode
47134 DataNode

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

(1)从宿主机/root 目录下将文件 apache-hive-3.1.2-bin.tar.gz、mysql-connector-java-5.1.37.jar 复制到容器 node03 中的/root/software 路径中(若路径不存在,则需新建),将 node03 节点 Hive 安装包解压到/root/software目录下;

1
[root@localhost conf]# tar -zxvf /opt/software/apache-hive-3.1.3-bin.tar.gz -C /root/software/

(2)设置 Hive 环境变量,并使环境变量生效,执行命令 hive –version 查看版本信息;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost conf]# vi /etc/profile
export JAVA_HOME=/root/software/jdk
export HADOOP_HOME=/root/software/hadoop
export HIVE_HOME=/root/software/hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin

[root@master conf]# hive --version
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/root/software/hive/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/root/software/hadoop/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Hive 3.1.3
Git git://MacBook-Pro.fios-router.home/Users/ngangam/commit/hive -r 4df4d75bf1e16fe0af75aad0b4179c34c07fc975
Compiled by ngangam on Sun Apr 3 16:58:16 EDT 2022
From source with checksum 5da234766db5dfbe3e92926c9bbab2af

(3)修改相关配置,添加依赖包,将 MySQL 数据库作为Hive 元数据库,初始化 Hive 元数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 配置好hive-env.sh和hive-site.xml
[root@master conf]# cp /opt/software/mysql-connector-java-5.1.34.jar /root/software/hive/lib/

# 初始化
[root@master conf]# schematool -initSchema -dbType mysql

# 启动
[root@master hive]# mkdir logs
[root@master hive]# nohup hive --service metastore >> logs/metastore.log 2>&1 &
[1] 128547

[root@master hive]# hive
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/root/software/hive/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/root/software/hadoop/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/software/jdk/bin:/root/software/hadoop/bin:/root/software/hadoop/sbin:/root/software/hive/bin:/root/bin)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/root/software/hive/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/root/software/hadoop/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Hive Session ID = 7e262d28-438c-4922-af9c-1323adfa7f88

Logging initialized using configuration in jar:file:/root/software/hive/lib/hive-common-3.1.3.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Hive Session ID = 195fb209-4ef9-4452-bbdd-90b81a8d04bc
hive>

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

(1)从宿主机/root 目录下将文件 apache-flume-1.11.0-bin.tar.gz复制到容器node03中的/root/software路径中(若路径不存在,则需新建),将 node03 节点 Flume安装包解压到/root/software 目录下;

1
[root@master software]# tar -zxvf /opt/software/apache-flume-1.11.0-bin.tar.gz -C /root/software/

(2)完善相关配置,配置 Flume 环境变量,并使环境变量生效,执行命令 flume-ng version。

1
2
3
4
5
6
7
8
9
10
11
12
[root@master software]# vi /etc/profile
# 新增
export FLUME_HOME_HOME=/root/software/flume
export PATH=$PATH:$FLUME_HOME/bin
[root@master software]# source /etc/profile

[root@master software]# flume-ng version
Flume 1.11.0
Source code repository: https://git.apache.org/repos/asf/flume.git
Revision: 1a15927e594fd0d05a59d804b90a9c31ec93f5e1
Compiled by rgoers on Sun Oct 16 14:44:15 MST 2022
From source with checksum bbbca682177262aac3a89defde369a37

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

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

(1)在主机 node3 上安装 mysql-community-server,启动 mySQL 服务,根据临时密码进入数据库,并修改本地密码为“123456”;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@master software]# rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm 
警告:mysql-community-server-5.7.44-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-server-5.7.44-1.e################################# [100%]
[root@master software]# systemctl start mysqld
[root@master software]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.44 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.01 sec)

(2)开启 MySQL 远程连接权限,所有 root 用户都可以使用 123456 进行登录连接。

1
2
3
4
5
6
[mysqld]
bind-address=0.0.0.0

mysql> update mysql.user set host='%' where user='mysql.sys';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

2.子任务二:导入相关表

(1)将本地/root/eduhq/equipment/目录下的数据文件 root_sl_src.sql 导入 MySQL 对应数据库 root_sl_src;

1
2
mysql> use root_sl_src
mysql> source root_sl_src.sql

(2)将本地/root/eduhq/equipment/目录下的数据文件 root_sl_ugoogds_src.sql 导 入 MySQL 对应数据库root_sl_ugoogds_src。

1
2
mysql> use root_sl_ugoogds_src
mysql> source root_sl_ugoogds_src.sql

3.子任务三:维护数据表

结合已导入的两份 sql 数据,对其中的数据进行如下查询和操作。

(1)对‘root_sl_src’数据库中的‘province’数据表进行修改,修改字段 province_id 为 24 的记录的province_name,修改为‘内蒙古自治区’;

1
2
3
mysql> update province set province_name='内蒙古自治区' where province_id=24;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

(2)对‘root_sl_src’数据库中的‘city’数据表进行删除,删除字段 city_id 为 142 的记录。

1
2
mysql> delete from city where city_id=142;
Query OK, 1 row affected (0.03 sec)