CDP中的Hive3系列之Apache Hive3的特性

简介: CDP中采用的是Apache Hive3版本,该版本相比Hive1/2在事务和安全性等方面有重大改进,了解这些版本之间的主要差异对于 SQL 用户至关重要,包括使用 Apache Spark 和 Apache Impala 的用户。

Apache Hive 3.x 的重大变更改进了Apache Hive 2.x事务和安全性。了解这些版本之间的主要差异对于 SQL 用户至关重要,包括使用 Apache Spark Apache Impala 的用户。

这是CDP中Apache Hive3用户指南系列之一,之前的文章请参考<CDP的Hive3系列之Hive Metastore介绍>.

1. Apache Hive3特性

Hive 是一个数据仓库系统,用于汇总、查询和分析庞大的不同数据集。

1.1  ACID 事务处理

Hive 3 表符合 ACID(原子性、一致性、隔离性和持久性)。Hive 3 写入和读取操作提高了事务表的性能。原子操作包括简单的写入和插入、写入多个分区以及在单个 SELECT 语句中进行多次插入。读取操作不受操作期间发生的更改的影响。您可以插入或删除数据,并且在软件和硬件崩溃期间保持一致。这简化了 Hive 表的创建和维护,因为hive不再需要使用Bucket表。

1.2  物化视图

由于多个查询经常需要同一个中间汇总表或连接表,因此您可以通过预先计算中间表并将其缓存到视图中来避免成本高昂、重复的查询部分共享。

1.3  查询结果缓存

Hive 过滤和缓存相似或相同的查询。Hive 不会重新计算未更改的数据。当成百上千的 BI 工具和 Web 服务用户查询 Hive 时,缓存重复查询可以显着减少负载。

1.4  计划查询

使用 SQL 语句,您可以安排 Hive查询重复运行、监控查询进度、暂时忽略查询计划并限制并行运行的数量。例如,您可以使用计划查询来启动压缩并定期重建物化视图。

1.5  Spark Hive 的集成

Spark Hive 表使用 Hive Warehouse Connector Spark Direct Reader 进行互操作以访问 ACID 管理的表。您可以使用 SparkSQL 直接从 Spark 访问外部表。

您不需要使用 HWC 来读取或写入 Hive 外部表。Spark 用户只是直接从 Hive 读取或写入。您可以读取 ORC Parquet 格式的 Hive 外部表。但是您只能以 ORC 格式写入到 Hive 的外部表。

1.6  安全改进

默认使用Apache Ranger 保护 Hive 的数据。为了满足并发改进、ACID 支持、渲染安全性和其他功能的需求,Hive 严格控制文件系统或对象存储上的仓库位置以及内存资源。

借助 Apache Ranger Apache Hive ACID的支持,您的组织将准备好支持和实施 GDPR(通用数据保护条例)。

1.7  查询级别的工作负载管理

您可以配置谁使用查询资源、可以使用多少、以及 Hive 响应资源请求的速度。工作负载管理可以改进并行查询执行、查询的集群共享和查询性能。尽管名称相似,但 Hive 工作负载管理查询与 Cloudera Workload XM 无关,用于报告和查看数百万个查询和数百个数据库。

1.8  连接池

Hive 支持 HakariCP JDBC 连接池。

1.9  不支持的功能

CDP 不支持 HDP CDH 平台中可用的以下功能:

·       指定托管表位置的 CREATE TABLE语句

不要使用 LOCATION 子句来创建托管表。Hive 将仓库中的默认位置分配给托管表。

·       创建索引

Hive 自动在ORC或者Parquet的主表中构建和存储索引,而不是将索引维护在不同的表中。设置 hive.optimize.index.filter为启用使用(不推荐——改为使用物化视图)。在升级期间,现有索引在Parquet ORC 中保留并迁移到 CDP

原文链接:https://docs.cloudera.com/cdp-private-cloud-base/latest/hive-introduction/topics/hive_whats_new_in_this_release_hive.html

2    Hive on Tez 简介

Cloudera 数据平台 (CDP) 服务,提供 Apache Tez 执行的 Apache Hive SQL 数据库。

