在将 Impala 工作负载从 CDH 平台迁移到 CDP 之前,您必须了解 CDH 和 CDP Impala 之间的语义和行为差异以及需要在数据迁移之前执行的活动。
要将关键 Impala 工作负载成功迁移到云环境,您必须了解目标环境中的容量要求,并了解当前环境与目标环境之间的性能差异。
CDH 中的Impala 和CDP 中的Impala 之间存在一些差异。在您将工作负载从 CDH 5.13-5.16 或 CDH 6.1 或更高版本迁移到CDP 私有云基础或公共云后,这些更改会影响 Impala 。其中一些差异要求您更改 Impala 脚本或工作流程。
当您将工作负载迁移到CDP 私有云基础或公共云时,您在 CDH 版本 5.11 - 5.16 或 6.1 或更高版本中使用的 Impala 版本更改为 Impala 3.4 。
如果 Impala 托管表在迁移之前位于hdfs的 /user/hive/warehouse上,则转换为外部的表将保留在那里。迁移过程将 hive.metastore.warehouse.dir 属性设置为此位置,将其指定为 Hive 仓库位置。您可以使用 Cloudera Manager 更改仓库的位置。
在 CDH 到 CDP 迁移后,现有表的位置不会更改。在 CDP 中,托管表和外部表有单独的 HDFS 目录。
迁移后,将(hive.metastore.warehouse.dir)设置为 Impala 托管表所在的/user/hive/warehouse。
您可以使用 Cloudera Manager 中的 Hive Metastore Action 菜单更改仓库的位置。
使用Hive Configuration页面创建 Hive 目录
您必须了解为 Impala 设置 ACL 以允许 Impala 写入 Hive 仓库目录的步骤。
迁移后,将(hive.metastore.warehouse.dir)设置为 Impala 托管表所在的/user/hive/warehouse。当 Impala 工作负载从 CDH 迁移到 CDP 时,会自动为默认仓库目录设置 ACL 设置。如果您在迁移到 CDP 后更改了仓库目录的默认位置,请按照以下步骤操作以允许 Impala 写入 Hive 仓库目录。
完成Hive/Impala Configuration页面上自由格式字段中的初始配置, Cloudera Manager以允许 Impala 写入 Hive 仓库目录。
例子:
$ hdfs dfs -getfacl hdfs:///warehouse/tablespace/managed/hive
# file: hdfs:///warehouse/tablespace/managed/hive
# owner: hive
# group: hive
user::rwx
group::rwx
other::---
default:user::rwx
default:user:impala:rwx
default:group::rwx
default:mask::rwx
default:other::---
$ hdfs dfs -getfacl hdfs:///warehouse/tablespace/external/hive
# file: hdfs:///warehouse/tablespace/external/hive
# owner: hive
# group: hive
# flags: --t
user::rwx
group::rwx
other::rwx
default:user::rwx
default:user:impala:rwx
default:group::rwx
default:mask::rwx
default:other::rwx
例子:
$ hdfs dfs -setfacl hdfs:///warehouse/tablespace/managed/hive
$ hdfs dfs -setfacl hdfs:///warehouse/tablespace/external/hive
有关使用子命令getfacl 和 的更多信息setfacl,请参阅使用 CLI 命令创建和列出 ACL。
查看用户Impala所属的组:
$ id -Gn impala
uid=973(impala) gid=971(impala) groups=971(impala),972(hive)
要在将原始数据摄取到表中时获取新信息,您可以使用 hms_event_polling_interval_s 标志。
当原始数据被摄取到表中时,会生成新的 HMS 元数据和文件系统元数据。在 CDH 中,要获取此新信息,您必须手动发出 Invalidate 或 Refresh 命令。但是在 CDP 中,此功能由 hms_event_polling_interval_s 标志控制。默认情况下,此标志设置为 2 秒。当在 HMS 中检测到更改时,此选项会自动刷新表。启用元数据的自动失效/刷新后,目录服务器以可配置的时间间隔轮询 Hive Metastore (HMS) 通知事件,并自动将更改应用于 Impala 目录。如果需要刷新事件轮询不支持的特定表,则必须运行表级 Invalidate 或 Refresh 命令。
在 CDP 中,默认情况下启用所有目录的元数据改进。您可以使用这几个旋钮来控制 Impala 如何管理其元数据以提高性能和可扩展性。
在 CDP 中,所有 Impala 协调器的按需模式默认设置use_local_catalog为 True,以便 Impala 协调器根据需要从目录中提取元数据并将其缓存在本地。这导致了许多性能和可扩展性的改进,例如减少了协调器上的内存占用和自动缓存逐出。
按需元数据获取的粒度位于协调器和catalogd. 添加/删除分区等常见用例不会触发大型元数据的不必要的序列化/反序列化。
该功能可用于以下任一模式。
元数据按需模式
在这种模式下,所有协调器都按需使用元数据。
设置以下内容catalogd:
--catalog_topic_mode=minimal
在所有impalad协调器上设置以下内容 :
--use_local_catalog=true
混合模式
在这种模式下,只有部分协调器可以按需使用元数据。
Cloudera 建议您仅使用混合模式来测试本地目录对堆使用的影响。
设置以下内容catalogd:
--catalog_topic_mode=mixed
impalad使用按需元数据在协调器上设置以下内容:
--use_local_catalog=true
局限性:
On-demand元数据模式协调器不支持 HDFS 缓存。
有关目录改进的详细信息,请参阅Impala 元数据管理。
在 CDP 中,托管表是具有insert_only 默认属性的事务表。您必须了解在 CDP 中修改托管表上的文件系统的新默认行为以及切换到旧行为的方法。
切换到 CDH 行为的步骤:
该属性enable_insert_events在 CDP 中用于在 Impala 插入表时自动刷新其他 Impala 集群上的表或分区。
如果 Impala 插入到一个表中,它会刷新基础表或分区。当此配置 enable_insert_events设置为True(默认)时,Impala 生成 INSERT 事件类型,当其他 Impala 集群接收到这些类型时,它会自动刷新表或分区。
笔记
事件处理必须开启,此属性才能工作。
本主题介绍了在 CDP 中所做的更改,以实现 Hive 和 Impala 之间的最佳互操作性,从而改善用户体验。
新的默认行为:
表的统计信息是特定于引擎的,即 Hive 或 Impala,因此每个引擎都可以使用自己的统计信息,而不会覆盖其他引擎生成的统计信息。
当您COMPUTE STATS在Impala 上发布声明时,您需要在Hive 上发布相应的声明,以确保Hive 和Impala 的统计数据都是准确的。
Impala的COMPUTE STATS命令不会覆盖同一个表的 Hive 统计信息。
切换到 CDH 行为的步骤:
没有解决方法。
新的默认行为:
Hive 创建的托管表默认为 ORC 文件格式,并支持完整的事务功能。如果您在未指定STORED AS子句的情况下创建表并从 Hive 加载数据,那么 Impala 无法读取或写入此类表。但是 Impala 可以继续读取非事务性和仅插入事务性 ORC 表。
切换到 CDH 行为的步骤:
Impala 支持 Apache Hadoop 中使用的多种文件格式。它还可以加载和查询其他 Hadoop 组件(如 hive)生成的数据文件。从任何 CDH 5.x 版本升级到7.1、如果在Hive中使用默认的LazyBinaryColumnarSerDe创建RC文件,Impala将无法读取RC文件。但是,您可以将 hive.default.rcfile.serde 的配置选项设置为 ColumnarSerDe,以保持 hive 和 impala 之间的互操作性。
新的默认行为:
在 CDP 中,托管表和外部表有单独的 HDFS 目录。
如果您执行文件系统级别的操作来添加/删除表上的文件,则需要考虑它是外部表还是托管表以查找表目录的位置。
切换到 CDH 行为的步骤:
检查DESCRIBE FORMATTED命令的输出以查找表位置。
在 CDP 7.2.0 及更早版本中,Impala 查询禁用 ORC 表支持。但是,您可以选择使用命令行参数切换到 CDH 行为 ENABLE_ORC_SCANNER。
在 CDP 7.2.0 及更早版本中,如果您使用 Impala 查询 ORC 表,您将看到它失败。为了缓解这种情况,您必须将显式 STORED AS 子句添加到创建 Hive 表的代码中,并使用 Impala 可以读取的格式。另一种选择是在 Cloudera Manager 中设置全局配置以更改 hive_default_fileformat_managed。
切换到 CDH 行为的步骤:
将查询选项ENABLE_ORC_SCANNER设置 TRUE为重新启用 ORC 表支持。
此选项不适用于完整的事务性 ORC 表,并且查询会返回错误。
笔记
如果您使用的是 CDP 7.2.1 或更高版本,则ENABLE_ORC_SCANNER默认启用该参数,您可以使用 Impala 查询 ORC 表,而无需任何手动干预。
理解用于存储 Hive 数据的优化行列式 (ORC) 文件格式和用于存储 Impala 数据的 Parquet 之间的差异很重要。当您为应用程序使用适当的格式时,查询性能会提高。
使用 CDH 中可用的 BDR 服务,您可以迁移 CDP 中的权限,因为 Ranger 是授权提供者而不是 Sentry。您必须了解 Ranger 如何在 CDP 中执行可能与使用 Sentry 不同的策略。
新行为:
下表列出了在 Impala 中运行 SQL 语句的不同访问类型要求。
SQL语句 | Impala 访问要求 |
---|---|
DESCRIBE view | 基础表上的 VIEW_METADATA |
ALTER TABLE RENAMEALTER VIEW RENAME | 目标表/视图上的 ALL源表/视图上的 ALTER |
SHOW DATABASESSHOW TABLES | VIEW_METADATA |
在哪里:
有关在 Impala 中执行 SQL 语句所需的最低权限级别和范围的更多信息,请参阅Impala 授权。
由于 CDP 利用 Ranger 作为其授权服务,您必须将权限从 Sentry 迁移到 Ranger。您可以使用 CDH 中提供的 BDR 服务来迁移权限。此服务将 Sentry 授权策略迁移到 Ranger 作为复制策略作业的一部分。创建复制策略时,选择要迁移的资源,然后为这些资源迁移 Sentry 策略。您可以将一组对象的所有权限或权限迁移到 Ranger。
在Sentry Permissions一节的Create Replication Policy向导包含下列选项:
创建复制策略向导的复制选项部分包含以下选项:
Sentry 和 Ranger 具有不同的权限模型。Sentry权限授予角色和用户。这些被转换为组和用户的权限,因为 Ranger 当前不支持角色。接下来是按资源分组,因为 Ranger 策略是按资源分组的。授予资源的所有权限都被视为单个 Ranger 策略。
Sentry 策略向 Ranger 的迁移通过以下操作执行:
由于 Sentry 权限和 Ranger 服务策略之间没有一对一的映射,Sentry 权限在 Ranger 服务策略中被转换为它们的等效项。有关如何将 Sentry 操作应用于 Ranger 中相应操作的更多信息,请参阅 Sentry 到 Ranger 权限。
笔记
由于 Ranger 中的授权模型与 Sentry 的模型不同,因此并非所有策略都可以使用 BDR 进行迁移。对于某些资源,您必须在将工作负载从 CDH 迁移到 CDP 后手动创建权限。
CDH 和 CDP 环境都支持 Impala 操作的治理功能。将工作负载从 CDH 迁移到 CDP 时,您必须手动将 Navigator 元数据迁移到 Atlas,因为 Navigator 元数据不会从 CDH 自动迁移到 CDP。
这两个环境收集相似的信息来描述 Impala 活动,包括:
支持这些操作的服务在两种环境中是不同的。功能分布在服务中,如下所示:
功能 | CDH | CDP |
---|---|---|
审计 | ||
访问请求 | 导航器控制台中的审计选项卡 | Ranger 控制台中的审计页面 |
创建或更新元数据目录条目的服务操作 | 导航器控制台中的审计选项卡 | Atlas 仪表板中每个实体的审计选项卡 |
一般服务操作 | 导航器控制台中的审计选项卡 | 没有收集其他审计。 |
元数据目录 | ||
Impala 操作:CREATE TABLE AS SELECTCREATE VIEWALTER VIEW AS SELECTINSERT INTOINSERTOVERWRITE | 流程和流程执行实体列级和表级沿袭 | 流程和流程执行实体列级和表级沿袭 |
作为将工作负载从 CDH 迁移到 CDP 的一部分,您必须使用 Atlas 作为 CDP 中集群的 Cloudera Navigator 数据管理。您可以选择手动将 Navigator 元数据迁移到 Atlas,因为 Navigator 元数据不会从 CDH 自动迁移到 CDP。Atlas 使用新操作“重建”现有集群资产和沿袭的元数据。但是,必须将 Navigator Managed 元数据标签和您在 CDH 中手动输入的任何元数据手动移植到 Atlas 业务元数据标签。如果您有使用 Navigator 的应用程序,则必须移植它们以使用 Atlas API。
笔记
Navigator审核信息未移植。要保留遗留审计信息,您可以保留一个“只读”的 Navigator 实例,直到不再需要它为止。您可能需要将旧集群上的 CM/Navigator 升级到更新版本以避免 EOL。
将内容从 Navigator 迁移到 Atlas 涉及 3 个步骤:
CDH 和 CDP 中有一些与 Impala 相关的配置差异。这些差异是由于 CDP 中为实现 Hive 和 Impala 之间的最佳互操作性而进行的更改,以改善用户体验。在将 Impala 工作负载从 CDH 迁移到 CDP 之前查看更改。
配置选项 | 范围 | CDH 6.x 中的默认值 | CDP 中的默认值 |
---|---|---|---|
DEFAULT_FILE_FORMAT | Query | TEXT | PARQUET |
hms_event_polling_interval_s | Catelogd | 0 | 2 |
ENABLE_ORC_SCANNER | Query | TRUE | TRUE |
use_local_catalog | Coordinator/Catalogd | false | true |
catalog_topic_mode | Coordinator | full | minimal |
配置选项 | 范围 | 默认值 |
---|---|---|
default_transactional_type | Coordinator | insert_only |
DEFAULT_TRANSACTIONAL_TYPE | Query | insert_only |
disable_hdfs_num_rows_estimate | Impalad | false |
disconnected_session_timeout | Coordinator | 900 |
PARQUET_OBJECT_STORE_SPLIT_SIZE | Query | 256 MB |
SPOOL_QUERY_RESULTS | Query | FALSE |
MAX_RESULT_SPOOLING_MEM | Query | 100 MB |
MAX_SPILLED_RESULT_SPOOLING_MEM | Query | 1 GB |
FETCH_ROWS_TIMEOUT_MS | Query | 不适用 |
DISABLE_HBASE_NUM_ROWS_ESTIMATE | Query | FALSE |
enable_insert_events | TRUE |
为了提高可用性和功能性,Impala 显着改变了表的创建。在 CDP 中,表的默认文件格式是 Parquet。
当您发出CREATE TABLE不带STORED AS子句的语句时,Impala 会创建 Parquet 表而不是像 CDH 中的 Text 表。
例如,如果您在未提供STORED AS 子句的情况下基于文本文件创建外部表 ,然后发出选择查询,则查询将在 CDP 中失败,因为 Impala 期望文件采用 Parquet 文件格式。
切换到 CDH 行为的步骤:
客户端可以在保持 HiveSever2 (HS2) 会话运行的同时与 Impala 断开连接,也可以通过提供 session_token 重新连接到同一会话。
默认情况下,断开连接的会话会在 15 分钟后终止。
切换到 CDH 行为的步骤:
您可以将该--disconnected_session_timeout标志调整为较低的值,以便快速清除断开连接的会话。
为了优化复杂或多表查询,Impala 可以访问有关数据量和值分布方式的统计信息。Impala 使用此信息来帮助并行化和分发查询工作。
Impala 查询计划器可以利用有关整个表和分区的统计信息。此信息包括物理特征,例如行数、数据文件数、数据文件的总大小和文件格式。对于分区表,数字是按分区计算的,并作为整个表的总数。此元数据存储在 Metastore 数据库中,可由 Impala 或 Hive 更新。
如果表上没有可用的统计信息,Impala 通过根据表中的行数估计表的大小来估计基数。默认情况下,此行为处于开启状态,并且在统计数据不可用的大多数情况下,应该会产生更好的计划。
对于某些边缘情况,当该表上不存在统计信息时,Impala 可能会生成错误的计划(与 CDH 中的相同查询相比),这可能会对查询性能产生负面影响。
切换到 CDH 行为的步骤:
将查询选项DISABLE_HDFS_NUM_ROWS_ESTIMATE设置 TRUE为禁用此优化。
为了符合 ANSI SQL,Impala 拒绝 CDP 中 SQL 查询中的保留字。保留字是不能直接用作标识符的字。如果需要将其用作标识符,则必须用反引号将其引用。
CDH 6 中添加了新的保留字。要从具有不同保留字集的 CDH 5 移植 SQL 语句,您必须使用 SQL 语法中的保留字更改使用对此类表或数据库的引用的查询。
CREATE TABLE select (x INT): fails
CREATE TABLE `select` (x INT): succeeds
在将您的工作负载从 CDH 版本 5.13-5.16 或 CDH 版本 6.1 或更高版本迁移到CDP Private Cloud Base或 CDP Public Cloud后,查看可能影响 Impala 的 Impala 语法或服务的更改。您在 CDH 版本 5.11-5.16 或 6.1 或更高版本中使用的 Impala 版本更改为CDP Private Cloud Base 中的Impala 3.4 。
在 CDP 中,Impala 默认使用 DECIMAL V2。
要继续使用该DECIMAL类型的第一个版本以实现查询的向后兼容性,请将DECIMAL_V2查询选项设置为 FALSE:
SET DECIMAL_V2=FALSE;
以符合SQL标准,帕拉不再执行别名取代在的子表达式GROUP BY,HAVING和ORDER BY。
下面的示例引用sum(ss_quantity)了 ORDER BY子句中的实际列而不是别名,Total_Quantity_Purchased 并且还引用ss_item_sk了GROUP BY子句中的实际列而不是别名,Item因为子表达式中不再支持别名。
select
ss_item_sk as Item,
count(ss_item_sk) as Times_Purchased,
sum(ss_quantity) as Total_Quantity_Purchased
from store_sales
group by ss_item_sk
order by sum(ss_quantity) desc
limit 5;
+-------+-----------------+--------------------------+
| item | times_purchased | total_quantity_purchased |
+-------+-----------------+--------------------------+
| 9325 | 372 | 19072 |
| 4279 | 357 | 18501 |
| 7507 | 371 | 18475 |
| 5953 | 369 | 18451 |
| 16753 | 375 | 18446 |
+-------+-----------------+--------------------------+
该查询选项PARQUET_ARRAY_RESOLUTION控制基于索引的分辨率在Parquet数组的行为。在 Parquet 中,您可以使用 2 级或 3 级表示法来表示数组。PARQUET_ARRAY_RESOLUTION 的默认值为 THREE_LEVEL 以匹配 Parquet 标准 3 级编码。有关详细信息,请参阅Parquet_Array_Resolution 查询选项。
默认情况下启用集群提示,它将按 HDFS 和 Kudu 表中的分区列添加本地排序到查询计划。noclustered 提示可防止在具有排序列的表中聚集,但会被忽略并显示警告。
已删除以下查询选项:
删除了启动 Impala Shell的选项refresh_after_connect。
该EXTRACT和DATE_PART功能以下列方式改变:
如果您从 CDH 6.1 或更高版本升级并指定端口作为SHUTDOWN命令的一部分 ,请更改端口号参数以使用 Kudu7: RPC (KRPC) 端口在 Impala 代理之间进行通信。
升级后客户端连接超时的默认行为发生变化。
在 CDH 6.2 及更低版本中,如果--fe_service_threads已分配指定的最大线程数,客户端将无限期地等待以打开新会话。
升级后,服务器需要一个新的启动标志, --accepted_client_cnxn_timeout来控制对新连接请求的处理。配置的服务器线程数不足以满足工作负载。
如果--accepted_client_cnxn_timeout > 0,则在指定的超时后拒绝新的连接请求。
如果--accepted_client_cnxn_timeout=0,客户端无限期地等待连接到 Impala。这将设置升级前行为。
默认超时为 5 分钟。
Impala 支持 Apache Hadoop 中使用的多种文件格式。它还可以加载和查询其他 Hadoop 组件(如 Hive)生成的数据文件。从任何CDH 5.x 版本升级到CDP Private Cloud Base 7.1 后,如果使用默认在Hive 中创建RC 文件 LazyBinaryColumnarSerDe,Impala 将无法读取RC 文件。但是,您可以设置hive.default.rcfile.serdeto 的配置选项ColumnarSerDe来维护 hive 和 impala 之间的互操作性。
从 CDH 升级到 CDP 后,所有 Impala 协调器默认设置use_local_catalog为按需模式,True以便 Impala 协调器从目录中提取元数据并将其缓存在本地。这减少了协调器的内存占用并自动执行缓存驱逐。
在 CDP 中,默认情况下设置catalog_topic_mode为minimal为所有协调器启用按需元数据。
将工作负载从任何 CDH 5.x 版本迁移到CDP Private Cloud Base 7.1 后,重新计算 Impala 的统计数据。尽管 CDH 5.x 统计信息在升级后可用,但在重新计算统计信息之前,查询不会从新功能中受益。
由于通过 statestore 进行传播,目录元数据可能会变大并导致网络流量过多。--compact_catalog_topic引入该标志是为了通过压缩目录主题条目以减少其序列化大小来缓解此问题。这以少量 CPU 时间为代价节省了网络带宽。默认情况下启用此标志。
在将工作负载从 CDH 迁移到 CDP 公共云之前选择合适的云环境规模对于保持性能特征至关重要。在为您的环境选择 CDP 容量时,需要考虑查询工作负载中的多个因素。
在进入大小细节之前,了解 PC 和本地主机之间的核心硬件差异很重要:
CDH主机推荐 | AWS R5D.4xlarge 实例 | |
---|---|---|
CPU cores | 20-80 | 16 |
Memory | 128GB 最低 推荐 256GB+ | 128 |
Network | 最低 10Gbps 推荐 40Gbps | 高达 10Gbps |
Ephemeral Storage | 12 个 2TB 驱动器(1000MBps 连续) | 2 个 300GB NVMe SSD(1100MBps 连续) |
Network Storage | 不适用 | gp2 每卷 250 MB/s |
R5D.4xlarge 实例与 CDH 推荐的 CPU、内存和带宽规格非常匹配,因此建议作为 CDP 的实例类型。但是,AWS 临时存储不能用作主数据库存储,因为它是暂时的且容量不足。这种核心差异需要不同的策略来实现良好的扫描性能。
在迁移之前,必须计划扩展和并发。在公共云环境中,能够根据工作负载需求弹性地获得更好的扩展性和并发性,使系统能够以低于您计划的最大限制的成本运行。如果您将目标环境配置为将峰值工作负载作为恒定的默认配置进行配置,则当系统需求低于该水平时,您可能会出现成本超支。
在 CDP 中,T-Shirt 大小定义了单个集群的 executor 实例数量,从而确定了单个查询的内存限制和性能。相反,仓库大小参数和自动缩放决定了分配多少集群来支持并发查询执行。
尺寸 | 执行者数量 |
---|---|
X-Small | 2 |
Small | 10 |
Medium | 20 |
Large | 40 |
T-Shirt 尺寸必须至少足够大,以支持单个查询的最高内存使用量。在大多数情况下,如果查询之间的工作集具有共性,则大小不需要更大,但可以提供更好的数据缓存。增加 T-Shirt 尺寸可以直接增加单用户容量,也可以增加多用户容量。这是因为来自更大集群的额外内存和资源允许处理更大的数据集,并且还可以通过共享资源来支持并发查询执行。选择太小的大小会导致数据缓存不佳、中间结果溢出或内存分页。选择太大的大小可能会由于空闲的执行程序而导致过多的 PC 运行成本。
根据现有硬件选择 T 恤尺寸时要考虑的一个警告是,在您的本地环境中的同一主机上运行的其他进程是什么。特别是 HDFS 或其他本地托管的文件系统可能会消耗大量资源。您可以为 CDP 选择较小的大小,因为这些进程将被隔离在 CDP 环境中它们自己的 pod 中。查看 CM 每进程指标以隔离 CDP 将放在执行程序实例上的 impalad 和 Impala 前端 Java 进程并在整个集群中聚合这些指标可能会有所帮助。由于元数据缓存,java 进程可能会累积大量内存使用。
目标环境的大小对应于系统可以处理的峰值并发。并发是可以同时运行的查询数。
每个执行程序组可以同时运行 12 个查询,并且可以使用自动缩放功能透明地处理偶尔出现的峰值。导致添加更多执行程序组的自动缩放将查询并发性加倍到 24。通过添加更多集群来扩展仓库允许运行更多并发查询,但不会提高单用户容量或性能。这是因为来自附加集群的执行程序对该集群是私有的。并发执行的查询将被路由到不同的集群并独立执行。通过更改自动缩放参数,可以更改集群数量以匹配并发使用情况。
目前 CDH 支持计算节点上的缓存机制,用于缓存从远程文件系统读取的工作集,例如远程 HDFS 数据节点、S3、ABFS 和 ADLS。这抵消了输入/输出性能差异。
在CDP公有云中,经常访问的数据缓存在SSD上的存储层,以便后续查询可以快速检索,从而提升性能。每个执行程序最多可以有 200 GB 的缓存。因此,中等大小的缓存可以保留 200 * 20 = 4 TB 的数据。对于列格式(例如 ORC),缓存中的数据会被解压但不会被解码。如果热数据集的预期大小为 6 TB,大约需要 30 个执行器,则可以选择过度配置(选择大的)以确保完全缓存覆盖;或配置不足(选择一种介质)以降低成本,但会降低缓存命中率。
笔记
Impala 数据缓存使用基于 LIRS 的算法。
如果您在环境中部署了 WXM,则可以使用 WXM 为目标环境生成容量计划。要构建满足您的容量要求的自定义云环境,您必须分析您现有的 CDH 架构、了解您的业务需求并生成容量计划。
您应该如何调整impala 计算集群的大小(在Datahub 或CDW 服务中)可能会有所不同,因为计算节点大小(CPU 和RAM)与您当前在CDH 中使用的不同。如果您当前使用的是 20 节点的 CDH 集群,这并不一定意味着您将需要 20 节点的 Datahub 集群或 CDW 中的 20 节点的 Impala 虚拟仓库。
使用 WXM 的好处
使用 WXM 的先决条件
在设置 Cloudera Manager Telemetry Publisher 服务以将诊断数据发送到 Workload XM 之前,您必须确保您拥有正确版本的 Cloudera Manager 和 CDH。
要将 Workload XM 与 Cloudera Manager 管理的 CDH 集群一起使用,您必须具有以下版本:
笔记
无论您是管理 CDH 5.x 还是 CDH 6.x 集群,Workload XM 在 Cloudera Manager 6.0 上都不可用。
在确认您拥有正确版本的 Cloudera Manager 和 CDH 后,您必须配置数据编辑和防火墙。
有关配置防火墙的信息,请参阅为 Workload XM 配置防火墙。
有关在发送到 WXM 之前编辑数据的信息,请参阅诊断数据的编辑功能
如果您的环境中部署了 Cloudera 工作负载管理器,请按照高级步骤生成容量计划并将 Impala 工作负载迁移到云。
评估此迁移可能带来的性能变化。如果您计划将当前 Impala 工作负载迁移到公共云,请执行性能影响分析以评估此迁移将如何影响您。
本地 CDH 主机通常连接大量 IO 硬件以支持 HDFS 上的大型扫描操作,可能为许多 SSD 设备和专用互连提供每秒 10 GB 的带宽。由于云实例的瞬态特性和成本结构,这种模型对于 CDP 中的主存储并不实用。
与许多 AWS 数据库产品一样,CDP 中的 HFS 使用 EBS 卷进行持久化。EBS gp2 的带宽限制为 250MB/秒/卷。此外,如果带宽超过阈值,EBS 可能会在延长的持续时间内将吞吐量限制为零。由于这些限制,在许多情况下依靠直接 IO 到 EBS 来提高性能是不切实际的。EBS 也通过共享网络硬件进行路由,并且可能由于冗余而具有额外的性能限制。
为了缓解 PC IO 带宽差异,严重依赖临时存储来缓存工作集。虽然这是从 CDH 继承的现有 Impala 行为,但转到主存储的代价要高得多,因此必须在本地缓存更多数据以保持同等性能。由于临时存储也用于中间结果的溢出,因此重要的是避免可能竞争带宽的过度溢出。
原文链接:https://docs.cloudera.com/cdp-private-cloud-upgrade/latest/data-migration/topics/cdp_data_migration_impala_overview.html