系列文章目录
目录
构建数据仓库赛题解析
前言
根据“红亚杯”-大数据环境搭建与数据采集技能线上专题赛以及鈴音.博主文章结合整理,附上资料链接。
在此鸣谢
资料链接
链接:https://pan.baidu.com/s/1ssv79w85JKAF7wjPBd-Eyw
提取码:vd1a
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
rpm -qa|grep mariadb
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
安装MySQL
mkdir -p /usr/mysql
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 服务端:
grep "temporary password" /var/log/mysqld.log
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运行环境
# 配置Hadoop安装路径
export HADOOP_HOME=????
# 配置Hive配置文件存放路径为conf
export HIVE_CONF_DIR=????
# 配置Hive运行资源库路径为lib
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
添加以下内容:
#hive
export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin
生效环境变量:
source /etc/profile
传到slave1并使其生效:
3. 设置HIVE运行环境(2.00 / 2分)
操作环境: master、slave1
在master,slave1上,修改 hive-env.sh 中 HADOOP_HOME 环境变量。
cd /usr/hive/apache-hive-2.1.1-bin/conf
cp -p hive-env.sh.template hive-env.sh
vim hive-env.sh
添加以下内容:
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export HIVE_CONF_DIR=/usr/hive/apache-hive-2.1.1-bin/conf
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上执行
cp /usr/hive/apache-hive-2.1.1-bin/lib/jline-2.12.jar /usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/
rm -rf /usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/guava-11.0.2.jar
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.配置文件参考:
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>????</value>
</property>
<!-- 数据库连接driver,即MySQL驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>????</value>
</property>
<!-- 数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://????:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<!-- MySQL数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>????</value>
</property>
<!-- MySQL数据库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>????</value>
</property>
</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
添加以下内容:
<configuration>
<!--Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!--数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!--数据库连接driver,即MySQL驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--MySQL数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--MySQL数据库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.schema.autoCreateALL</name>
<value>true</value>
</property>
</configuration>
配置HIVE客户端(3 / 3分)
1.master作为客户端,可进入终端进行操作;
2.关闭本地模式;
3.将hive.metastore.uris指向metastore服务器URL;
4.配置文件参考:
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>????</value>
</property>
<!--- 使用本地服务连接Hive,默认为true-->
<property>
<name>hive.metastore.local</name>
<value>????</value>
</property>
<!-- 连接服务器-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://????</value>
</property>
</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
添加以下内容:
<configuration>
<!--Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!---使用本地服务连接Hive,默认为true-->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<!--连接服务器-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://slave1:9083</value>
</property>
</configuration>
启动Hive(5 / 5分)
1.服务器端初始化数据库,并启动metastore服务;
2.客户端开启Hive client,即可根据创建相关数据操作。
考核条件如下:
1. 初始化数据库,启动metastore服务,开启客户端(5 / 5分)
操作环境: slave1、master
每次启动hive前要先启动hadoop,不然就会报错:
启动hadoop(master上执行):
cd /usr/hadoop/hadoop-2.7.3/
sbin/start-all.sh
初始化数据库(slave1上执行):
schematool -dbType mysql -initSchema
slave1上执行:
cd /usr/hive/apache-hive-2.1.1-bin
bin/hive --service metastore
master上执行:
cd /usr/hive/apache-hive-2.1.1-bin
bin/hive
出现hive>后执行show databases;进行测试