WHCSRL 技术网

构建数据仓库赛题解析

 系列文章目录

“红亚杯”-大数据环境搭建与数据采集技能线上专题赛赛题

集群安装搭建赛题解析

目录

构建数据仓库赛题解析

前言

在此鸣谢

资料链接

hive介绍

安装数据库(5 / 5分)

安装并配置MySQL

设置MySQL密码

MySQL 密码安全策略

远程登录MySQL 

Hive基础环境配置(8 / 8分)

hive基础环境配置

配置HIVE元数据至MySQL(9 / 9分)

导入MySQL依赖包

slave1:hive-site.xml

配置HIVE客户端(3 / 3分)

master:hive-site.xml

启动Hive(5 / 5分)


构建数据仓库赛题解析

前言

根据“红亚杯”-大数据环境搭建与数据采集技能线上专题赛以及鈴音.博主文章结合整理,附上资料链接。

在此鸣谢

鈴音.

资料链接

链接:https://pan.baidu.com/s/1ytGL3cLGQxGltl5bHrSBQQ 
提取码:yikm 

hive介绍

hive表面意思是蜂巢,Hive 是基于 Hadoop 的数据仓库。

互联网现在进入了大数据时代,大数据是现在互联网的趋势,而 Hadoop 就是大数据时代里的核心技术。

但是 Hadoop 的 MapReduce 操作专业性太强。

所以 Facebook 在这些基础上开发了 Hive 框架。

毕竟世界上会 SQL 的人比会 Java 的人多的多。

hive 可以说是学习 Hadoop 相关技术的一个突破口。

  • slave2安装mysql server用于存放元数据;

  • slave1作为hive server作为thrift 服务器;

  • master作为client客户端进行操作。

Hive Metastore服务将Hive表和分区的元数据存储在关系数据库中,并提供Metastore服务API供客户端(包括Hive)访问元数据。

安装数据库(5 / 5分)

1.环境中已经安装mysql-community-server,注意mysql5.7默认安装后为root用户随机生成一个密码;

  • 直接查看密码:grep "temporary password" /var/log/mysqld.log
  • 登入数据库:mysql -uroot -p
  • 输入随机密码即可登录

2.根据要求设置密码,注意对应的安全策略修改;

  • 设置密码强度为低级:set global validate_password_policy=????;
  • 设置密码长度:set global validate_password_length=????;
  • 修改本地密码:alter user 'root'@'localhost' identified by '????';

3.根据要求满足任意主机节点root的远程访问权限(否则后续hive无法连接mysql);

  • GRANT ALL PRIVILEGES ON *.* TO '????'@'%%%%' IDENTIFIED BY '????' WITH GRANT OPTION;

4.注意刷新权限;

  • flush privileges;

5.参考命令

  • 启动mysql服务:sudo systemctl start mysqld.service
  • 关闭mysql服务:sudo systemctl stop mysqld.service
  • 查看mysql服务:sudo systemctl status mysqld.service

考核条件如下:

安装并配置MySQL

1. 判断是否安装mysql-community-server(1.00 / 1分)

操作环境: slave2

卸载系统自带的Mariadb

  1. rpm -qa|grep mariadb
  2. rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps

 安装MySQL

  1. mkdir -p /usr/mysql
  2. tar -xvf /usr/package/mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar -C /usr/mysql/

安装 MySQL 组件

使用 rpm -ivh 命令依次安装以下组件:

(1)首先安装 mysql-community-common (服务器和客户端库的公共文件),使用命令:

rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm

若是出现“100%%%%”,则表示安装成功:

(2)其次安装 mysql-community-libs(MySQL 数据库客户端应用程序的共享库),使用命令:

rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm

 若是出现“100%%%%”,则表示安装成功:

(3)之后安装 mysql-community-libs-compat(MySQL 之前版本的共享兼容库),使用命令:

rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm

若是出现“100%%%%”,则表示安装成功

(4)之后安装 mysql-community-client(MySQL 客户端应用程序和工具),使用命令:

rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm

若是出现“100%%%%”,则表示安装成功:

(5)最后安装 mysql-community-server(数据库服务器和相关工具),使用命令:

rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

若是出现“100%%%%”,则表示安装成功:

2. 判断是否开启MySQL服务(1.00 / 1分)

操作环境: slave2

启动MySQL服务

重载所有修改过的配置文件:

systemctl daemon-reload

开启服务:

systemctl start mysqld

开机自启:

systemctl enable mysqld

设置MySQL密码

3. mysqld.log日志下生成初临时密码(1.00 / 1分)

操作环境: slave2

安装完毕后,/var/log/mysqld.log 文件中会自动生成一个随机的密码,我们需要先取得这个随机密码,以用于登录 MySQL 服务端:

  1. grep "temporary password" /var/log/mysqld.log
  2. mysql -uroot -p

