首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hadoop进级教程之-Hive设计原理和体系结构

Hive产生背景

Hive 的诞生源于 Facebook 的日志分析需求。面对海量的结构化数据, Hive 能够以较低的成本完成以往需要大规模数据库才能完成的任务,并且学习门槛相对较低,应用开发灵活且高效。后来 Hive 开源给了 Apache,成为 Apache 的一个顶级项目,至此在大数据应用方面得到了快速的发展和普及。

Hive概述

Hive 是构建在 Hadoop 之上的一个开源的数据仓库分析系统,主要用于存储和处理海量结构化数据。这些海量数据一般存储在 Hadoop 分布式文件系统之上,Hive 可以将其上的数据文件映射为一张数据库表,赋予数据一种表结构。而且 Hive 还提供了丰富的类 SQL(这套 SQL 又称 Hive QL,简称HQL)查询方式来分析存储在 Hadoop 分布式文件系统中的数据。

Hive与Hadoop的关系

Hive构建在Hadoop之上。

所有的数据都存储在Hadoop分布式文件系统中。

HQL 中对查询语句的解释、优化、生成查询计划是由 Hive 完成的。查询计划被转化为 MapReduce 任务,在 Hadoop 集群上执行(有些查询没有执行 MapReduce 任务,比如:select * from table)。

Hive设计原理

Hive 是一种底层封装了Hadoop 的数据仓库处理工具,使用类SQL 的HiveQL 语言实现数据查询,所有Hive 的数据都存储在 Hadoop 兼容的文件系统中,比如 HDFS。Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到 HDFS 中 Hive 设定的目录下,因此,Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。

Hive 的设计特点如下

支持索引,加快数据查询。

不同的存储类型,例如,纯文本文件、HBase 中的文件。

将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。

可以直接使用存储在Hadoop 文件系统中的数据。

内置大量用户自定义UDF来操作时间、字符串和其他数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。

类SQL 的查询方式,将类SQL 查询转换为MapReduce 的job 在Hadoop集群上执行。

Hive体系结构

Hive运行机制

Hive的运行机制包含以下几个步骤

(1)用户通过用户接口连接Hive,发布Hive QL。

(2)Hive解析查询并制定查询计划。

(3)Hive将查询转换成MapReduce作业。

(4)Hive在Hadoop上执行MapReduce作业。

Hive编译器的运行机制

Hive的优点

1)Hive适合大数据的批量处理,解决了传统关系型数据库在大数据处理上的瓶颈。

2)Hive构建在Hadoop之上,充分利用了集群的存储资源、计算资源,最终实现并行计算。

3)Hive学习使用成本低,Hive支持标准的SQL语法,这样就免去了编写MapReduce程序的过程,减少了开发成本。

4)具有良好的扩展性,且能够实现和其他组件的结合使用。

Hive的缺点

1)HQL 的表达能力依然有限,不支持迭代计算,有些复杂的运算用 HQL 不易表达,还需要单独编写MapReduce来实现。

2)Hive的运行效率低、延迟高,Hive是转换成MapReduce任务来进行数据的分析的,MapReduce是离线计算,所以Hive的运行效率也是很低的,而且是高延迟的。

3)Hive的调优比较困难,由于Hive是构建在Hadoop之上的,Hive的调优还要考虑MapReduce层面,所以Hive的整体调优会比较困难。

Hive在大数据仓库中的应用

数据仓库和数据库的联系和区别

数据库是面向事务设计的,数据仓库是面向主题设计的。

数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。

数据库在设计上是尽量避免冗余,数据仓库在设计上是有意引入冗余。

数据库是为捕获数据而设计的,数据仓库是为分析数据而设计的。

传统数据仓库一般基于MySQL或者Oracle技术,那么大数据仓库需要基于什么技术呢?Hive是基于hadoop的一个数据仓库重要工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能,本质是将SQL转换为MapReduce程序。

Hive是最适合作为大数据仓库的工具,因为Hive底层数据存储使用HDFS,所以基于Hive可以维护海量数据。因为Hive SQL底层会转换为MapReduce程序,那么基于Hive可以对数据进行分析挖掘,然后提供决策和报告等。

下一篇文件我会针对Hive的实际操作进行详细论述

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OlyWu6wLpIGq95SzarDp_pQw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券