【Hive】位于Hadoop顶层的数据仓库——Hive知识点总结(图解)

content

  1. Hive简介
  2. Hive工作原理
  3. Hive系统架构
  4. Hive HA
  5. Hive编程

 
 
 

Hive简介

初见

  • Hive是一个构建于Hadoop顶层的数据仓库工具
  • 某种程度上的用户编程接口——因为Hive本身不存储和处理数据
  • Hive依赖分布式文件系统HDFS存储数据
  • Hive依赖分布式并行计算模型MapReduce处理数据
  • 定义了简单的类似SQL的查询语言——HiveSQL
  • 需要把HiveQL语句转换成MapReduce任务运行
  • Hive的特点非常适用于数据仓库

特点

  1. 采用批处理方式处理海量数据:仓库存储的多是静态数据(不会频繁变化+不需要快速响应),对静态数据的分析非常适合采用批处理方式
  2. 提供适合数据仓库操作的工具:Hive本身提供了一系列对数据进行ETL(提取+转换+加载)的工具,能够简单易用的操作、分析Hadoop中的大规模数据

补充

  • Hive提供非实时的分析 + Hbase提供实时的访问
  • 某些场景下Pig可作为Hive的替代工具

部署

在这里插入图片描述

 
 
 

Hive工作原理

SQL语句转化为MapReduce作业的基本原理

以join为例
在这里插入图片描述

以group by为例

在这里插入图片描述
 
SQL语句转化为MapReduce作业的基本过程

  1. Hive驱动中的编译器(compiler)将SQL抽象为语法树
  2. 语法树 → 查询块
  3. 查询块 → 逻辑查询计划
  4. 重写逻辑查询计划
  5. 逻辑查询计划 → 物理查询计划(真正的MapReduce任务生成!)
  6. 优化物理查询计划
  7. Hive驱动中的执行器(executer)对MapReduce任务进行执行和输出

 
 
 

Hive系统架构

图解
在这里插入图片描述
 
组成(结合图解)

  • 用户接口模块(UI)——包括CLI、HWI、JDBC、ODBC、Thrift Server
  • 驱动模块(Driver)——编译器+优化器+执行器,负责把HiveSQL语句转换成一系列MapReuce
  • 元数据存储模块(MetaStore)——是一个独立的关系型数据库(比如MySQL)

说明(结合图解)

  1. 当启动MapReduce,Hive本身不会生成MapReduce算法程序
  2. 当启动MapReduce,Hive通过和JobTracker通信来初始化MapReduce任务
  3. 分布式就是NameNode(1)+DataNode(n)JobTracker(1)+TaskTracker(n),JobTracker和NameNode是在一起的
  4. 数据文件存储在HDFS

 
 
 

Hive HA

引入

在实际应用中,Hive暴露出了不稳定的问题。我们解决的思路就是Hive HA(High Availability,高可用性)
 
思路

多个Hive实例被纳入到一个资源池中,由HAProxy提供一个统一的对外接口

在外部看来(程序开发人员的视角),可以认为它是一台「超强Hive」
 
图解
在这里插入图片描述

 
 
 

Hive编程

基本操作

创建create
查看show
装载load
查看insert

 
编程优势

  1. 较少的代码量。比如经典的WordCount,原生Java需要63行,Hive仅仅使用了7行!
  2. 无需编程为jar包。MapReduce需要编译为jar包,Hive不需要
  3. 透明。HiveSQL语句最终是要转换为MapReduce任务的,但这一切都由Hive框架自动完成

 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值