8.2 Hive简介
Hive 利用了HDFS的分布式文件系统存储数据,利用MapReduce分布式并行计算模型处理数据.
提供HiveQL运行具体的MapReduce任务
两个特性:
(1). 采用批处理的方式处理海量数据。数据仓库存储的是静态数据,适合采用批处理的方式,不需要快速响应;HiveQL转换为MapReduce任务;
Pig和Hive:
Pig 轻量级分析工具,实时的交互性的分析,而不是大规模数据的批处理。
Pig 主要用于数据仓库的ETL环节,从数据源抽取(Extract)、转换(Transform)、加载(Load)到数据仓库中去.
Hive就对数据仓库中的数据进行批处理。
HBase和Hive
HBase和Hive互补
HBase 支持实时交互性查询,弥补了HDFS的缺陷(允许追加不允许修改,不支持随机读写)
而Hive的延迟高,如果需要实时查询分析,可用通过HBase实现.
Hive 和传统数据库
HiveHA(High availabel) Hive 高可用性解决方案
8.3 SQL转为MapReduce作业的工作原理
- 当启动MapReduce任务时,Hive本身是不会生成MapReduce程序的
- 需要通过一个"Job执行计划"的xml文件驱动执行内置的、原生的Mapper和Reducer模块
- Hive通过通信来初始化Map和Reduce任务,不必直接部署在JobTracker所在的管理节点上执行
表和外部表
Hive中表与外部表的区别:
1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!而表则不一样;
2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!
那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。