《CDP企业数据云平台从入门到实践》——CDP之数据仓库(5)

简介: 《CDP企业数据云平台从入门到实践》——CDP之数据仓库(5)

《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。您为每个实例配置设置文件以执行批处

理或交互式处理。

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
106 0
|
1月前
|
SQL 数据采集 存储
数据仓库(12)数据治理之数仓数据管理实践心得
这边文章聊聊自己对数据治理开发实践的一些思路,就是聊聊怎么开始去做数据治理这件事情。说起数据治理,有时候虽然看了很多文章,看了很多的介绍,了解数据治理的理论,但是实际上需要我们去搞的时候,就会踩很多的坑。这里记一下自己做数据治理的一些思路,做做笔记,也分享给需要的同学。 当然,想要做数据治理,想要学习了解,一下数据治理的范围,理论等,最好可以看看别人怎么做的,了解数据治理可以参考:[数据仓库(11)什么是大数据治理,数据治理的范围是哪些](https://zhuanlan.zhihu.com/p/467433967)。
306 0
|
1月前
|
存储 监控 大数据
数据仓库(11)什么是大数据治理,数据治理的范围是哪些
什么是数据治理,数据治理包含哪些方面?大数据时代的到来,给了我们很多的机遇,也有很多的挑战。最基础的调整也是大数据的计算和管理,数据治理是一个特别重要的大数据基础,他保证着数据能否被最好的应用,保证着数据的安全,治理等。那么数据治理到底能治什么,怎么治?
68 0
|
1月前
|
存储 大数据 数据管理
数据仓库(09)数仓缓慢变化维度数据的处理
数据仓库的重要特点之一是反映历史变化,所以如何处理维度的变化是维度设计的重要工作之一。缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流逝发生缓慢的变化,与数据增长较为快速的事实表相比,维度变化相对缓慢。阴齿这个就叫做缓慢变化维。
218 2
数据仓库(09)数仓缓慢变化维度数据的处理
|
3月前
|
存储 机器学习/深度学习 数据挖掘
数据仓库与数据湖:解析数据驱动的未来
在数字化时代,数据成为企业决策的核心资源。本文将深入探讨数据仓库和数据湖的概念、特点以及应用场景,分析其在实现数据驱动决策过程中的重要性和优势,并展望数据驱动的未来发展趋势。
54 5
|
3月前
|
SQL 分布式计算 Java
数仓学习---7、数据仓库设计、数据仓库环境准备、模拟数据生成
数仓学习---7、数据仓库设计、数据仓库环境准备
130 2
|
4月前
|
Cloud Native 关系型数据库 MySQL
云数据仓库ADB如何更新、删除和导入AnalyticDBMySQL数据-更新数据?
云数据仓库ADB如何更新、删除和导入AnalyticDBMySQL数据-更新数据?
81 0
|
4月前
|
Cloud Native 关系型数据库 MySQL
云数据仓库ADB问一下,数据批量导入失败的有地方导出吗?
云数据仓库ADB问一下,数据批量导入失败的有地方导出吗?
37 0
|
4月前
|
关系型数据库 MySQL OLAP
云数据仓库ADB如何更新、删除和导入AnalyticDBMySQL数据-更新数据?
云数据仓库ADB如何更新、删除和导入AnalyticDBMySQL数据-更新数据?
200 0
|
4月前
|
存储 数据采集 缓存
云数据仓库ADB问一下,数据批量导入失败的有地方导出吗?
云数据仓库ADB问一下,数据批量导入失败的有地方导出吗?
36 0