一、hive是什么
1>Hive是建立在Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ET L),这是一种可以存储、查询和分析存储在Hadoop 中的大规模数据的机制。Hive定义了简单的类SQL 查询 语言,称为QL,它允许熟悉SQL 的用户查询数据。同时,这个语言也允许熟悉MapReduce 开发者的开发自 定义的mapper 和reducer 来处理内建的mapper和reducer 无法完成的复杂的分析工作。
2>Hive是SQL解析引擎,它将SQL语句转译成M/RJob然后在Hadoop执行。Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/RJob里使用这些数据。
二、Hive的系统架构
•用户接口,包括CLI,JDBC/ODBC,WebUI
•元数据存储,通常是存储在关系数据库如mysql, derby中
•解释器、编译器、优化器、执行器
•Hadoop:用HDFS进行存储,利用MapReduce进行计算
用户接口主要有三个:CLI,JDBC/ODBC和WebUI
1.CLI,即Shell命令行
2.JDBC/ODBC 是Hive 的Java,与使用传统数据库JDBC的方式类似
3.WebGUI是通过浏览器访问Hive
Hive 将元数据存储在数据库中(metastore),目前只支持mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等
解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在HDFS 中,并在随后有MapReduce 调用执行
Hive 的数据存储在HDFS 中,大部分的查询由MapReduce 完成(包含* 的查询,比如 select * from table 不会生成MapRedcue 任务)