MaxCompute(ODPS):Hive的进阶者

Posted 五只鸭子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MaxCompute(ODPS):Hive的进阶者相关的知识,希望对你有一定的参考价值。

Hive概述

架构于Hadoop之上,可以将结构化的HDFS文件映射成一张表,并提供了类似于SQL语法的HQL查询功能

核心本质:将HQL语句转换成MapReduce任务

Hive的主要优缺点

优点:
避免了开发人员去实现Map和Reduce的接口,大大降低了学习成本
HQL语法类似于SQL语法,简单、容易上手

缺点:
执行效率比较低 Hive生成的MapReduce任务,不够智能化,容易造成数据倾斜

Hive架构图

每个模块负责的内容:
Meta Store: 元数据,一般存储在mysql
Client: 客户端
Driver:驱动器
HQL Parse: 解析器,HQL解析和语法分析
Physical Plan: 编译生成逻辑执行计划
Query Optimizer: 对逻辑执行计划进行优化
Execution: 把逻辑执行计划转换成物理执行计划
Hadoop
Map Reduce: 执行计算
HDFS: 文件存储
MapReduce 执行原理
MapReduce是一种分布式计算模型,由Map和Reduce组成。 Map()负责把一个大的block块进行切片并计算。 Reduce() 负责把Map()切片的数据进行汇总、计算。

执行的核心思想: 相同key的键值对为一组调用一次Reduce方法,方法内迭代这组数据进行计算。

【Map Reduce 详细步骤图】

ODPS与Hive的关系
ODPS是阿里基于Hive的核心思想构建的,不同的是Hive的文件存储在hdfs上,ODPS则存在阿里的盘古里。而且ODPS针对Hive做了一些优化

【ODPS架构图】

ODPS针对HIVE的优化
Query Optimizer 优化器的优化

RBO: 基于规则的优化器 (Oracle 6-9i, Hive)

• 一种过时的优化器框架,它只认规则,对数据不敏感。优化是 局部贪婪,容易陷入局部优但是全局差的场景,容易受应用规 则的顺序而生产迥异的执行计划,往往结果是不是最优的。

CBO:基于代价的优化器 (Oracle 8开始,Oracle 10g完 全取代RBO; MaxCompute)

• Volcano模型,展开各种可能等价的执行计划,然后依赖数据

的统计信息,计算这些等价执行计划的“代价”,最后从中选 用cost最低的执行计划。

最典型的优化点:

distinct 的性能优化到和 group by 一致
reduce 分配更加平滑

以上是关于MaxCompute(ODPS):Hive的进阶者的主要内容,如果未能解决你的问题,请参考以下文章

MaxCompute - ODPS重装上阵 第六弹 - User Defined Type

使用 MaxCompute(原ODPS) java sdk 运行安全相关命令

阿里云大数据计算服务 - MaxCompute (原名 ODPS)

IDEA with MaxCompute Stadio

阿里云odps介绍

ODPS是什么?——阿里云开发者社区