Hive特征
Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为HQL。
Hive的设计特点如下:
1)支持索引,加快数据查询。
2)支持不同的存储类型,例如,纯文本文件、HBase中的文件。
3)将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。
4)可以直接使用存储在Hadoop文件系统中的数据。
5)内置大量用户函数UDF来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF函数来完成内置函数无法实现的操作。
6)类SQL的查询方式,将SQL查询转换为MapReduce的Job在Hadoop集群上执行。
Hive系统架构
图1-1显示了Hive的主要组成模块、Hive如何与Hadoop交互工作,以及从外部访问Hive的几种典型方式。
图1-1 Hive的主要组成模块
Hive主要由以下3个模块组成:
1)用户接口模块,含CLI、HWI、JDBC、Thrift Server等,用来实现对Hive的访问。CLI是Hive自带的命令行界面;HWI是Hive的一个简单网页界面;JDBC、ODBC以及Thrift Server可向用户提供进行编程的接口,其中Thrift Server是基于Thrift软件框架开发的,提供Hive的RPC通信接口。
2)驱动模块(Driver),含编译器、优化器、执行器等,负责把HiveQL语句转换成一系列MR作业,所有命令和查询都会进入驱动模块,通过该模块的解析变异,对计算过程进行优化,然后按照指定的步骤执行。
3)元数据存储模块(Metastore),这是一个独立的关系型数据库,通常是与MySQL数据库连接后创建的一个MySQL实例,也可以是Hive自带的Derby数据库实例。此模块主要保存表模式和其他系统元数据,如表的名称、表的列及其属性、表的分区及其属性、表的属性、表中数据所在位置信息等。
喜欢图形界面的用户,可采用几种典型的外部访问工具:Karmasphere、Hue、Qubole等。