MySQL 密码安全策略

4. 设置MySQL本地root用户密码为123456(2.00 / 2分)

操作环境: slave2

设置密码强度为低级:

set global validate_password_policy=0;

设置密码长度:

set global validate_password_length=4;

修改本地密码:

alter user 'root'@'localhost' identified by '123456';

退出:q

远程登录MySQL 

以新密码登陆 MySQL:

mysql -uroot -p123456 

创建用户:

create user 'root'@'%%%%' identified by '123456'


允许远程连接:

grant all privileges on *.* to 'root'@'%%%%' with grant option;

刷新权限:

flush privileges;

 

Hive基础环境配置(8 / 8分)

Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。

1.将指定版本的Hive安装包解压到指定路径,添加系统并生效;
2.修改Hive运行环境

  1. # 配置Hadoop安装路径
  2. export HADOOP_HOME=????
  3. # 配置Hive配置文件存放路径为conf
  4. export HIVE_CONF_DIR=????
  5. # 配置Hive运行资源库路径为lib
  6. export HIVE_AUX_JARS_PATH=????

3.由于客户端需要和Hadoop通信,为避免jline版本冲突问题,将Hive中lib/jline-2.12.jar拷贝到Hadoop中,保留高版本.

考核条件如下:

hive基础环境配置

1. 将Hive安装包解压到指定路径/usr/hive(安装包存放于/usr/package/)(2.00 / 2分)

操作环境: master、slave1

2. 设置HIVE系统环境变量($HIVE_HOME)(2.00 / 2分)

操作环境: master、slave1

设置环境变量:

vim /etc/profile

 添加以下内容:

  1. #hive
  2. export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin
  3. export PATH=$PATH:$HIVE_HOME/bin

 生效环境变量:

source /etc/profile

传到slave1并使其生效:

 

3. 设置HIVE运行环境(2.00 / 2分)

操作环境: master、slave1

在master,slave1上,修改 hive-env.sh 中 HADOOP_HOME 环境变量。

  1. cd /usr/hive/apache-hive-2.1.1-bin/conf
  2. cp -p hive-env.sh.template hive-env.sh
  3. vim hive-env.sh

 

添加以下内容:

  1. export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
  2. export HIVE_CONF_DIR=/usr/hive/apache-hive-2.1.1-bin/conf
  3. export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.1.1-bin/lib

4. 解决jline的版本冲突(2.00 / 2分)

操作环境: master、slave1

hadoop和hive的jar包版本不同,保留一个高版本的jar包,删掉低版本的jar包。

slave1和master上执行

  1. cp /usr/hive/apache-hive-2.1.1-bin/lib/jline-2.12.jar /usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/
  2. rm -rf /usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/guava-11.0.2.jar
  3. cp /usr/hive/apache-hive-2.1.1-bin/lib/guava-14.0.1.jar /usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/

 

配置HIVE元数据至MySQL(9 / 9分)

1.slave1作为服务器端需要和Mysql通信,所以服务端需要将Mysql的依赖包放在Hive的lib目录下。
mysql-connector-java是MySQL的JDBC驱动包,用JDBC连接MySQL数据库时必须使用该jar包。

2.配置文件参考:

  1. <configuration>
  2. <!-- Hive产生的元数据存放位置-->
  3. <property>
  4. <name>hive.metastore.warehouse.dir</name>
  5. <value>????</value>
  6. </property>
  7. <!-- 数据库连接driver,即MySQL驱动-->
  8. <property>
  9. <name>javax.jdo.option.ConnectionDriverName</name>
  10. <value>????</value>
  11. </property>
  12. <!-- 数据库连接JDBC的URL地址-->
  13. <property>
  14. <name>javax.jdo.option.ConnectionURL</name>
  15. <value>jdbc:mysql://????:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
  16. </property>
  17. <!-- MySQL数据库用户名-->
  18. <property>
  19. <name>javax.jdo.option.ConnectionUserName</name>
  20. <value>????</value>
  21. </property>
  22. <!-- MySQL数据库密码-->
  23. <property>
  24. <name>javax.jdo.option.ConnectionPassword</name>
  25. <value>????</value>
  26. </property>
  27. </configuration>

考核条件如下:

导入MySQL依赖包

1. 驱动拷贝(依赖包存放于/usr/package/)(2 / 2分)

操作环境: slave1

因为服务端需要和 MySQL通信,所以服务端需要 MySQL的 lib 安装包到 Hive_Home/conf 目录下。
注意:mysql.jar 放在 slave2 中的目录下,需要将其远程复制到 slave1的 hive 的 lib 中。
将jar包传至slave2中,再执行。

