一、Hive的概念

(什么是元数据?

元数据Metadata),又称中介数据中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据Metadata),又称中介数据中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能

基于Hadoop的数据仓库工具,将HDFS中的结构化数据映射为数据表,并实现将类SQL脚本转换为MapReduce作业,从而实现用户只需像传统关系型数据库提供SQL语句,并能实现对Hadoop数据的分析和处理,门槛低,非常适合传统的基于关系型数据库的数据分析向基于Hadoop的分析进行转变。因此,Hive是Hadoop生态圈非常重要的一个工具。

       安装配置Apache Hive,最直接的方式,便是阅读 Apache Hive官网的说明文档https://hive.apache.org),能了解到很多有用的信息。Apache Hive 要求JDK 1.7及以上,Hadoop 2.x(从Hive 2.0.0开始便不再支持Hadoop 1.x),Hive 可部署于Linux、Mac、Windows环境。

Hive的元数据默认保存在HDFS hive 的元数据的作用是什么?_SQL

 

Hive的元数据默认保存在HDFS hive 的元数据的作用是什么?_Hive_02

数据仓库是面向主题的(分类存储),数据仓库的数据是集成的,数据仓库的数据是不可更新的(但可以将原始数据清洗,不断增加,不会修改)。

Hive是基于hadoop的一个管理数据仓库的工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询。本质是将HQL(Hive SQL)化成MapReduce程序,HIve是建立在hadoop上的 ,管理数据的。

Hive的元数据默认保存在HDFS hive 的元数据的作用是什么?_SQL_03

Hive的元数据默认保存在HDFS hive 的元数据的作用是什么?_Hive_04

 

Hive类似于蜂巢一样,数据按类别进行统计,很少修改,主要写入后用于查询。

二、Hive优缺点

2.1优点

Hive的元数据默认保存在HDFS hive 的元数据的作用是什么?_数据_05

2.2缺点

Hive的元数据默认保存在HDFS hive 的元数据的作用是什么?_SQL_06

三、Hive架构原理 (面试)

Hive的元数据默认保存在HDFS hive 的元数据的作用是什么?_Hive_07

{CLI一般指命令行界面。命令行界面(英语:command-line interface,缩写:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。}

如图中所示,Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。

1)用户接口:Client

CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)

2)元数据:Metastore

元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;

默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore

3)Hadoop

使用HDFS进行存储,使用MapReduce进行计算。

4)驱动器:Driver

(1)解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。

(2)编译器(Physical Plan):将AST编译生成逻辑执行计划。

(3)优化器(Query Optimizer):对逻辑执行计划进行优化。

(4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/Spark。

四、区分Hive与数据库

Hive除了和数据库一样提供类SQL查询语言外,无其他相同点,且Hive只有查询功能,而数据库则可以增删改查。

Hive的元数据默认保存在HDFS hive 的元数据的作用是什么?_SQL_08