Hive on Tez 服务提供基于 Apache Hive 3.x 的基于 SQL 的数据仓库系统。Hive 3.x 中相对于以前版本的增强可以提高 SQL 查询性能、安全性和审计功能。Hive Metastore (HMS) 是一个单独的服务,不是 Hive 的一部分,甚至不一定在同一个集群上。HMS 将元数据存储在后端,用于 HiveImpalaSpark 和其他组件。

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

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

·       Hive 编译查询。

·       Tez 执行查询。

·       为整个集群的应用程序分配资源。

·       Hive 更新数据源中的数据并返回查询结果。

Hive on Tez 在临时容器上运行任务并使用标准的 YARN shuffle 服务。默认情况下,Hive 数据存储在 HDFS 上。如果您不启用 Ranger 安全服务或其他安全性,默认情况下 Hive 使用基于用户模拟的基于存储的授权 (SBA)

原文链接:https://docs.cloudera.com/cdp-private-cloud-base/latest/hive-introduction/topics/hive-on-tez.html

3    Hive 不支持的接口和功能

您需要了解不受支持的 HDP CDH 平台中可用的接口。

CDP Private Cloud Base不支持以下接口:

·       Druid

·       Hcat CLI (however HCatalog is supported)

·       Hive CLI (replaced by Beeline)

·       Hive View

·       LLAP

·       MapReduce execution engine (replaced by Tez)

·       Pig

·       S3 for storing tables

·       Spark execution engine (replaced by Tez)

·       Spark thrift server

Spark Hive 表使用 Hive 仓库连接器(HWC)进行互操作。

·       SQL 标准授权

·       Tez View

o  WebHCat

您可以使用 Hue 代替 Hive View

3.1  部分不支持的接口

不支持使用 Apache Hadoop 分布式副本 (DistCP) 来复制 Hive ACID 表。

原文链接:https://docs.cloudera.com/cdp-private-cloud-base/latest/hive-introduction/topics/hive-unsupported.html

4    Apache Hive 3 架构概述

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

4.1  数据存储和访问控制

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

·       严格控制文件系统和计算机内存资源,取代灵活的边界:明确的边界增加了可预测性。更好的文件系统控制可提高安全性。

·       在共享文件和 YARN 容器中优化的工作负载

Hive 3 通过以下方式针对对象存储进行了优化:

·       Hive 使用 ACID 来确定要读取的文件,而不是依赖于存储系统。

·       Hive 3 中,文件移动比 Hive 2 中减少了。

·       Hive 主动缓存元数据和数据以减少文件系统操作

Hive 的主要授权模型是 RangerHive 强制执行 Ranger 中指定的访问控制。此模型提供比其他安全方案更强的安全性,并在管理策略方面具有更大的灵活性。

该模型只允许 Hive 访问 Hive 仓库。

4.2  事务处理

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

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

ACID 表是默认的表类型。

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

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

·       您不需要存储 ACID 表。

·       物化视图重写

·       自动查询缓存

·       高级优化

4.3  Hive 客户端的更改

您可以使用瘦客户端 Beeline 从命令行查询 Hive。您可以从命令行运行 Hive 管理命令。Beeline 使用到 Hive JDBC 连接来执行命令。Hive 解析、编译和执行操作。Beeline 支持 Hive CLI 支持的许多命令行选项。Beeline 不支持hive -e set key=value来配置 Hive Metastore

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

Hive 强制执行白名单和黑名单设置,您可以使用 SET 命令更改这些设置。使用黑名单,您可以限制内存配置更改以防止不稳定。不同的 Hive 实例具有不同的白名单和黑名单,以建立不同级别的稳定性。

4.4  Apache Hive Metastore 共享

HiveImpala 和其他组件可以共享远程的 Hive Metastore

4.5  Spark集成

Spark Hive 表使用Hive Warehouse ConnectorHWC)进行互操作。

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

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

您可以使用 JDBC 命令行工具(例如 Beeline)或使用 JDBC/ODBC 驱动程序和 BI 工具(例如 Tableau)连接到 Hive。您可以为每个实例配置设置文件以执行批处理或交互式处理。

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

