8.2 Hive简介

Hive 利用了HDFS的分布式文件系统存储数据,利用MapReduce分布式并行计算模型处理数据.
提供HiveQL运行具体的MapReduce任务
两个特性:
(1). 采用批处理的方式处理海量数据。数据仓库存储的是静态数据,适合采用批处理的方式,不需要快速响应;HiveQL转换为MapReduce任务;

微信截图_20200213130024.png

Pig和Hive:

Pig 轻量级分析工具,实时的交互性的分析,而不是大规模数据的批处理。
Pig 主要用于数据仓库的ETL环节,从数据源抽取(Extract)、转换(Transform)、加载(Load)到数据仓库中去.
Hive就对数据仓库中的数据进行批处理。

HBase和Hive

HBase和Hive互补

HBase 支持实时交互性查询,弥补了HDFS的缺陷(允许追加不允许修改,不支持随机读写)
而Hive的延迟高,如果需要实时查询分析,可用通过HBase实现.

Hive 和传统数据库

微信截图_20200213131520.png

HiveHA(High availabel) Hive 高可用性解决方案
微信截图_20200213132512.png

8.3 SQL转为MapReduce作业的工作原理

微信截图_20200213150540.png

  • 当启动MapReduce任务时,Hive本身是不会生成MapReduce程序的
  • 需要通过一个"Job执行计划"的xml文件驱动执行内置的、原生的Mapper和Reducer模块
  • Hive通过通信来初始化Map和Reduce任务,不必直接部署在JobTracker所在的管理节点上执行

表和外部表

Hive中表与外部表的区别:
1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!而表则不一样;
2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!
那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!


猛男落泪为offer
22 声望5 粉丝

半路出家大数据