数据仓库的概念:一个面向主题的、集成的、相对稳定的、可反映历史变化的数据集合,用于支持管理决策。
Hive可以理解为是一种用户编程接口,它本身并不直接存储数据也不处理数据,而是通过接口的封装和调用,通过Hadoop的组件进行相关操作的。通过Hive可以很方便的将构建在关系数据库上的数据仓库称赞到Hadoop上,并且通过HiveSQL运行MapReduce进行分布式查询计算。
Hive的特点适合于建立数据仓库:
1.采用批处理方式处理海量数据;
2.提供适合数据仓库操作的工具(ETL操作等);
在建设数据仓库时,可以使用pig进行ETL操作,将数据加载到数据仓库中,而使用Hive进行海量的数据批处理和分析工作。
Hive在进行数据插入时,只支持批量导入,不支持数据更新,支持索引和分区,执行延迟比较高(一般是分钟级的呼应),扩展性好。
Hive在架构层面分为三个模块:
用户接口模块:包括CLI、HWI(Web接口)、JDBC、ODBC、Thift Server(RPC调用)。通过用户接口由用户对Hive进行访问;
驱动模块:编译器、优化器、执行器等,负责把HiveSQL转换成MapReduce作业;
元数据存储模块:独立的关系数据库,存储元数据(Derby或MySQL)。
Hive将SQL转换为MR作业的过程:
1. Parser-由Hive驱动模块的编译器将SQL语句进行词法和语法解析ÿ