目录
相关文章
|
OLAP 数据处理 Apache
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍
众安保险在CDP(Customer Data Platform,客户数据平台)建设中,通过引入阿里云数据库SelectDB版内核Apache Doris,成功打破了数据孤岛,并显著提升了人群圈选的速度
664 1
|
存储 数据采集 Apache
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍
随着业务在金融、保险和商城领域的不断扩展,众安保险建设 CDP 平台以提供自动化营销数据支持。早期 CDP 平台依赖于 Spark + Impala + Hbase + Nebula 复杂的技术组合,这不仅导致数据分析形成数据孤岛,还带来高昂的管理及维护成本。为解决该问题,众安保险引入 Apache Doris,替换了早期复杂的技术组合,不仅降低了系统的复杂性,打破了数据孤岛,更提升了数据处理的效率。
2324 6
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍
|
消息中间件 存储 Apache
深入探索分布式消息队列:Apache RocketMQ 介绍与特性解析
在现代的分布式系统中,消息队列已经成为了实现异步通信、解耦和扩展性的重要工具。Apache RocketMQ,作为一款高性能、可靠的分布式消息队列系统,正受到越来越多企业和开发者的关注和采用。本文将为您详细介绍 Apache RocketMQ 的核心概念、特性以及它在分布式架构中的应用。
507 0
|
存储 分布式计算 Java
Apache ZooKeeper - ZK的基本特性与节点&应用场景一览
Apache ZooKeeper - ZK的基本特性与节点&应用场景一览
359 0
|
机器学习/深度学习 分布式计算 Kubernetes
Apache Spark 2.3 加入支持Native Kubernetes及新特性文档下载
Apache Spark 2.3 加入支持Native Kubernetes及新特性文档下载
379 0
Apache Spark 2.3 加入支持Native Kubernetes及新特性文档下载
|
NoSQL 关系型数据库 MySQL
Apache Cassandra 特性
Apache Cassandra 特性
324 0
|
SQL 存储 分布式计算
Apache Hudi重磅特性解读之存量表高效迁移机制
随着Apache Hudi变得越来越流行,一个挑战就是用户如何将存量的历史表迁移到Apache Hudi,Apache Hudi维护了记录级别的元数据以便提供upserts和增量拉取的核心能力。为利用Hudi的upsert和增量拉取能力,用户需要重写整个数据集让其成为Hudi表。此RFC提供一个无需重写整张表的高效迁移机制。
924 0
Apache Hudi重磅特性解读之存量表高效迁移机制
|
存储 SQL 分布式计算
Apache Hudi重磅特性解读之全局索引
Hudi表允许多种类型操作,包括非常常用的upsert,当然为支持upsert,Hudi依赖索引机制来定位记录在哪些文件中。 当前,Hudi支持分区和非分区的数据集。分区数据集是将一组文件(数据)放在称为分区的桶中的数据集。一个Hudi数据集可能由N个分区和M个文件组成,这种组织结构也非常方便hive/presto/spark等引擎根据分区字段过滤以返回有限的数据量。而分区的值绝大多数情况下是从数据中得来,这个要求一旦一条记录映射到分区/桶,那么这个映射应该 a) 被Hudi知道;b) 在Hudi数据集生命周期里保持不变。
1082 0
Apache Hudi重磅特性解读之全局索引
|
存储 资源调度 分布式计算
CDP中配置Apache Hadoop Yarn的安全性
CDP中配置Hadoop Yarn的安全性。
1131 0
CDP中配置Apache Hadoop Yarn的安全性
|
SQL 存储 关系型数据库
CDP中的Hive3系列之Hive性能调优
要将数据从 RDBMS(例如 MySQL)迁移到 Hive,您应该考虑使用带有 Teradata 连接器的 CDP 中的 Apache Sqoop。Apache Sqoop 客户端基于 CLI 的工具在关系数据库和 HDFS 或云对象存储之间批量传输数据。 需要进行提取、转换和加载 (ETL) 过程的遗留系统数据源通常驻留在文件系统或对象存储中。您还可以以分隔文本(默认)或 SequenceFile 格式导入数据,然后将数据转换为 Hive 推荐的 ORC 格式。通常,为了在 Hive 中查询数据,ORC 是首选格式,因为 ORC 提供了性能增强。
763 0

热门文章

最新文章

推荐镜像

更多