前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Hive 3架构概述

Apache Hive 3架构概述

作者头像
大数据杂货铺
发布2020-11-25 11:16:39
1.5K0
发布2020-11-25 11:16:39
举报
文章被收录于专栏:大数据杂货铺大数据杂货铺

了解Apache Hive 3的主要设计功能(例如默认的ACID事务处理)可以帮助您使用Hive来满足企业数据仓库系统不断增长的需求。

Apache Tez

Apache Tez是Hive on Tez服务的Hive执行引擎,该服务包括Cloudera Manager中的HiveServer(HS2)。Tez不支持MapReduce。在Cloudera集群中,如果旧脚本或应用程序指定要执行的MapReduce,则会发生异常。大多数用户自定义函数(UDF)不需要更改即可在Tez上执行,而无需执行MapReduce。

使用有向无环图(DAG)的表达式和数据传输原语,在Tez而不是MapReduce上执行Hive查询可以提高查询性能。在Cloudera数据平台(CDP)中,Hive通常仅使用Tez引擎,并且在Hive on Tez启动时会自动启动和管理Tez AM。您提交给Hive的SQL查询的执行方式如下:

  • Hive编译查询。
  • Tez执行查询。
  • 为整个集群中的应用程序分配资源。
  • Hive更新数据源中的数据并返回查询结果。

Hive on Tez在临时容器上运行任务,并使用标准的YARN shuffle服务。

数据存储和访问控制

支持Hive 3设计的主要架构更改之一使Hive对元数据内存资源和文件系统或对象存储有了更多的控制。从Hive 2到Hive 3的以下体系结构的变更提供了更高的安全性:

  • 严格控制的文件系统和计算机内存资源,替代了灵活的边界:明确的边界提高了可预测性。更好的文件系统控制可提高安全性。
  • 优化共享文件和YARN容器中的工作负载

默认情况下,CDP私有云基础版将Hive数据存储在HDFS上,CDP公共云将Hive数据默认存储在S3上。在公有云中,Hive仅将HDFS用于存储临时文件。Hive 3通过以下方式针对对象存储(例如S3)进行了优化:

  • Hive使用ACID来确定要读取的文件,而不是依赖于存储系统。
  • 在Hive 3中,文件移动比在Hive 2中减少。
  • Hive积极地缓存元数据和数据,以减少文件系统的操作。

Hive的主要授权模型是Ranger。Hive强制实施Ranger中指定的访问控制。与其他安全方案相比,该模型提供了更强的安全性,并且在管理策略方面具有更大的灵活性。

此模型仅允许Hive访问数据仓库。如果未启用Ranger安全服务或其他安全性,则默认情况下,CDP私有云基础版的 Hive将基于用户模拟使用基于存储的授权(SBA)。

HDFS权限变更

在CDP私有云基础版中,SBA严重依赖于HDFS访问控制表(ACL)。ACL是HDFS中权限系统的扩展。默认情况下,CDP私有云基础版打开HDFS中的ACL,为您提供以下优势:

  • 在授予多个用户组和用户特定权限时,增加了灵活性
  • 方便地将权限应用于目录树,而不是单个文件

事务处理

您可以利用以下事务处理特性来部署新的Hive应用程序类型:

  • ACID事务处理的成熟版本:

ACID表是默认的表类型。

默认情况下启用ACID不会导致性能或操作过载。

  • 简化的应用程序开发,具有强大事务保证的操作以及SQL命令的简单语义

您不需要对ACID表分桶。

  • 重写的物化视图
  • 自动的查询缓存
  • 高级优化

Hive客户端变更

CDP私有云基础版支持瘦客户端Beeline在命令行上工作。您可以从命令行运行Hive管理命令。Beeline使用JDBC连接到Hive on Tez来执行命令。解析、编译和执行操作在Hive on Tez中进行。Beeline支持Hive CLI支持的许多命令行选项。但Beeline不支持hive -e set key=value的方式配置Hive Metastore。

通过使用hive 关键字、命令选项和命令调用Beeline,可以输入受支持的Hive CLI命令。例如,hive -e set。使用Beeline代替不再受支持的胖客户端Hive CLI具有许多优点,包括较低的开销。Beeline不会使用整个Hive代码库。执行查询所需的少量守护程序简化了监视和调试。

Hive on Tez会强制执行白名单和黑名单设置,您可以使用SET命令对其进行更改。使用黑名单,您可以限制内存配置更改,以防止不稳定。您可以在具有不同白名单和黑名单的Tez实例上配置多个Hive,以建立不同级别的稳定性。

Apache Hive Metastore共享

Hive、Impala和其他组件可以共享远程的Hive元存储。在CDP公共云中,HMS使用预安装的MySQL数据库。在公有云上,您几乎不需要配置或者很少的配置HMS。

整合Spark

Spark和Hive表使用Hive Warehouse Connector进行互操作。

您可以使用Hive Warehouse Connector从Spark访问ACID表和外部表。您不需要Hive Warehouse Connector即可从Spark读取Hive外部表并从Spark写入Hive外部表。您不需要HWC即可读取或写入Hive外部表。Spark用户只是直接从Hive中读取或写入。您可以读取ORC或Parquet格式的Hive外部表。但您只能以ORC格式写Hive的外部表。

查询批处理和交互式工作负载的执行

您可以使用JDBC命令行工具(例如Beeline)或使用JDBC / ODBC驱动程序和BI工具(例如Tableau)连接到Hive。客户端与同一个Hive on Tez版本的实例进行通信。您可以为每个实例配置设置文件以执行批处理或交互式处理。

原文链接:https://docs.cloudera.com/cdp-private-cloud/latest/upgrade/topics/hive-apache-hive-3-architectural-overview.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档