绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Apache Hive 3架构概述
2022-04-11 11:16:43

了解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。

  1. 整合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


分享好友

分享这个小栈给你的朋友们,一起进步吧。

Apache Hive
创建时间:2022-04-11 11:01:43
Apache Hive
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • gaokeke123
    专家
戳我,来吐槽~