Hive-架构与设计


一、背景和起源

大数据存储和处理框架Hadoop提供了对数据的存储、分析、任务调度的处理。其中的MapReduce可以对数据进行处理和分析的,但是MapReduce的编程比较繁琐并且修改不方便,对于一些单次处理和交互式分析非常不便。为了支持对数据仓库中数据的分析、简化用户使用数仓门槛,基于Hadoop的一套数据仓库分析系统Hive应运而生。Hive将结构化数据文件映射为一张数据库表,提供了丰富的SQL查询方式分析存储在Hadoop分布式文件系统的数据。将查询SQL语句转化成MapReduce任务进行执行。

二、框架概述

1.设计特点

  • 支持通过SQL对数据仓库中数据进行访问,比如提取、转化、加工、分析等
  • 支持将不同数据格式添加数据结构
  • 可以直接访问大数据存储系统中的文件,比如HDFS、HBase等

三、架构图

在这里插入图片描述
Hive是构建在Hadoop之上,会将SQL转化成MapReduce任务在Hadoop集群进行执行,然后将结果保存在HDFS上,整体架构如上。

1.UI交互层

用户提交查询和其他操作

2.Driver驱动层

  • 接受用户sql语句
  • 调用编译器对Sql语句进行编译
  • 调用执行引擎进行任务的执行

3.Compiler

基于Metastore中元数据对语句进行语义分析和解析查询生成执行计划

4.Metastore

存储数仓中表和分区的元数据,包括列信息、列类型信息、序列化器和反序列化器、存储文件等。

5.Execution Engine

hive生成的执行计划是一个由Stages组成的逻辑DAG图,执行引擎主要是将逻辑DAG图在Hadoop上进行调度和执行,最后转化成MapReduce的map task或reduce task进行运算。

四、执行流程

在这里插入图片描述

1.发起请求

UI交互层发起执行请求到Driver驱动层

2.获取执行计划

Driver驱动层将用户请求发送到编译器获取执行计划

3.获取元数据

编译器将sql语句中相关表和分区信息发送到MetaStore获取相关元数据

4.返回元数据

MetaStore返回对应元数据

5.返回执行计划

根据表和分区的元数据对sql的解析和优化,生成逻辑执行计划。该计划是一个DAG图,每个stage对应一个MapReduce的map或者reduce操作。

6.运行执行计划

将执行计划发送到Execution Engine,执行引擎会将逻辑执行计划提交到Hadoop中以MapReduce形式进行执行。

7.运行结果获取

UI交互层获取运行结果。

五、数据模型

hive主要将数据以以下几种数据模型进行组织,分别是DataBase、Table、Partition和Bucket。

1.DataBase数据库

相当于关系型数据中的命名空间,将数据库中数据隔离到不同的数据库模型中。

2.Table表

表是由描述表的元数据和存储的数据组成。数据存储在分布式文件系统中,元数据存储在关系型数据库中。表对应分布式文件系统的一个目录。Hive表分为以下四种:

2.1 MANGED_TABLE 内部表

内部表数据是由hive进行存储和管理的,默认存储位置为/user/hive/warehouse目录。

2.2 EXTERNAL_TABLE 外部表

外部表数据不会存储到hive相关目录下。当删除外部表时,hive只删除表的元数据,不会删除表数据。

2.3 INDEX_TABLE 索引表

索引表是为了提高表某些列的查询速度,包含指定列的值、对应的HDFS文件路径、偏移量的一张表。当查询时可以利用此索引表提高查询速度,避免全表扫描。

2.4 VIRTUAL_VIEW 视图表

视图是一组数据的逻辑表示,是sql语句的结果集

3.Partition分区

分区是根据表的某列值划分为不同分区,分区对应分布式系统中表目录下的一个子目录。分区基于分区键把具有相同分区键值的数据存储在一个子目录下。分区有两种类型:

3.1 静态分区

静态分区的分区数量和分区值都是固定的,新增分区和加载数据到分区时,需要提前指定分区名。

3.2 动态分区

动态分区的分区数量和分区值都是不确定的,会根据数据值自动创建新的分区。

4.Bucket桶

hive还支持将表或者分区中数据更细粒度的划分为桶,每个桶的数据对应分布式系统中子目录下的一个文件。

分桶表创建命令:

CREATE TABLE table_name

PARTITIONED BY (partition1 data_type, partition2 data_type,.) 

CLUSTERED BY (column_name1, column_name2,) 

SORTED BY (column_name [ASC|DESC],)] 

INTO num_buckets BUCKETS;

总结

