CDP 之数据仓库
Cloudera Data Platform 的数据仓库功能主要有 Apache Impala、Apache Hive 和Hue进行支持。使用这些组件熟悉的 SQL 接口,您可以访问您的数据。
一、 数据仓库概览
1. Hive Metastore 概述
Hive metastore(HMS)是一种服务,用于在后端 RDBMS(例如 MySQL 或PostgreSQL)中存储与 Apache Hive 和其他服务相关的元数据。Impala、Spark、Hive 和其他服务共享 Metastore。与 HMS 的连接包括 HiveServer、Ranger 和代表 HDFS 的NameNode。
Beeline、Hue、JDBC 和 Impala shell 客户端通过 thrift 或 JDBC 向 HiveServer 发出请求。HiveServer 实例向 HMS 读取/写入数据。默认情况下,冗余 HMS 以主动/主动模式运行。物理数据驻留在后端 RDBMS 中,其中一个用于 HMS。所有 HMS 实例都使用相同的后端数据库。一个单独的 RDBMS 支持安全服务,例如 Ranger。在任何给定时间,所有连接都路由到单个 RDBMS 服务。HMS 通过 thrift 与 NameNode对话,并充当 HDFS 的客户端。
HMS 直接连接到 Ranger 和 NameNode(HDFS),HiveServer 也是如此,但为简单起见,图中未显示。后端的一个或多个 HMS 实例可以与其他服务通信,例如Ranger。
2. Apache Hive 概览
Apache Hive 3.x 的主要更改改进了 Apache Hive 2.x 事务和安全性。了解这些版本之间的主要差异对于 SQL 用户(包括使用 Apache Spark 和 Apache Impala 的用户)来说至关重要。
Hive 是一个数据仓库系统,用于汇总、查询和分析庞大的不同数据集。
1) ACID 事务处理
Hive 3 表符合 ACID(原子性、一致性、隔离性和持久性)。Hive 3 写入和读取操作提高了事务表的性能。原子操作包括简单的写入和插入、写入多个分区以及在单个SELECT 语句中进行多次插入。读取操作不受操作期间发生的更改的影响。您可以插入或删除数据,并且它在整个软件和硬件崩溃期间保持一致。Hive 表的创建和维护得到简化,因为不再需要存储表。
2) 物化视图
因为多个查询经常需要相同的中间汇总表或连接表,所以您可以通过预先计算中间表并将其缓存到视图中来避免代价高昂的重复查询部分共享。
3) 查询结果缓存
Hive 过滤并缓存相似或相同的查询。Hive 不会重新计算未更改的数据。当成百上千的 BI 工具和 Web 服务用户查询 Hive 时,缓存重复查询可以大大减少负载。
4) 预定查询
使用 SQL 语句,您可以安排 Hive 查询定期运行、监控查询进度、暂时忽略查询计划并限制并行运行的数量。例如,您可以使用计划查询来启动压缩并定期重建物化视图。
5) 安全改进
Apache Ranger 默认保护 Hive 数据。为了满足并发改进、ACID 支持、呈现安全性和其他功能的需求,Hive 严格控制文件系统或对象存储和内存资源上的仓库位置。借助Apache Ranger 和 Apache Hive ACID 支持,您的组织将准备好支持和实施GDPR(通用数据保护条例)。
6) 连接池
Hive 支持 HakariCP JDBC 连接池。
7) 不支持的功能
CDP 不支持 HDP 和 CDH 平台中可用的以下功能:
• CREATE TABLE 指定托管表位置
不要使用 LOCATION 子句创建托管表。Hive 将仓库中的默认位置分配给托管表。
• 创建索引
Hive 在主表中的 ORC 或 Parquet 中自动构建和存储索引,而不是在不同的表中自动存储。设置 hive.optimize.index.filter 为启用(不推荐——改用物化视图)。在升级期间,现有索引将在 Parquet 或 ORC 中保留并迁移到 CDP。
《CDP企业数据云平台从入门到实践》——CDP之数据仓库(2) https://developer.aliyun.com/article/1226345?groupCode=ClouderaCDP