模块一:平台搭建与运维
(一)任务一:大数据平台搭建
1.子任务-:Zookeeper 集群安装配置
本任务需要使用 root 用户完成相关配置,具体要求如下
(1)在master 节点将/usr/1oca1/src 目录下的apache-zookeeper-3.5.7-bin.tar.gz包解压到/opt 路径下,将完整命令截图粘贴到对应答题报告中;
答:tar zxf /opt/software/apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module
tar zxf /opt/s拷贝到 slave1、slave2oftware/kafka_2.12-2.4.1.tgz -C /opt/module
Zookeeper配置:
cp /opt/module/apache-zookeeper-3.5.7-bin/conf/zoo_sample.cfg /opt/module/apache-zookeeper-3.5.7-bin/conf/zoo.cfg
vim conf/zoo.cfg
dataDir=/opt/module/apache-zookeeper-3.5.7-bin/data
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
mkdir /opt/module/apache-zookeeper-3.5.7-bin/data
cd data/
echo 1 > myid
(2)在 master 节点上面将配置的 Zookeeper 环境变量文件及 Zookeeper 解压包拷贝到 slave1、slave2 节点,将命令和结果截图粘贴到对应答题报告中;
答:scp -r /opt/module/apache-zookeeper-3.5.7-bin root@slave1:/opt/module/
scp -r /opt/module/apache-zookeeper-3.5.7-bin root@slave2:/opt/module/
(3)将 slave1节点上面/opt/zookeeper-3.5.7/data目录下的 myid 文件内容修改为 2,将 slave2 节点上面/opt/zookeeper-3.5.7/data目录下的myid 文件内容修改为3,将命令和结果截图粘贴到对应答题报告中;
答:修改其他机器的myid文件,slave1改为2,slave2改为3
(4)在 master 节点、slavel 节点、slave2 节点分别启动 zookeeper,将命令和结果截图粘贴到对应答题报告中:
答:zkServer.sh start
2.子任务二:Hadoop 完全分布式集群搭建
本任务需要使用 root 用户完成相关配置,安装 Hadoop需要配置前置环境。命令中要求使用绝对路径,具体要求如下:
(1)在master 节点将/usr/loca1/src 目录下的hadoop-3.1.3.tar.gz包解压到/opt 路径下,将完整命令截图粘贴到对应答题报告中;
答:tar zxvf hadoop-3.2.1.tar.gz -C /opt/module/
(2)在 master 节点修改/root/.bash-profile 文件,设置Hadoop环境变量,将环境变量配置内容截图粘贴到对应答题报告中;
答:hadoop-env.sh:
export JAVA_HOME=/opt/module/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:
<!– 在configuration标签内添加以下内容 –>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!– 临时文件存放位置 –>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.2.1/hadoopDatas/tempDatas</value>
</property>
(3)在 master 节点上面修改 Hadoop 的配置文件hdfs-site.xm1,需要在该文件中指定上传的文件的副本数为3,将修改的内容截图粘贴到对应答题报告中;
答:hdfs-site.xml:
<!– 在configuration标签内添加以下内容 –>
<!– 设置副本数量 –>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!– namenode存放的位置,老版本是用dfs.name.dir –>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/module/hadoop-3.2.1/hadoopDatas/namenodeDatas</value>
</property>
<!– datanode存放的位置,老版本是dfs.data.dir –>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/module/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>
(4)在 master 节点上面修改 Hadoop 的配置文件需要在该文件中指定YARN 的yarn-site.xml,ResourceManager的地址为slave2,将修改的内容截图粘贴到对应答题报告中;
答:mapred-site.xml:
<!– 在configuration标签内添加以下内容 –>
<!– 设置mapreduce在yarn平台上运行 –>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!– 配了上面这个下面这个也得配, 不然跑mapreduce会找不到主类。MR应用程序的CLASSPATH–>
<property>
<name>mapreduce.application.classpath</name>
<value>/opt/module/hadoop-3.2.1/share/hadoop/mapreduce/*:/opt/module/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:
<!– 在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,添加以下内容
master
slave1
slave2
(5)在 master 节点上面将配置的 Hadoop 环境变量文件及 Hadoop 解压包拷贝到slave1、slave2 节点,将命令和结果截图粘贴到对应答题报告中;
答:scp -r /opt/module/hadoop-3.2.1 root@slave1:/opt/module/
scp -r /opt/module/hadoop-3.2.1 root@slave2:/opt/module/
(6)在master节点上面初始化 Hadoop 环境 namenode,将初始化命令及初始化结果截图粘贴到对应答题报告中;
答:hdfs namenode -format
(7)启动 Hadoop 集群(在master 节点启动 hdfs,在slave2节点启动 yarn),使用 ips 查看 master 节点、slave1节点、slave2节点的进程,将查看结果截图粘贴到对应答题报告中。
答:start-all.sh
mapred –daemon start historyserver(mr-jobhistory-daemon.sh start historyserver)
3.子任务三:Hive 安装配置
本任务需要使用 root用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下
(1)在master 节点将/usr/loca1/src 目录下的apache-hive-3.1.2-bin.tar.gz安装包解压到/opt 路径下将完整命令截图粘贴到对应答题报告中:
答:tar zxf apache-hive-3.1.2-bin.tar.gz -C /opt/module/
(2)修改 hive-site.xm1 配置文件,将 MySOL 数据库作为 Hive 元数据库。将配置 Hive 元数据库的相关内容截图粘贴到对应答题报告中;
答:vi /etc/profile
export HIVE_HOME=/opt/module/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
hive –version
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
HADOOP_HOME=/opt/module/hadoop-3.2.1
export HIVE_CONF_DIR=/opt/module/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/opt/module/apache-hive-3.1.2-bin/lib
(3)将/usr/1oca1/src 目录下的 MySQL 数据库 JDBC 驱动 mysql-connector-java-5.1.27-bin.jar 拷贝到 Hive安装目录的1ib 文件夹下,将完整命令截图粘贴到对应答题报告中;
答:cp /opt/module/ mysql-connector-java-5.1.47.jar /opt/module/apache-hive-3.1.2-bin/lib
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>
(4)初始化 Hive 元数据库,将初始化命令及结果截图粘贴到对应答题报告中;
答:/opt/module/apache-hive-3.1.2-bin/bin/schematool -initSchema -dbType mysql -verbos
(5)启动Hive,将命令输出结果截图粘贴到对应答题报告中;
答:hive
(二)任务二:数据库配置维护
1.子任务一:数据库配置
MySQL 是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定不同权限。root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户密码等管理权限。
为了实际项目的需要,可以定义不同的用户角色,并为不同的角色赋予不同的操作权限。当用户访问数据库时,需要先验证该用户是否为合法用户,再约束该用户只能在被赋予的权限范围内操作。具体任务要求如下:
(1)为本地主机数据库创建一个名为 staff 的用户!密码为 staff123456,将完整命令及结果截图粘贴到对应答题报告中;
答:set global validate_password_policy=LOW;
CREATE USER ‘staff’@’localhost’ IDENTIFIED BY ‘staff123456’;
(2)查看用户,确认有刚才创建的 staff 用户,将完整命令及结果截图粘贴到对应答题报告中;
答:SELECT user, host FROM mysql.user;
(3)将用户名 staff 修改为 newstaff,将完整命令及结果截图粘贴到对应答题报告中;
答:RENAME USER ‘staff’@’localhost’ TO ‘newstaff’@’localhost’;
(4)授予用户 newstaff对 WeatherDB 数据库中weather_month 表的查询、插入、删除权限,将完整命令及结果截图粘贴到对应答题报告中(MyS0L数据库中已创建好WeatherDB数据库,如果不存在则需要自己建库并导入数据提供的几个 sq1 是数据源文件);
答:CREATE DATABASE WeatherDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT SELECT, INSERT, DELETE ON WeatherDB.weather_month TO ‘newstaff’@’localhost’;
(5)使用新用户 newstaff 登录MySQL 数据库,查看是否有 WeatherDB 数据库,并查看WeatherDB 数据库下有哪此表,将完整命令及结果截图粘贴到对应答题报告中:(6)删除 newstaff 的用户,并确认是否已经删除newstaff用户,将完整命令及结果截图粘贴到对应答题报告中;
答:mysql -u newstaff -p
show databases;
use WeatherDB;
show tables;
(6)删除 newstaff 的用户,并确认是否已经删除newstaff用户,将完整命令及结果截图粘贴到对应答题报告中:
答:DROP USER ‘newstaff’@’localhost’;
2.子任务二:数据表与数据管理
气候变化正在迅速地改变地球。随着全球气温不断升高海平面上升、极端天气事件频繁发生,人们对于地球的未来更加担忧。为了更好地了解气候变化的趋势、预测未来天气趋势,我们创建了“天气数据库”,用于收集、组织和记录来自全球各地的气象数据和天气预报信息。它的作用不仅仅是记录过去的天气情况,更是提供了一个全球性、长期性的气候趋势预测工具,使气象学家和气候学家能够更好地了解气候变化的趋势,从而采取适当的措施应对未来的气候变化:本任务的具体要求如下:
答:CREATE TABLE WeatherDB.province_city (
city_id INT AUTO_INCREMENT PRIMARY KEY,
city_name VARCHAR(255) NOT NULL,
province_name VARCHAR(255) NOT NULL,
climate VARCHAR(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(2)使用 SQL 命令修改 province_city 表中 climate列的列名为 climate-new,将完整命令及结果截图粘贴到对应答题报告中;
答:ALTER TABLE WeatherDB.province_city CHANGE climate climate_new VARCHAR(255);
(3)使用 SOL 命令给 province-city 表增加一个字段zip-code(代表邮编),字段类型应符合实际意义,将完整命令及结果截图粘贴到对应答题报告中:
答:ALTER TABLE WeatherDB.province_city ADD zip_code VARCHAR(6);
(4)使用 SOL 语句给 province_city 表中插入一条数据,数据的具体信息如下:城市ID为10001、城市名称为阆中市、省份名称为四川省、气候条件为亚热带季风气候、邮编为 637400。将完整SQL语句及运行结果截图粘贴到对应答题报告中。
答:INSERT INTO WeatherDB.province_city (city_id, city_name, province_name, climate_new, zip_code) VALUES (10001, ‘阆中市’, ‘四川省’, ‘亚热带季风气候’, 637400);
(5)使用 SOL 语句批量给 province_city 表中插入三条数据,将完整SQL语句及运行结果截图粘贴到对应答题报告中。数据的具体信息如下:
答:INSERT INTO WeatherDB.province_city (city_id, city_name, province_name, climate_new, zip_code)
VALUES
(10002, ‘江油市’, ‘四川省’, ‘亚热带季风性湿润气候’, 621700),
(10003, ‘灯塔市’, ‘辽宁省’, ‘北温带大陆性气候’, 111300),
(10004, ‘玉环市’, ‘浙江省’, ‘暖温带大陆性季风气候’, 317610);
(6)使用 SQL 语句修改 province_city 表中城市 ID 为10004 的城市信息,将气候修改为亚热带海洋性季风气候,将邮编修改为 317600。将完整 SOL 语句及运行结果截图粘贴到对应答题报告中:
答:UPDATE WeatherDB.province_city
SET climate_new = ‘亚热带海洋性季风气候’, zip_code = 317600
WHERE city_id = 10004;
3.子任务三:维护数据表
SQL 作为一种全球通用的语言,任何人都可以学习使用虽然看起来很复杂,除开特定数据库系统专用的 SOL命令其它基本上不需要任何事先的知识,而且命令通常比较少S0L能够快速的查询和统计大量数据,发现数据的趋势和数据之间的关系。S0L 是一种与数据库打交道的标准语言,熟练地使用 SOL 可以确保每个使用数据库的人都会使用相同的命令,使得开发人员更容易创建与多个数据库一起工作的应用程序。本任务的具体要求如下:
(1)使用 SOL命令查看 weather_month 表中第 20000至第 20100条数据(查询结果只显示第20000至第20100条数据),将完整 SOL 语句和运行结果的后5条数据以及总数据行数截图粘贴到对应答题报告中;
答:SELECT * FROM WeatherDB.weather_month
LIMIT 100 OFFSET 19999;
(2)使用 SOL 语句分别查询四川省、广东省、浙江省下面有哪些城市,输出省份 id、省份名称、城市 id、城市名称、邮编、城市等级、气候条件。将完整SOL 语句和各省份相关城市查询结果的后5条数据以及总数据行数截图粘贴到对应答题报告中:
答:SELECT
ci.id AS city_id,
ci.city_name,
ci.zip_code,
ci.level,
ci.climate,
pr.province_id,
pr.province_name
FROM
city_info ci
JOIN
province_info pr ON ci.province_id = pr.province_id
WHERE
pr.province_name IN (‘四川省’, ‘广东省’, ‘浙江省’);
(3)使用 SOL语句查询 weather_month 表,筛选出哪些城市在 2018 年的月度温差大于等于5度的(平均最高气温-平均最低气温),输出城市 id、城市名称、日期、平均最高气温、平均最低气温。将完整SOL语句和运行结果的后5条数据以及总数据行数截图粘贴到对应答题报告中:
答:SELECT
city_id,
city_name,
month,
avg_high_temp,
avg_low_temp
FROM (
SELECT
city_id,
city_name,
month,
avg_high_temp,
avg_low_temp,
(avg_high_temp – avg_low_temp) AS temperature_difference
FROM
weather_month
WHERE
month LIKE ‘2018-%’ — 只选择2018年的数据
) AS subquery
WHERE
temperature_difference >= 5; — 筛选温差大于等于5度的记录
(4)使用 SOL 语句查询 weather_day 表中各个城市每年的最高温度和最低温度分别是多少度,输出城市id、城市名称、日期(格式为年)、最高温度、最低温度。将完整S0I语句和运行结果的后5条数据以及总数据行数截图粘贴到对应答题报告中
答:SELECT
city_id,
city_name,
YEAR(day) AS year,
MAX(hightest_temp) AS max_temp,
MIN(lowest_temp) AS min_temp
FROM
weather_day
GROUP BY
city_id, city_name, YEAR(day)
ORDER BY
city_id, year;