《CDP企业数据云平台从入门到实践》——CDP之数据仓库(4) https://developer.aliyun.com/article/1226337?groupCode=ClouderaCDP
三、 Hive 使用
1. Spark 与 Hive 集成
要从 Spark 访问 Hive,您需要隐式或显式使用 HWC。
您可以使用 Hive 仓库连接器(HWC)从 Spark 访问 Hive 管理的表。HWC 专门设计用于访问托管的 ACID v2 Hive 表,并支持写入 Parquet、ORC、Avro 或 Textfile 格式的表。HWC 是与 Spark 应用程序一起启动的 Spark 库/插件。
您不需要 HWC 来读取或写入 Hive 外部表。Spark 使用本机 Spark 访问外部表。
将 Spark Direct Reader 和 HWC 用于 ETL 作业。对于其他作业,请考虑使用 Apache Ranger 和 HiveWarehouseConnector 库来提供行和列的细粒度数据访问。
HWC 支持 spark-submit 和 pyspark。不支持 spark thrift 服务器。
2. Hive on Tez 介绍
Cloudera Data Platform(CDP)服务提供 Apache Tez 执行的 Apache Hive SQL 数据库。
Hive on Tez 服务提供基于 Apache Hive 3.x 的基于 SQL 的数据仓库系统。Hive 3.x相对于之前版本的增强可以提高 SQL 查询性能、安全性和审计能力。Hive metastore(HMS)是一个单独的服务,不是 Hive 的一部分,甚至不一定在同一个集群上。HMS 在后端存储 Hive、Impala、Spark 和其他组件的元数据。
Apache Tez 是 Hive on Tez 服务的 Hive 执行引擎,它包括 Cloudera Manager 中的 HiveServer(HS2)。不支持 MapReduce。在 Cloudera 集群中,遗留脚本或应用指定 MapReduce 执行,会出现异常。大多数用户定义的函数(UDF)无需更改即可在 Tez 而不是 MapReduce 上运行。
使用有向无环图(DAG)和数据传输原语的表达式,在 Tez 而不是 MapReduce 上执行 Hive 查询可以提高查询性能。在 Cloudera Data Platform(CDP)中,Tez 通常只被 Hive 使用,当 Hive on Tez 启动时自动启动并管理 Tez AM。您提交给 Hive的 SQL 查询执行如下:
• Hive 编译查询。
• Tez 执行查询。
• 为整个集群的应用程序分配资源。
• Hive 更新数据源中的数据并返回查询结果。
3. Apache Hive 3 架构概述
了解 Apache Hive 的 3 个主要设计特性,例如默认的 ACID 事务处理,可以帮助您使用 Hive 来满足企业数据仓库系统不断增长的需求。
1) 数据存储和访问控制
支持 Hive 3 设计的主要架构更改之一使 Hive 可以更好地控制元数据内存资源和文件系统或对象存储。从 Hive 2 到 Hive 3 的以下体系结构更改提供了改进的安全性:
• 严格控制文件系统和计算机内存资源,取代灵活的边界:明确的边界增加了可预测性。更好的文件系统控制提高了安全性。
• 共享文件和容器中的优化工作负载。
Hive 3 通过以下方式针对对象存储进行了优化:
• Hive 使用 ACID 来确定要读取哪些文件,而不是依赖于存储系统。CDP 之数据仓库 270
• 在 Hive 3 中,文件移动比 Hive 2 中的少。
• Hive 积极缓存元数据和数据以减少文件系统操作
Hive 的主要授权模型是 Ranger。Hive 强制执行 Ranger 中指定的访问控制。该模型提供了比其他安全方案更强的安全性和管理策略的更大灵活性。该模型只允许 Hive 访问 Hive 仓库。
2) 事务处理
您可以利用以下事务处理特征来部署新的 Hive 应用程序类型:
• 成熟版本的 ACID 事务处理
ACID 表是默认的表类型。
默认情况下启用的 ACID 不会导致性能或操作过载。
• 简化的应用程序开发、具有强大事务保证的操作以及 SQL 命令的简单语义
您不需要存储 ACID 表。
• 物化视图重写
• 自动查询缓存
• 高级优化
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) Apache Hive Metastore 共享
Hive、Impala 和其他组件可以共享远程 Hive 元存储。
5) 批处理和交互式工作负载的查询执行
您可以使用 JDBC 命令行工具(例如 Beeline)或将 JDBC/ODBC 驱动程序与 BI 工具(例如 Tableau)结合使用来连接到 Hive。您为每个实例配置设置文件以执行批处
理或交互式处理。