数据处理技术-Hive入门

数据仓库——了解Hive必需的预备知识

先来了解下数仓的概念。数据仓库是一个用于存储、分析、报告的数据系统。其目的是构建面向分析的集成化数据环境。
数仓有两个特点:

  1. 数仓不“生产”数据,只是数据的存储仓库。其数据来源于不同外部系统。比如说HDFS,MySQL, SQLServer, Oracle等等。
  2. 数仓不“消费”数据,只是提供数据给各个外部应用使用。

既然已经有数据库存储数据了,为什么还要数仓?
我们可以简单地理解这个问题。假设当前一个文件夹中,包含了一个文档集合、一个图片集合、一个音频集合。我们当然可以分别通过文档编辑器、图片编辑器、音频编辑器打开它们,但是每打开一个都要换应用很麻烦。而且,想要完成整体的数据分析也很不方便,比如文档中记录了游玩的心情,图片中记录了游玩的景色与地点,想要结合文档与图片来“分析”发生了什么,一个应用是解决不了的。数据仓库就是将这些文档、图片、音频(多个不同来源的数据)集成在一起,因此可以提供一个全局的、统一的视图进行分析。
这里不得不提到一点,关系型数据库也可以进行数据分析,但是它们的设计主要是为了支持高效的事务处理(OLTP),而不是大规模的复杂分析(OLAP)。在处理大型数据集和复杂查询时,关系型数据库的性能可能会显著下降,因为其通常优化的是事务处理性能,而不是分析查询性能。
当然上面说的理由还不够全面,比如说数据仓库可以针对长时间、复杂的分析查询进行优化,支持多维分析和复杂的报告生成等等。因为不是本篇博客的重点,所以不再更多赘述。

Hive概述——What is it?

首先考虑一个问题:当大量数据都存放在HDFS上,如何快速对HDFS上的文件进行统计分析操作?
肯定能想到的是,通过MapReduce直接对HDFS文件进行操作。但是要完成这个工作,就必须先学Java,再学MapReduce才可以。这对不会Java的数据分析员来说非常不友好。
相比于Java的语法,SQL语法简单很多,并且大多数玩数据的多多少少都必须得会点儿数据库的知识,因此使用SQL来对HDFS上的文件进行统计分析操作就成了大势所趋的事情。
(*SQL,Structured Query Language结构化查询语言,专门用于管理和操作关系型数据库的数据操作语言。)

不幸的是,HDFS没有模式的概念,其存储的数据只是一个纯文本文件,也就说,缺少关系型数据库必需的数据组织方式。(模式,Schema,关系型数据库事先定义好的结构与数据类型,相当于表定义的字段、字段名称等)
HDFS数据缺少
模式*,就没办法使用SQL进行查询。在这个背景下,Hive诞生了。

Hive是建立在Hadoop之上的开源数据仓库系统。可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,并且基于表提供了一种类似SQL的查询模型,称为Hive查询语言HQL,用于访问和分析存储在Hadoop文件中的大型数据集。

用户写的HQL被Hive转换为MapReduce程序,然后提交到Hadoop集群执行。同时对于熟悉MapReduce的使用者而言,也可以自定义Mapper和Reducer来处理内嵌Mapper和Reducer无法完成的复杂分析任务。

Hive利用HDFS存储数据,利用MapReduce查询分析数据

元数据

Hive的一个职责就是将HDFS中的纯文本数据转化为一张表,因此其需要完成文件与表之间的对应关系记录。这种关系记录,也就是一个映射信息,被称之为元数据信息。元数据,metadata,用来描述数据的数据。举个例子来说,一个表当中有多个字段,而文件当中的信息是按列来分的,我们定义好表的字段信息之后,还要记录下来文件的哪一列对应的是该字段。这个记录下来的对应关系,就是所说的元数据。

具体来看,要记录的元数据信息包括:

  1. 表对应着那个文件(位置信息)
  2. 表的列对应着文件哪一个字段(顺序信息)
  3. 文件字段之间的分隔符是什么

Hive特点

  1. 数据存储位置在HDFS/HBase
  2. 数据格式是用户定义的——低约束性
  3. 执行延迟较高——对于最小粒度的任务,Hive查询的反应时间约为毫秒级
  4. 可扩展性较高
  5. 数据规模往往很大(TB以上)
  6. 数据检查是读时模式

Hive体系结构

  1. 用户接口
    主要有命令行Command-line interface(CLI), WebUI界面,通过JDBC/ODBC访问的Thrift。主要功能就是提供不同的方式让用户使用Hive。
  2. 元数据存储
    Hive内置Derby数据库,可以用来存储元数据,但是当Hive重启之后所有的元数据都会丢失。也可以使用其他的自定义数据库,需要修改相应的配置项。
  3. Driver驱动程序
    包括语法解析器、计划编辑器、优化器、执行器。将HiveQL语言编译成中间表示。
  4. 执行引擎
    默认情况下,使用MapReduce执行引擎。但是MR执行速度慢,因此还支持Tez、Spark3执行引擎。执行引擎完成具体的执行操作,包括MapReduce执行、HDFS操作、元数据操作等。
  5. 资源管理Yarn
  6. 数据存储Hadoop HDFS或HBase

Hive工作原理

在这里插入图片描述

Hive安装与配置

三种安装模式:内嵌模式,本地模式,远程模式。搞清楚这三种模式的区别,只需要两个问题。

  1. 元数据服务是否需要单独配置、单独启动?
  2. 元数据是存储在Derby中的还是第三方数据库中的?
    如果元数据需要单独启动,那么这是远程模式;如果元数据存储在Derby当中,那么这是内嵌模式。

内嵌模式只适用于简单的测试,一个内嵌的Derby数据库每次只允许一个会话连接,不支持多会话连接。本地模式能够支持多会会话和多用户连接。远程模式可以控制数据库的连接等。

远程模式的配置需要修改的文件

  • hive-env.sh:配置上hadoop的位置目录
  • hive-site.xml:配置元数据存储信息,配置Mysql的位置以及相关的mysql用户名密码信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ayu阿予

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值