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

搭建数据仓库和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环境搭建

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册