scp mysql-connector-java-5.1.47-bin.jar root@slave1:/usr/hive/apache-hive-2.1.1-bin/lib

slave1:hive-site.xml

2. 配置元数据数据存储位置为/user/hive_remote/warehouse(1 / 1分)

操作环境: slave1

3. 配置数据库连接驱动为MySQL(2 / 2分)

操作环境: slave1

4. 配置连接JDBC的URL地址主机名及默认端口号3306,数据库为hive,如不存在自行创建,ssl连接方式为false(2 / 2分)

操作环境: slave1

5. 配置数据库连接用户(1 / 1分)

操作环境: slave1

6. 配置数据库连接密码(1 / 1分)

操作环境: slave1

 编辑hive-site.xml

vim hive-site.xml

 添加以下内容:

  1. <configuration>
  2. <!--Hive产生的元数据存放位置-->
  3. <property>
  4. <name>hive.metastore.warehouse.dir</name>
  5. <value>/user/hive_remote/warehouse</value>
  6. </property>
  7. <!--数据库连接JDBC的URL地址-->
  8. <property>
  9. <name>javax.jdo.option.ConnectionURL</name>
  10. <value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
  11. <description>JDBC connect string for a JDBC metastore</description>
  12. </property>
  13. <!--数据库连接driver,即MySQL驱动-->
  14. <property>
  15. <name>javax.jdo.option.ConnectionDriverName</name>
  16. <value>com.mysql.jdbc.Driver</value>
  17. </property>
  18. <!--MySQL数据库用户名-->
  19. <property>
  20. <name>javax.jdo.option.ConnectionUserName</name>
  21. <value>root</value>
  22. </property>
  23. <!--MySQL数据库密码-->
  24. <property>
  25. <name>javax.jdo.option.ConnectionPassword</name>
  26. <value>123456</value>
  27. </property>
  28. <property>
  29. <name>hive.metastore.schema.verification</name>
  30. <value>false</value>
  31. </property>
  32. <property>
  33. <name>datanucleus.schema.autoCreateALL</name>
  34. <value>true</value>
  35. </property>
  36. </configuration>

 

配置HIVE客户端(3 / 3分)

1.master作为客户端,可进入终端进行操作;
2.关闭本地模式;
3.将hive.metastore.uris指向metastore服务器URL;
4.配置文件参考:

  1. <configuration>
  2. <!-- Hive产生的元数据存放位置-->
  3. <property>
  4. <name>hive.metastore.warehouse.dir</name>
  5. <value>????</value>
  6. </property>
  7. <!--- 使用本地服务连接Hive,默认为true-->
  8. <property>
  9. <name>hive.metastore.local</name>
  10. <value>????</value>
  11. </property>
  12. <!-- 连接服务器-->
  13. <property>
  14. <name>hive.metastore.uris</name>
  15. <value>thrift://????</value>
  16. </property>
  17. </configuration>

考核条件如下:

master:hive-site.xml

1. 配置元数据存储位置为/user/hive_remote/warehouse(1 / 1分)

操作环境: master

2. 关闭本地metastore模式(1 / 1分)

操作环境: master

3. 配置指向metastore服务的主机为slave1,端口为9083(1 / 1分)

操作环境: master

编辑hive-site.xml

 vim hive-site.xml

 

 添加以下内容:

  1. <configuration>
  2. <!--Hive产生的元数据存放位置-->
  3. <property>
  4. <name>hive.metastore.warehouse.dir</name>
  5. <value>/user/hive_remote/warehouse</value>
  6. </property>
  7. <!---使用本地服务连接Hive,默认为true-->
  8. <property>
  9. <name>hive.metastore.local</name>
  10. <value>false</value>
  11. </property>
  12. <!--连接服务器-->
  13. <property>
  14. <name>hive.metastore.uris</name>
  15. <value>thrift://slave1:9083</value>
  16. </property>
  17. </configuration>

启动Hive(5 / 5分)

1.服务器端初始化数据库,并启动metastore服务;
2.客户端开启Hive client,即可根据创建相关数据操作。

考核条件如下:

1. 初始化数据库,启动metastore服务,开启客户端(5 / 5分)

操作环境: slave1、master

每次启动hive前要先启动hadoop,不然就会报错:

启动hadoop(master上执行):

  1. cd /usr/hadoop/hadoop-2.7.3/
  2. sbin/start-all.sh

初始化数据库(slave1上执行):

schematool -dbType mysql -initSchema

 slave1上执行:

  1. cd /usr/hive/apache-hive-2.1.1-bin
  2. bin/hive --service metastore

 

 master上执行:

  1. cd /usr/hive/apache-hive-2.1.1-bin
  2. bin/hive

 

 出现hive>后执行show databases;进行测试

推荐阅读