2024年职业院校中职组ZZ052大数据应用与服务赛项赛题
第02套【子任务一:基础环境准备】
模块一:平台搭建与运维
(一)任务一:大数据平台搭建
1.子任务一:基础环境准备
(1)对三台环境更新主机名,配置 hosts 文件,以 node01作为时钟源并进行时间同步;
# 分别在不同主机上面执行更新主机名
hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03
# 配置hosts文件
vim /etc/hosts
# 配置以下内容
172.15.0.2 node01
172.15.0.3 node02
172.15.0.4 node03
# 分发到其他机器
scp /etc/hosts node02:/etc/
scp /etc/hosts node03:/etc/
(2)执行命令生成公钥、私钥,实现三台机器间的免秘登陆;
# 都在node01上进行
ssh-keygen -t rsa #按3次回车
ssh-copy-id node01
ssh-copy-id node02
ssh-copy-id node03
(3)从宿主机/root 目录下将文件 jdk-8u212-linux-x64.tar.gz 复制到容器 node01 中的/root/software 路径中(若路径不存在,则需新建),将 node01 节点 JDK 安装包解压到/root/software 路径中(若路径不存在,则需新建);
# 在node01里面执行
mkdir /root/software
# 在node02里面执行
mkdir /root/software
# 在node03里面执行
mkdir /root/software
# 在宿主机上执行
docker cp /root/jdk-8u212-linux-x64.tar.gz node01:/root/software
# 在node01里面执行
tar -zxvf /root/software/jdk-8u212-linux-x64.tar.gz -C /root/software/
(4)修改容器中/etc/profile 文件,设置 JDK 环境变量并使其生效,配置完毕后在 node01 节点分别执行“java -version”和“javac”命令
node01:
vim /etc/profile
添加内容:
#JAVA_HOME
export JAVA_HOME=/root/software/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
从node01将配置文件分发到node02和node03中
scp /etc/profile node02:/etc/
scp /etc/profile node03:/etc/
分别在node01 node02 node03中执行
source /etc/profile
在node01执行
java -version
javac
2.子任务二:Hadoop 完全分布式安装配置
本任务需要使用 root 用户完成相关配置,安装 Hadoop需要配置前置环境。命令中要求使用绝对路径,具体要求如下:
(1)在 node01 将 Hadoop 解压到/root/software(若路径不存在,则需新建)目录下,并将解压包分发至 node02、node03 中,其中三个节点节点均作为 datanode,配置好相关环境,初始化 Hadoop 环境 namenode;
# 在 主 节 点 将 Hadoop 安 装 包 解 压 到/root/software目录下;
tar -zxvf /root/software/hadoop-3.1.3.tar.gz -C /root/software/
#配置hadoop-env.sh
vim /root/software/hadoop-3.1.3/etc/hadoop/hadoop-env.sh
#配置内容
export JAVA_HOME=/root/software/jdk1.8.0_212
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
vim /root/software/hadoop-3.1.3/etc/hadoop/core-site.xml
#配置内容
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/software/hadoop-3.1.3/data</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
#配置hdfs-site.xml
vim /root/software/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
#配置内容
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>node01:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:9868</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
#配置mapred-site.xml
vim /root/software/hadoop-3.1.3/etc/hadoop/mapred-site.xml
#配置内容
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/root/software/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/root/software/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/root/software/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node01:19888</value>
</property>
</configuration>
#配置 yarn-site.xml
vim /root/software/hadoop-3.1.3/etc/hadoop/yarn-site.xml
#配置内容
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node01</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>6144</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>7168</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>8</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-vcores</name>
<value>1</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>8</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://node01:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
#配置workers
vim /root/software/hadoop-3.1.3/etc/hadoop/workers
#删掉localhost添加以下内容:
node01
node02
node03
#在node01节点上使用scp命令将配置完的Hadoop安装目录直接拷贝至node02和node03;
scp -r /root/software/hadoop-3.1.3 node02:/root/software/
scp -r /root/software/hadoop-3.1.3 node03:/root/software/
#三台节点的“/etc/profile”文件中配置Hadoop环境变量HADOOP_HOME和PATH的值,并让配置文件立即生效;
node01:
vim /etc/profile
添加以下内容:
#HADOOP_HOME
export HADOOP_HOME=/root/software/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
在node01上将配置文件分发到node02和node03上
scp /etc/profile node02:/etc/
scp /etc/profile node03:/etc/
分别在node01 node02 node03执行命令
source /etc/profile
#在主节点格式化集群
hadoop namenode -format
(2)开启集群,查看各节点进程。
# 在主节点依次启动HDFS、YARN集群和历史服务
启动HDFS
start-dfs.sh
启动YARN
start-yarn.sh
启动历史服务
mapred --daemon start historyserver
或
mr-jobhistory-daemon.sh start historyserver
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目录下;
docker cp /root/apache-hive-3.1.2-bin.tar.gz node03:/root/software
docker cp /root/mysql-connector-java-5.1.37.jar node03:/root/software
node03:
tar -zxvf /root/software/apache-hive-3.1.2-bin.tar.gz -C /root/software/
(2)设置 Hive 环境变量,并使环境变量生效,执行命令 hive --version 查看版本信息;
node03:
vim /etc/profile
添加以下内容:
#HIVE_HOME
export HIVE_HOME=/root/software/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin
使环境变量生效
source /etc/profile
hive --version
(3)修改相关配置,添加依赖包,将 MySQL 数据库作为Hive 元数据库,初始化 Hive 元数据。
cd $HIVE_HOME/conf
cp ./hive-env.sh.template ./hive-env.sh
vim ./hive-env.sh
配置内容:
HADOOP_HOME=/root/software/hadoop-3.1.3
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
# MySQL 驱 动 包mysql-connector-java-5.1.37-bin.jar拷贝到$HIVE_HOME/lib目录下
cp /root/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib
vim $HIVE_HOME/conf/hive-site.xml
#添加内容
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
</configuration>
#初始化源数据库的元数据
解决jar包冲突
rm -rf $HIVE_HOME/lib/guava-19.0.jar
cp /root/software/hadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib
schematool -initSchema -dbType mysql -verbose
注:下面需要在node03上面搭建mysql说明node03节点没有mysql 其他节点是否有mysql需要比赛时候自己判断
4.子任务四:Flume 安装配置
( 1 ) 从 宿 主 机 /root 目 录 下 将 文 件 apache-flume-1.11.0-bin.tar.gz 复制到容器 node03 中的/root/software路径中(若路径不存在,则需新建),将 node03 节点 Flume安装包解压到/root/software 目录下;
docker cp /root/apache-flume-1.11.0-bin.tar.gz node03:/root/software
node03:
tar -zxvf /root/software/apache-flume-1.11.0-bin.tar.gz -C /root/software/
(2)完善相关配置,配置 Flume 环境变量,并使环境变量生效,执行命令 flume-ng version。
node03:
vim /etc/profile
添加以下内容:
#FLUME_HOME
export FLUME_HOME=/root/software/apache-flume-1.11.0-bin
export PATH=$PATH:$FLUME_HOME/bin
source /etc/profile
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=/root/software/jdk1.8.0_212
#查看Flume版本,检测Flume是否安装成功
flume-ng version
(二)任务二:数据库配置维护
1.子任务一:数据库配置
(1)在主机 node3 上安装 mysql-community-server,启动 mySQL 服务,根据临时密码进入数据库,并修改本地密码为“123456”;
# 将MySQL 5.7.25安装包解压到/root/software目录下;
tar -vxf /root/software/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C /root/software/
# 使 用 rpm-ivh 依 次 安 装 mysql-community-common、mysql-community- libs、mysql-community-libs-compat 、 mysql-community-client 和 mysql-community-server包;
rpm -ivh /root/software/mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh /root/software/mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh /root/software/mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
rpm -ivh /root/software/mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh /root/software/mysql-community-server-5.7.28-1.el7.x86_64.rpm
如果安装rpm -ivh /root/software/mysql-community-server-5.7.28-1.el7.x86_64.rpm出现报错
下载依赖:
yum install -y libaio
yum -y install numactl
#安装好MySQL后,使用mysql用户初始化和启动数据库;
systemctl start mysqld
查看mysql初始化密码
cat /var/log/mysqld.log | grep password
登录nysql
mysql -uroot
修改root用户密码
set password for root@localhost = password('123456');
刷新配置:
flush privileges;
退出登录
exit;
(2)开启 MySQL 远程连接权限,所有 root 用户都可以使用 123456 进行登录连接。
重新登录mysql
mysql -uroot -p
配置用户用户远程登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
刷新配置:
flush privileges;
2.子任务二:导入相关表
(1)将本地/root/eduhq/equipment/目录下的数据文件 root_sl_src.sql 导入 MySQL 对应数据库 root_sl_src;
-- mysql 创建库
create database if not exists root_sl_src;
-- 如果比赛没有mysql连接的图形化界面则使用以下命令:
use root_sl_src;
source '/root/eduhq/equipment/root_sl_src.sql';
(2)将本地/root/eduhq/equipment/目录下的数据文件 root_sl_ugoogds_src.sql 导 入 MySQL 对 应 数 据 库root_sl_ugoogds_src。
-- mysql 创建库
create database if not exists root_sl_ugoogds_src;
-- 如果比赛没有mysql连接的图形化界面则使用以下命令:
use root_sl_ugoogds_src;
source '/root/eduhq/equipment/root_sl_ugoogds_src.sql';
注:这里如果导入报错则需要
vim /etc/my.cnf
-- 在[mysqld]下面添加
sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
-- 重启mysql
systemctl restart mysqld
3.子任务三:维护数据表
结合已导入的两份 sql 数据,对其中的数据进行如下查询和操作。
(1)对‘root_sl_src’数据库中的‘province’数据表 进 行 修 改 , 修 改 字 段 province_id 为 24 的 记 录 的province_name,修改为‘内蒙古自治区’;
UPDATE root_sl_src.province
SET province_name = '内蒙古自治区'
WHERE province_id = 24;
(2)对‘root_sl_src’数据库中的‘city’数据表进行删除,删除字段 city_id 为 142 的记录。
DELETE FROM root_sl_src.city
WHERE city_id = 142;