互联网技术 / 互联网资讯 · 2023年12月24日 0

搭建数据仓库和Hive环境

上次介绍了HDFS,本来想进入MapReduce,但感觉MapReduce基本废弃,于是直接进入了Hive中来。

数据仓库

数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库顾名思义,是一个很大的数据存储集合,出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。

它为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。

数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。

搭建数据仓库和Hive环境

数据库和数据仓库区别

数据库是面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。

数据仓库一般针对某些主题的历史数据进行分析,支持管理决策,又被称为联机分析处理 OLAP(On-Line Analytical Processing)。

比如,支付宝年度账单其本质是基于数据仓库进行数据可视化而成。

搭建数据仓库和Hive环境

数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的数据仓库分层

按照数据流入流出的过程,数据仓库架构可分为三层——源数据(ODS)、数据仓库(DW)、数据应用(app)。

搭建数据仓库和Hive环境

Hive

Hive是一个构建在 Hadoop上的数据仓库框架。最初,Hive是由Facebook开发,后来移交由 Apache软件基金会开发,并作为一个 Apache开源项目。

 

搭建数据仓库和Hive环境

Hive支持MapReduce、Tez、Spark等分布式计算引擎。

Hive环境搭建

在Hive环境搭建无需配置集群,Hive的安装其实有两部分组成,一个是Server端、一个是客户端,所谓服务端其实就是Hive管理Meta的那个Hive,服务端可以装在任何节点上,可以是NameNode上也可以是DataNode的任意一个节点上。

Hive的客户端界面工具早期选择SQuirrel SQL client,但最近我喜欢上了Apache Zeppelin,Apache Zeppelin是一款基于Web的NoteBook,其实和Jupyter Notebook没有什么两样。

在 Hive环境搭建,需要搭建MySQL,这里选择节点node02进行MySQL环境搭建。

下面开始在CentOS系统中安装Hive。为了兼顾Hadoop3.1.4版本,我们选择安装Hive3.1.2版本。Hive下载官方:http://www.Apache.org/dyn/closer.cgi/Hive/

搭建数据仓库和Hive环境

[hadoop@node02 module]$ ls Apache-Hive-3.1.2-Bin.tar.gz hadoop MySQL [hadoop@node02 module]$ tar -zxvf Apache-Hive-3.1.2-Bin.tar.gz [hadoop@node02 module]$ mv Apache-Hive-3.1.2-Bin Hive [hadoop@node02 module]$ ls Apache-Hive-3.1.2-Bin.tar.gz hadoop Hive MySQL [hadoop@node02 conf]$ mv Hive-env.sh.template Hive-env.sh [hadoop@node02 conf]$ vi Hive-env.sh

搭建数据仓库和Hive环境

为了使用Java连接MySQL,需要下载MySQL驱动,下载地址:https://Maven.ITyuan.coM/Maven2/MySQL/MySQL-connecTor-java/5.1.33。

下载完成后并放在lib文件夹中,并通过Hive初始化MySQL数据库。

[hadoop@node02 lib]$ pwd /home/hadoop/Module/Hive/lib [hadoop@node02 lib]$ wget https://Repo1.Maven.org/Maven2/MySQL/MySQL-connecTor-java/5.1.33/MySQL-connecTor-java-5.1.33.jar [hadoop@node02 lib]$ schemaTool -dbType MySQL -initSchema

在Hive初始化MySQL数据库,容易遇到两个比较常见的bug:

第一个Hive初始化MySQL数据库:java.lang.NoSuchmethodError: com.Google.common.base.Preconditions.checkArgument

错误原因:系统找不到这个类所在的jar包或者jar包的版本不一样系统不知道使用哪个。Hive启动报错的原因是后者

解决办法:com.Google.common.base.Preconditions.checkArgument这个类所在的jar包为:guava.jar hadoop-3.2.1(路径:hadoop/share/hadoop/common/lib)中该jar包为 guava-27.0-jre.jar;而Hive-3.1.2(路径:Hive/lib)中该jar包为guava-19.0.1.jar 将jar包变成一致的版本:删除Hive中低版本jar包,将hadoop中高版本的复制到Hive的lib中。

第二个Hive初始化MySQL数据库:Exception in thread “Main” java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8 at

报错原因:在本身的Hive-site.xml配置文件中,3215行(见报错记录第二行)有特殊字符

解决办法:进入Hive-site.xml文件,跳转到对应行,删除里面的特殊字符即可。

如果报Unknown database ‘Hive’,建议直接在MySQL中创建Hive数据库。

最终Hive成功初始化MySQL数据库如下图所示:

搭建数据仓库和Hive环境

查看Hive数据库,就会看见对应初始化的表生成。

搭建数据仓库和Hive环境

在输入Hive,即可进入Hive命令行,说明Hive搭建成功。

搭建数据仓库和Hive环境