Hive是一个基于Hadoop的数仓分析工具,将分布式系统中的数据映射成结构化数据。提供丰富的SQL查询方式对数仓中的数据进行访问。一般不会存储数据、只会保存元数据到Hive中。Hive根据元数据信息将查询语句转化成执行计划,此执行计划由stage组成的DAG图,调用Hadoop中的MapReduce运行执行计划得到对应结果。


参考链接

1.Apache Hive
2.Hive Home
3.Hive Architecture

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
第1章 面向服务的体系架构(SOA) 1   本章主要介绍和解决以下问题,这些也是全书的基础:   HTTP协议的工作方式与HTTP网络协议栈的结构。   如何实现基于HTTP协议和TCP协议的RPC调用,它们之间有何差别,分别适应何种场景。   如何实现服务的动态注册和路由,以及软负载均衡的实现。   1.1 基于TCP协议的RPC 3   1.1.1 RPC名词解释 3   1.1.2 对象的序列化 4   1.1.3 基于TCP协议实现RPC 6   1.2 基于HTTP协议的RPC 9   1.2.1 HTTP协议栈 9   1.2.2 HTTP请求与响应 15   1.2.3 通过HttpClient发送HTTP请求 16   1.2.4 使用HTTP协议的优势 17   1.2.5 JSON和XML 18   1.2.6 RESTful和RPC 20   1.2.7 基于HTTP协议的RPC的实现 22   1.3 服务的路由和负载均衡 30   1.3.1 服务化的演变 30   1.3.2 负载均衡算法 33   1.3.3 动态配置规则 39   1.3.4 ZooKeeper介绍与环境搭建 40   1.3.5 ZooKeeper API使用简介 43   1.3.6 zkClient的使用 47   1.3.7 路由和负载均衡的实现 50   1.4 HTTP服务网关 54   第2章 分布式系统基础设施 58   本章主要介绍和解决如下问题:   分布式缓存memcache的使用及分布式策略,包括Hash算法的选择。   常见的分布式系统存储解决方案,包括MySQL的分布式扩展、HBase的API及使用场景、Redis的使用等。   如何使用分布式消息系统ActiveMQ来降低系统之间的耦合度,以及进行应用间的通信。   垂直化的搜索引擎在分布式系统中的使用,包括搜索引擎的基本原理、Lucene详细的使用介绍,以及基于Lucene的开源搜索引擎工具Solr的使用。   2.1 分布式缓存 60   2.1.1 memcache简介及安装 60   2.1.2 memcache API与分布式 64   2.1.3 分布式session 69   2.2 持久化存储 71   2.2.1 MySQL扩展 72   2.2.2 HBase 80   2.2.3 Redis 91   2.3 消息系统 95   2.3.1 ActiveMQ & JMS 96   2.4 垂直化搜索引擎 104   2.4.1 Lucene简介 105   2.4.2 Lucene的使用 108   2.4.3 Solr 119   2.5 其他基础设施 125   第3章 互联网安全架构 126   本章主要介绍和解决如下问题:   常见的Web攻击手段和防御方法,如XSS、CRSF、SQL注入等。   常见的一些安全算法,如数字摘要、对称加密、非对称加密、数字签名、数字证书等。   如何采用摘要认证方式防止信息篡改、通过数字签名验证通信双方的合法性,以及通过HTTPS协议保障通信过程中数据不被第三方监听和截获。   在开放平台体系下,OAuth协议如何保障ISV对数据的访问是经过授权的合法行为。   3.1 常见的Web攻击手段 128   3.1.1 XSS攻击 128   3.1.2 CRSF攻击 130   3.1.3 SQL注入攻击 133   3.1.4 文件上传漏洞 139   3.1.5 DDoS攻击 146   3.1.6 其他攻击手段 149   3.2 常用的安全算法 149   3.2.1 数字摘要 149   3.2.2 对称加密算法 155   3.2.3 非对称加密算法 158   3.2.4 数字签名 162   3.2.5 数字证书 166   3.3 摘要认证 185   3.3.1 为什么需要认证 185   3.3.2 摘要认证的原理 187   3.3.3 摘要认证的实现 188   3.4 签名认证 192   3.4.1 签名认证的原理 192   3.4.2 签名认证的实现 193   3.5 HTTPS协议 200   3.5.1 HTTPS协议原理 200   3.5.2 SSL/TLS 201   3.5.3 部署HTTPS Web 208   3.6 OAuth协议 215   3.6.1 OAuth的介绍 215   3.6.2 OAuth授权过程 216   第4章 系统稳定性 218   本章主要介绍和解决如下问题:   常用的在线日志分析命令的使用和日志分析脚本的编写,如cat、grep、wc、less等命令的使用,以及awk、shell脚本的编写。   如何进

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值