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 LLAP,Apache YARN和Apache Slider进行亚秒级查询检索。
4.Hive如何与Hadoop交互工作
hive的用户接口有三个:CLI,Client,WebUI
最常用的就是CLI,也就是命令行界面。所有命令和查询都会进入到Driver(驱动模块),通过该模块对命令进行解析编译,对需求的计算进行优化,然后按照指定的步骤执行(通常是指定多个MR任务(job)来执行)。当需要启动MR任务(job)时,Hive本身是不会生成Java MapReduce算法程序的。相反,Hive是通过一个表示“Job执行计划”的XML文件驱动执行内置的、原生的Mapper和Reducer模块。换句话说,这些通用的模块函数类似于微型语言翻译程序,而这个驱动计算的“语言”是以XML形式编码的。
Thrift客户端:上图中是将JDBC/ODBC客户端也是建立在Thrift接口上来调用Hive接口的,Thrift服务是Facebook开发的一个软件框架,用来进行可扩展且跨语言的服务开发。Hive集成了该服务,能让不同的编程语言调用Hive接口。
Hive通过Job Tracker通信来初始化MapReduce任务(job),而不必部署在Job Tracker 的所在的管理节点上执行。通常,要处理的数据文件是存储在HDFS中的,而HDFS是由NameNode进行管理的。
Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
5.一句话总结Hive的执行流程
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务运行。