数据仓库搭建之数据仓库环境准备
1.Hive安装部署
(1)我们首先需要将apache-hive-3.1.2-bin.tar.gz上传到linux的**/opt/software**目录下
(2)解压apache-hive-3.1.2-bin.tar.gz到**/opt/module/**目录下面
[root@hadoop102 software]$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/
(3)修改apache-hive-3.1.2-bin.tar.gz的名称为hive
[root@hadoop102 software]$ mv /opt/module/apache-hive-3.1.2-bin/ /opt/module/hive
(4)修改/etc/profile.d/my_env.sh,添加环境变量
[root@hadoop102 software]$ sudo vim /etc/profile.d/my_env.sh
具体添加的内容如下所示:
#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
使用source /etc/profile.d/my_env.sh,使环境变量生效
[root@hadoop102 software]$ source /etc/profile.d/my_env.sh
(5)解决日志Jar包冲突,进入/opt/module/hive/lib目录
[root@hadoop102 lib]$ mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak
2.Hive元数据配置到Mysql
2.1为什么使用Mysql作为元数据库而不使用Derby呢?
Hive默认的元数据库使Derby。Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在应用程序中使用。所以hive采用了Derby作为一个内嵌的元数据库,可以完成hive安装的简单测试。
hive安装完成之后,就可以在hive shell中执行一些基本的操作,创建表、查询等等。但是会有一个较为明显的问题:
当在某个目录下启动终端,进入hive shell时,hive默认会在当前目录下生成 一个 derby 文件 和 一个 metastore_db 目录 ,这两个文件主要保存刚刚在shell中操作的一些sql的结果,比如新建的表、添加的分区等等
这种存储方式的带来 弊端
1.在同一个目录下同时只能有一个hive客户端能使用数据库
2. 切换目录启动新的shell,无法查看之前创建的表,不能实现表数据的共享
由于使用默认的元数据库有些弊端,所以采用mysql保存hive元数据解决上面的问题。hive所有的元数据都保存在同一个库里,这样不同开发者创建的表可以实现共享。
2.2Hive元数据配置到Mysql
(1)首先,我们需要拷贝Mysql的JDBC驱动到Hive的lib目录下
[root@hadoop102 lib]$ cp /opt/software/mysql-connector-java-5.1.27.jar /opt/module/hive/lib/
(2)配置MySQL作为元数据存储。我们在/opt/module/hive/conf目录下新建hive-site.xml文件
[root@hadoop102 conf]$ vim hive-site.xml
我们向hive-site.xml中添加如下内容:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>