基于Hadoop(3.1.3)的数据仓库Hive(3.1.2)

本文介绍了在Hadoop 3.1.3环境下安装配置Hive 3.1.2的详细过程,包括Hive作为数据仓库的优势、传统数据库的局限、数据存储模型以及Hive的元数据存储在MySQL中的设置。通过下载、安装、配置环境变量、配置Hive和MySQL,以及解决可能遇到的问题,如Guava版本冲突。此外,文章还涵盖了Hive的基本数据类型、常用HiveQL操作,如数据定义、数据操作和查询,并通过与MapReduce的wordcount实现对比,展示了Hive在数据分析中的便捷性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

在这里插入图片描述

数据仓库

数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策

hive简介

hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析

  • Hive是一个构建于Hadoop顶层的数据仓库工具
  • 支持大规模数据存储、分析,具有良好的可扩展性
  • 某种程度上可以看作是用户编程接口,本身不存储和处理数据
  • 依赖分布式文件系统HDFS存储数据
  • 依赖分布式并行计算模型MapReduce处理数据
  • 定义了简单的类似SQL 的查询语言——HiveQL
  • 用户可以通过编写的HiveQL语句运行MapReduce任务
  • 可以很容易把原来构建在关系数据库上的数据仓库应用程序移植到Hadoop
    平台上
  • 是一个可以提供有效、合理、直观组织和使用数据的分析工具

传统数据库的不足

(1)无法满足快速增长的海量数据存储需求
(2)无法有效处理不同类型的数据(只能支持结构化数据的的存储)
(3)计算和处理能力不足(纵向扩展(通过加cpu,加内存)能力有限,水平扩展能力基本没有,没法通过增加节点的办法来增加处理能力)

Hive具有的特点非常适用于数据仓库

  • 采用批处理方式处理海量数据
    数据仓库存储的是静态数据,对静态数据的分析适合采用批处理
    方式,不需要快速响应给出结果,而且数据本身也不会频繁变化
  • 提供适合数据仓库操作的工具
    Hive本身提供了一系列对数据进行提取、转换、加载(ETL)的
    工具,可以存储、查询和分析存储在Hadoop中的大规模数据

在这里插入图片描述

数据存储模型

hive 实际上并不存储数据,hive 的数据存储在 HDFS 中,并且大部分的查询由 MapReduce 完成。
在这里插入图片描述

hive中包含以下四类数据模型:表(Table)、外部表(External Table)、分区(Partition)、桶(Bucket)。

  • 1 ) hive中的Table和数据库中的Table在概念上是类似的。在hive中每一个Table都有一个相应的目录存储数据。
  • 2)外部表是一个已经存储在HDFS中,并具有一定格式的数据。使用外部表意味着hive表内的数据不在hive的数据仓库内,它会到仓库目录以外的位置访问数据。外部表和普通表的操作不同,创建普通表的操作分为两个步骤,即表的创建步骤和数据装入步骤(可以分开也可以同时完成)。在数据的装入过程中,实际数据会移动到数据表所在的hive数据仓库文件目录中,其后对该数据表的访问将直接访问装入所对应文件目录中的数据。删除表时,该表的元数据和在数据仓库目录下的实际数据将同时删除。
    外部表的创建只有一个步骤,创建表和装人数据同时完成。外部表的实际数据存储在创建语句。IOCATION参数指定的外部HDFS文件路径中,但这个数据并不会移动到hive数据仓库的文件目录中。删除外部表时,仅删除其元数据,保存在外部HDFS文件目录中的数据不会被删除。
  • 3)分区对应于数据库中的分区列的密集索引,但是hive中分区的组织方式和数据库中的很不相同。在hive中,表中的一个分区对应于表下的一个目录,所有的分区的数据都存储在对应的目录中。
  • 4)桶对指定列进行哈希(hash)计算,会根据哈希值切分数据,目的是为了并行,每一个桶对应一个文件。

本次实验环境

java 1.8
Ubuntu18.04
Hadoop 3.1.3

二、下载安装hive

1、下载

下载之前我们要先看对应的版本,打开这个网址查看:http://hive.apache.org/downloads.html
在这里插入图片描述
由于我们之前安装的是Hadoop3.1.3所以这里我们可以下载3.1.2版本:清华镜像源hive
在这里插入图片描述

2、安装

sudo tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /usr/local/ #解压到/usr/local
cd /usr/local/
sudo mv apache-hive-3.1.2-bin hive       # 将文件夹名改为hive
sudo chown -R hadoop:hadoop hive            # 修改文件权限,hadoop是登录的用户名

在这里插入图片描述

要查询特定的用户所属用户组,可以使用groups username

3、配置环境变量

在Hive安装之前,Java,hadoop必须在系统上已经安装。使用下面的命令来验证是否已经安装Java、hadoop:

java –version
hadoop version

又到了熟悉的配置环境变量的环节:
为方便使用,我们把hive命令加入到环境变量中去,使用vim编辑器打开/etc/profile文件:

sudo /etc/profile

修改以下内容:
在该文件添加如下内容:

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

由于之前我们已经配置了java,hadoop,hbase环境变量,那么就会是这样:
在这里插入图片描述
使其生效

source /etc/profile

输入 hive --version有hive的版本显示
在这里插入图片描述

4、配置Hive配置文件

配置文件介绍

用户自定义配置文件:$HIVE_CONF_DIR/hive-site.xml

默认配置文件:$HIVE_CONF_DIR/hive-default.xml

用户自定义配置会覆盖默认配置。

另外,Hive 也会读入 Hadoop 的配置,因为 Hive 是作为 Hadoop 的客户端启动的,Hive 的配置会覆盖 Hadoop 的配置。配置文件的设定对本机启动的所有 Hive 进程都有效。

Hive用于Hadoop环境中,需要修改/usr/local/hive/conf下的hive-site.xml,该文件放置在 $HIVE_HOME/conf目录。下面的命令重定向到Hive config文件夹并重命名模板文件:

cd $HIVE_HOME/conf
mv hive-default.xml.template hive-default.xml

上面命令是将hive-default.xml.template(这是一个配置模板,可以参考里面的信息进行需要的配置)重命名为hive-default.xml;
然后,使用vim编辑器新建一个配置文件hive-site.xml,命令如下:

cd /usr/local/hive/conf
vim hive-site.xml

在hive-site.xml中添加如下配置信息:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
  <property>
    <name</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值