一、Hive的功能
Hive是基于Hadoop的一个外围数据仓库分析组件,可以把Hive理解为一个数据仓库,但这和传统的数据库是有差别的。
传统数据库是面向业务存储,比如 OA、ERP 等系统使用的数据库,而数据仓库是为分析数据而设计的。同时,数据仓库是在数据量巨大的情况下,为了进一步挖掘数据资源、为了企业决策需要而产生的,它不是所谓的 “大型数据库”。
Hive 通过将结构化的数据文件映射到一张数据库表上,然后通过执行 SQL 语句实现查询功能。它将 SQL 语句转换为 Hadoop 上的 MapReduce 任务提交运行,这种类 SQL 语言也称为 HQL,通过这种方法,就可以使不熟悉 MapReduce 程序的用户可以很方便地利用 SQL 语句实现大数据的查询、分析和汇总。
因此,可以将 Hive 理解为将 HQL 语句转换为 MR 的语言翻译器。它的数据分析是基于 MapReduce 的,而数据存储使用的是 HDFS。Hive 适合对离线数据(批数据)分析处理。
二、Hive 架构与应用场景
1、Hive架构
下图展示了Hive的运行和实现架构:
由图可知,Hive 主要由 Metastore、DB 和 Hiveserver2、Hive CLI 几部分组成。其中,Metastore 是 Hive 的核心,所有外围客户端比如 Beeline、Hue、Impala 最终都会连接到 Metastore,而 Metastore 再去访问 DB。
要访问 Hive,可以通过 Hive CLI(Command Line Interface)方式、程序连接方式 (JDBC/ODBC)、Web UI 方式进行。例如,你登录 Hadoop 外围机后,可以通过执行 hive 命令(hive CLI)去访问 Hive;如果你开发了一个程序,想让程序自动连接 Hive 实现查询分析,那么你就需要通过 Hiveserver2 方式连接到 Hive 上来;而如果你要给客户提供一个傻瓜式的查