Hive学习笔记:一初识

Hive是什么?

Hive 是建立在 Hadoop   上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载( ETL ),这是一种可以存储、查询和分析存储在 Hadoop   中的大规模数据的机制。 Hive 定义了简单的类 SQL  查询语言,称为 HQL ,它允许熟悉 SQL  的用户查询数据。同时,这个语言也允许熟悉 MapReduce   开发者的开发自定义的 mapper   reducer  来处理内建的 mapper reducer  无法完成的复杂的分析工作(UDF)。
Hive SQL 解析引擎,它将 SQL 语句转译成 M/RJob 然后在 Hadoop 执行。
Hive 的表其实就是 HDFS 的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在 M/RJob 里使用这些数据。
        HIve的表----------HDFS的目录
        HIve的数据--------HDFS的目录下面的(数据)文件
        Hive中行列--------HDFS的目录下面的数据文件的行列

Hive 相当于 hadoop 的客户端工具,部署时不一定放在集群管理节点中,可以放在某个节点上。
Hive强调的地方: 海量数据的存储、加载,海量数据查询,hive不支持事务。

Hive的数据存储

Hive 的数据存储基于 Hadoop HDFS
Hive 没有专门的数据存储格式
存储结构主要包括: 数据库、文件、表、视图、索引
Hive 默认可以直接加载文本文件( TextFile ),还支持 SequenceFile RCFile
创建表时,指定 Hive 数据的列分隔符与行分隔符, Hive 即可解析数据

Hive的体系结构

Hive学习笔记:一初识_第1张图片
用户接口主要有三个:CLI,JDBC/ODBC和 WebUI
CLI,即Shell命令行
JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似
WebGUI是通过浏览器访问 Hive
Hive 将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等
解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行
Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务)

Hive的元数据

metastore是hive元数据的集中存放地。
metastore默认使用内嵌的derby数据库作为存储引擎
Derby引擎的缺点:一次只能打开一个会话
使用MySQL作为外置存储引擎,多用户同时访问



你可能感兴趣的:(hadoop,hive)