一、Hive简介
1.1 什么是Hive
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
本质是将SQL转化为MapReduce程序。
主要用来做离线数据分析,比直接用MapReduce开发效率更高。
1.2 为什么用Hive
直接使用Hadoop MapReduce的学习成本太高。MapReduce实现复杂查询逻辑开发难度太大。使用Hive操作接口类SQL语法,提供快速开发能力,避免了写MapReduce,减少开发人员学习成本,功能扩展很方便。
二、Hive架构
1.1 Hive组件
用户接口: 包括CLI、JDBC/ODBC、WebGUI。其中CLI为shell命令行;JDBC/ODBC是Hive的Java实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。
元数据存储:通常存储在关系数据库如MySQL/Derby中。hive将元数据存储在数据库中。hive中的元数据包括表的名字,表的列和分区及属性,表的属性(是否为外部表),表的数据所在目录等。
解释器、编译器、优化器、执行器:完成HQL查询语句从语法分析、词法分析、编译、优化及查询激活的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。
1.2 Hive架构
2.3 Hive与Hadoop的关系
Hive利用HDFS存储数据,利用MapReduce查询分析数据。是一款基于Hadoop的数据仓库工具。
三、Hive与传统数据库对比
Hive是数据仓库工具,是面向分析的,不同于传统数据库。Hive用于海量数据的离线数据分析。hive具有sql数据库的外表,但是应用场景不同。