Hive简介

1.什么是Hive

Apache Hive™数据仓库软件有助于使用SQL读取,写入和管理驻留在分布式存储中的大型数据集可以将结构投影到已存储的数据上。 提供命令行工具和JDBC驱动程序,用于将用户连接到Hive

2.为什么会引入Hive

java编程者对hdfs的数据进行MapReduce操作

3.Hive在Hadoop生态系统中有什么功能

(1)可通过SQL轻松访问数据的工具,从而实现数据仓库任务,如提取/转换/加载(ETL),报告和数据分析。

(2)一种对各种数据格式施加结构的机制

(3)访问直接存储在Apache HDFS™或其他数据存储系统(如Apache HBase™)中的文件

(4)通过Apache Tez™,Apache Spark™或MapReduce查询执行情况

(5)程序语言与HPL-SQL

(6)通过Hive LLAPApache YARNApache Slider进行亚秒级查询检索。

4.Hive如何与Hadoop交互工作

Hive简介

hive的用户接口有三个:CLI,ClientWebUI

最常用的就是CLI,也就是命令行界面。所有命令和查询都会进入到Driver(驱动模块),通过该模块对命令进行解析编译,对需求的计算进行优化,然后按照指定的步骤执行(通常是指定多个MR任务(job)来执行)。当需要启动MR任务(job)时,Hive本身是不会生成Java MapReduce算法程序的。相反,Hive是通过一个表示“Job执行计划”的XML文件驱动执行内置的、原生的MapperReducer模块。换句话说,这些通用的模块函数类似于微型语言翻译程序,而这个驱动计算的“语言”是以XML形式编码的。

Thrift客户端:上图中是将JDBC/ODBC客户端也是建立在Thrift接口上来调用Hive接口的,Thrift服务是Facebook开发的一个软件框架,用来进行可扩展且跨语言的服务开发。Hive集成了该服务,能让不同的编程语言调用Hive接口。

Hive通过Job Tracker通信来初始化MapReduce任务(job,而不必部署在Job Tracker 的所在的管理节点上执行。通常,要处理的数据文件是存储在HDFS中的,而HDFS是由NameNode进行管理的。

Hive将元数据存储在数据库中,如mysqlderbyHive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

5.一句话总结Hive的执行流程

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务运行。