这是CDH/HDP/Apache Hadoop迁移到CDP系列的第一篇博客,如对迁移感兴趣,请关注该系列博客。
Replication Manager 可用于将 Hive、Impala 和 HDFS 工作负载迁移到 CDP私有云基础。
功能
Replication Manager 是一种用于在企业数据云内的环境之间复制和迁移数据的服务。它是一种简单、易于使用且功能丰富的数据移动功能,可将现有数据和元数据移动到云中,以推动新的工作负载。
支持的场景
- CDH 到CDP 私有云基础
Replication Manager概述
Cloudera Manager 提供了一个集成的、易于使用的管理解决方案,用于在 Hadoop 平台上启用数据保护。Replication Manager 使您能够跨数据中心复制数据以用于灾难恢复场景。
复制可以包括存储在 HDFS 中的数据、存储在 Hive 表中的数据、Hive 元存储数据以及与在 Hive 元存储中注册的 Impala 表关联的 Impala 元数据(目录服务器元数据)。当关键数据存储在 HDFS 上时,Cloudera Manager 有助于确保数据始终可用,即使在数据中心完全关闭的情况下也是如此。
对于Hbase数据,还可以使用 HBase shell 来进行复制。(Cloudera Manager目前不管理 HBase的复制。)
Replication Manager 需要 Cloudera Enterprise 许可证。
您还可以使用 Cloudera Manager 来安排、保存和恢复 HDFS 目录和 HBase 表的快照。
在 Cloudera Manager 管理控制台中Cloudera Manager提供如下关键功能:
- 选择- 选择对您的业务运营至关重要的数据集。
- 调度- 为数据复制和快照创建适当的调度。根据您的业务需求触发复制和快照。
- 监控- 通过中央控制台跟踪快照和复制作业的进度,并轻松识别无法传输的问题或文件。
- 警报- 在快照或复制作业失败或中止时发出警报,以便快速诊断问题。
Replication Manager 在HDFS和 Hive 中始终如一地运行:
- 您可以在 HDFS 的文件或目录以及 Hive 的外部表上设置它——无需手动将 Hive 数据集转换为 HDFS 数据集,反之亦然。Hive Metastore 信息也被复制。
- 依赖于存储在 Hive 中的外部表定义的应用程序在表定义更新时对副本和源进行操作。
- 在HDFS用户应该有权访问所有数据集Hive,包括所有操作。否则,Hive 导入会在复制过程中失败。要提供访问权限,请执行以下步骤:
- 登录Ranger管理界面
- 在hdfs中的Hadoop_SQL部分下提供对hdfs用户的 “ all-database, table, column ”权限。
在实际复制整个数据集之前,您还可以执行“试运行(Dry run)”以验证配置并了解整体操作的成本。
CDP 私有云基础上的 Replication Manager 支持矩阵
支持列表包含 Replication Manager 中跨功能的兼容性信息。Replication Manager 支持 HDFS 和 Hive 数据复制。该矩阵还列出了 CDH、CDP Private Cloud Base 和 Cloudera Manager 版本支持的版本。
功能 | 支持的最低 Cloudera Manager 版本 | 最低支持的 CDH 版本 | 支持的服务 |
---|---|---|---|
复制 | Cloudera Manager 5.14 | CDH 5.13 | HDFS、Hive、Impala |
与 Amazon S3 之间的复制* | Cloudera Manager 5.14 | CDH 5.13 | HDFS、Hive、Impala |
快照 | Cloudera Manager 5.15 | CDH 5.15 | HDFS、Hive、Impala |
与 Microsoft ADLS Gen1 之间的复制 | Cloudera Manager 5.15、5.16、6.1 | CDH 5.13 | HDFS、Hive、Impala |
复制到 Microsoft ADLS Gen2 (ABFS) | Cloudera Manager 6.1 | CDH 5.13 | HDFS、Hive、Impala |
*当 S3 配置为使用 SSE-KMS 时,Replication Manager 不支持 S3 作为源或目标。
Note
从CDP Private Cloud Base 7.0.3 到 7.1.6(源集群版本)都支持 Replication Manager 服务。Cloudera Manager 版本将从 7.0.3 开始。
从 Cloudera Manager 6.1.0 开始,Replication Manager 在复制期间忽略 Kudu 支持的 Hive 表。此变更不会影响功能,因为 Replication Manager 不支持 Kudu 支持的表。进行此更改是为了防止由于 Hive Mestastore、Impala 和 Kudu 的交互方式导致数据丢失。
支持的复制场景
版本
要将数据复制到 Cloudera Manager 7.x 管理的集群,或者从Cloudera Manager 7.x 管理的集群中复制数据,源或目标集群必须由 Cloudera Manager 5.14 或更高的版本来管理。请注意,某些功能在 Cloudera Manager 5.14.0 及更高版本或Cloudera Manager 6.0.0 及更高版本中可能不可用。
Kerberos
在集群上使用 Kerberos 身份验证时,Replication Manager 支持以下复制方案:
- 安全来源到安全目的地。
- 不安全的源到不安全的目的地。
- 不安全来源到安全目的地。请记住以下要求:
- 在目标集群具有多个源集群的复制场景中,所有源集群必须是安全的或不安全的。Replication Manager 不支持从安全和不安全源集群的混合复制。
- 目标集群必须运行 Cloudera Manager 7.x 或更高版本。
- 源集群必须运行兼容的 Cloudera Manager 版本。
- 这种复制方案需要额外的配置。有关更多信息,请参阅从不安全集群复制到安全集群。
云存储
Replication Manager 支持与 Amazon S3、Microsoft Azure ADLS Gen1 和 Microsoft Azure ADLS Gen2 (ABFS) 之间的复制。
传输层安全 (TLS)
您可以将 TLS 与 Replication Manager 结合使用。此外,Replication Manager 支持为非 Hadoop 服务(Hive/Impala)启用 TLS 和禁用 TLS Hadoop 服务(例如 HDFS、YARN 和 MapReduce)的复制场景。
Sentry到Ranger复制
使用 HDFS 和 Hive 复制策略时要执行 Sentry 到 Ranger 复制,您必须在源集群上安装 Cloudera Manager 版本 6.3.1 及更高版本,并在目标集群上安装 Cloudera Manager 版本 7.1.1 及更高版本。
当源集群启用了 Sentry 并且您要运行 HDFS 复制策略时,请使用hdfs用户运行复制策略。复制策略将复制的文件和表的权限复制到目标集群。要使用任何其他用户帐户,请确保将用户帐户配置为在复制期间绕过 Sentry ACL。
创建 Hive 复制策略时,请选择适当的选项以确保将 Sentry 权限迁移到 Ranger 权限。Replication Manager使用 authzmigrator 工具在 Hive 复制期间将数据从 Sentry 移动到 Ranger。
不支持的复制方案
版本
不支持Cloudera Manager 6 受管集群和 Cloudera Manager 5.14.0 之前版本的集群之间进行复制。
Note
不支持在 HDP 和 Cloudera Manager 7.x 之间进行复制。
Hive 复制
Replication Manager 不支持托管表到托管表的复制。它将托管表从源集群转换为CDP 私有云基础集群的外部表。Replication Manager 将复制的表存储为外部表。
Kerberos
在集群上使用 Kerberos 身份验证时,不支持从安全源到不安全目标的复制。
Ranger
不支持 Ranger 到 Ranger 复制。
Apache Knox
如果 Cloudera Manager 配置了 Knox,Replication Manager 将不起作用。
Replication Manager 的端口要求
确保以下端口在源主机上是开放的并可访问的,以允许Cloudera Manager 服务器与 HDFS、Hive、MapReduce 和 YARN 主机之间的源和目标进行通信。
Replication Manager 的端口详细信息
Service | Default Port |
---|---|
Cloudera Manager Admin Console HTTP | 7180 |
Cloudera Manager Admin Console HTTPS (with TLS enabled) | 7183 |
Cloudera Manager Agent | 9000 |
HDFS NameNode | 8020 |
Key Management Server (KMS) | 16000 |
HDFS DataNode | 9866 |
NameNode WebHDFS | 9870 |
YARN Resource Manager | 8032 |
DataNode Secure | 1004 |
NameNode Secure WebHDFS | 9871 |
Hive Metastore | 9083 |
Impala Catalog Server | 26000 |
数据复制
在使用 Replication Manager 之前,您必须了解有关数据复制的一些要求。
Cloudera 复制许可证要求
您必须拥有对应的许可证才能在 Replication Manager 中执行您的任务。
复制包含数千个文件和子目录的目录
在具有数千个文件和子目录的目录中复制数据之前,请在hadoop-env.sh 文件中增加heap size。
- 在目标 Cloudera Manager 实例上,转到 HDFS 服务页面。
- 单击配置选项卡。
- 展开 Scope,然后选择HDFS 服务名称(Service-Wide)选项。
- 展开CategoryAdvanced并选择 Advanced。
- 找到HDFS Replication Environment Advanced Configuration Snippet (Safety Valve) for hadoop-env.sh属性
- 通过添加键值对来增加堆大小,例如:HADOOP_CLIENT_OPTS=-Xmx1g。在此示例中,1g将堆大小设置为 1 GB。此值应根据要复制的文件和目录的数量进行调整。
- 输入更改原因,然后单击保存更改以提交更改。
Replication Manager日志保留
默认情况下,Cloudera Manager 会将 Replication Manager 日志保留 90 天。您可以更改 Cloudera Manager 保留日志的天数或完全禁用日志保留。
- 转到Cloudera Manager > HDFS >配置部分。
- 在 Cloudera Manager 管理控制台中,搜索以下属性:Backup and Disaster Log Retention.
- 输入要保留日志的天数。要禁用日志保留,请输入 -1。
重要
自动日志过期也会清除自定义设置的复制日志和元数据文件。这些路径由日志路径和目录设置,用于根据调度字段显示在 UI 上的元数据参数。用户有责任设置有效路径(例如,指定当前用户可写的合法 HDFS 路径)并为每个复制策略维护此信息。
从不安全集群复制到安全集群
您可以使用 Replication Manager 将数据从不安全的集群(不使用 Kerberos 身份验证)复制到安全集群(使用 Kerberos 的集群)。请注意,反过来是不正确的。
Replication Manager 不支持从安全集群复制到不安全集群。要执行复制,目标集群必须由 Cloudera Manager 6.1.0 或更高的版本进行管理。源集群必须运行 Cloudera Manager 5.14.0 或更高版本才能复制到 Cloudera Manager 6。
Note
在目标集群有多个源集群的复制场景中,所有源集群必须是安全的或不安全的。Replication Manager 不支持从安全和不安全源集群的混合复制。
要启用从不安全集群到安全集群的复制,您需要在源集群和目标集群的所有主机上都存在一个用户。创建复制调度时,在Run As Username字段中指定此用户。
- 在源或目标集群中的主机上,使用以下命令添加用户:
sudo -u hdfs hdfs dfs -mkdir -p /user/<username>
例如,以下命令创建一个名为 milton 的用户:
代码语言:javascript复制sudo -u hdfs hdfs dfs -mkdir -p /user/milton
- 使用以下命令设置用户目录的权限:
sudo -u hdfs hdfs dfs -chown <username> /user/username
例如,以下命令使 milton 成为 milton 目录的所有者:
代码语言:javascript复制sudo -u hdfs hdfs dfs -chown milton /user/milton
- 使用以下命令为您在步骤 1 中创建的用户创建supergroup组:
groupadd supergroup
- 将您在步骤 1 中创建的用户添加到您创建的组中:
usermod -G supergroup <username>
例如,将 milton 添加到名为 supergroup 的组中:
代码语言:javascript复制usermod -G supergroup milton
- 对源和目标集群中的所有主机重复此过程,以便用户和组存在于所有主机上。
完成此过程后,请在创建复制策略时在Run As Username字段中指定您创建的用户。
指定复制源
您必须分配源集群来复制数据。
最低要求角色: 集群管理员 (也由完全管理员提供)。
您登录的 Cloudera Manager Server 是使用该 Cloudera Manager 实例设置的复制目标。在此目标 Cloudera Manager 实例的管理控制台中,您可以指定peer Cloudera Manager Server 作为 HDFS 和 Apache Hive 数据来源进行复制。
配置peer关系
您必须将 Cloudera Manager 与peer连接,然后测试连接。
如果您的集群使用 SAML 身份验证,请参阅在配置peer之前使用 SAML 身份验证配置peer。
- 在 Cloudera Manager 中,选择左侧导航栏中的复制>peer。如果没有现有的peer,除了一条短消息之外,您只会看到一个添加peer点按钮。如果peer已存在,则它们会显示在“peer”列表中。
- 单击添加peer。
- 在“添加peer”对话框中,提供名称、要复制的数据的 Cloudera Manager 服务器源的peer URL(包括端口)以及该服务器的登录凭据。
重要
分配给源服务器上的登录名的角色必须是用户管理员或完全管理员。
Cloudera 建议使用 TLS/SSL。如果 URL 方案是 http 而不是 https,则会显示警告。将两个peer配置为使用 TLS/SSL 后,将远程源 Cloudera Manager TLS/SSL 证书添加到本地 Cloudera Manager 信任库,反之亦然。
- 单击对话框中的添加按钮以创建peer关系。
peer被添加到peer列表中。Cloudera Manager 会自动测试 Cloudera Manager Server 和peer之间的连接。您也可以单击测试连接来测试连接。测试连接还测试集群的 Kerberos 配置。
修改peer
您可以修改或删除peer。
- 要编辑peer,请选择peer点并单击操作>编辑。
- 进行更改。
- 单击更新peer以保存更改。
- 要删除peer,请选择peer并单击操作>删除。
使用 SAML 身份验证配置peer
如果您的集群使用SAML 身份验证,请在创建peer点之前执行以下操作。
- 创建具有用户管理员或完全管理员角色的Cloudera Manager 用户帐户。
您还可以使用具有这些角色之一的现有用户。由于您只会使用此用户来创建peer关系,因此您可以在添加peer后删除该用户帐户。
- 创建或修改peer。
- 删除刚刚创建的Cloudera Manager 用户帐户。
HDFS 复制策略
本节讨论与 HDFS 数据相关的复制。
最低要求角色: 复制管理员(也由完全管理员提供)
HDFS 复制使您能够将 HDFS 数据从一个 HDFS 服务复制到另一个服务,根据指定的复制策略将源服务上的数据集与目标服务上的数据集 同步。其中:目标服务必须由Cloudera Manager Server 管理,通过CM设置复制,而源服务可以由同一服务器或peer Cloudera Manager Server 管理。您还可以通过指定不同的源目录和目标目录来复制集群内的 HDFS 数据。
远程的Replication Manager在复制文件时自动将 HDFS 元数据复制到目标集群。HDFS 元数据只需要在本地备份。
源数据
当复制作业运行时,请确保源目录未被修改。
复制期间添加的文件不会被复制。如果在复制期间删除文件,复制将失败。
此外,确保目录中的所有文件都已关闭。如果源文件打开,复制将失败。如果您不能确保关闭所有源文件,您可以将复制配置为在出现错误的情况下继续进行。取消选中HDFS 复制的Abort on Error选项。
复制完成后,您可以查看复制日志以识别打开的文件。确保在下一次复制之前关闭这些文件。
网络延迟和复制
集群之间的高延迟会导致复制作业运行得更慢,但不会导致它们失败。
为获得最佳性能,源集群 NameNode 和目标集群 NameNode 之间的延迟应小于 80 毫秒。(您可以使用Linux ping命令测试延迟 )。在延迟高达 360 毫秒时,Cloudera 已成功测试了的复制。随着延迟的增加,复制性能会下降。
性能和可扩展性限制
HDFS 复制有一些限制。
- 单个复制作业的最大文件数:1 亿。
- 运行频率超过 8 小时一次的复制策略支持的最大文件数:1000 万。
- 复制作业的吞吐量取决于源集群和目标集群的绝对读写吞吐量。
- 需要定期重新平衡您的 HDFS 集群,以实现高效的复制操作。
Note
Cloudera Manager 提供可用于诊断 HDFS 复制性能的可下载数据。
从启用 Sentry 的集群进行 HDFS 复制
在启用 Sentry 的源集群上运行 HDFS 复制策略时,复制策略可以复制文件和表及其权限。需要 Cloudera Manager 6.3.1 及更高版本才能在启用 Sentry 的源集群上运行 HDFS 复制策略。
当您要在启用 Sentry 的源集群上运行 HDFS 复制策略时,您必须使用hdfs用户。如果要使用不同的用户帐户,则必须配置用户帐户以在复制过程中绕过 Sentry ACL。
当 Sentry 不可用或 Sentry 不管理资源(如源集群中的文件或目录)的授权时,HDFS 使用其内部 ACL 来管理资源授权。
当源集群启用了 Sentry 并且您使用hdfs用户名运行 HDFS 复制策略时,HDFS 会将 Sentry 中为复制的文件和表配置的 ACL 复制到目标集群。
当启用 Sentry 并且您使用不同的用户名运行 HDFS 复制策略时,Sentry ACL 和 HDFS 内部 ACL 都会被复制,这会导致目标集群中的 HDFS 元数据不正确。如果 Sentry ACL 与 HDFS ACL 不兼容,则复制作业将失败。
为避免非hdfs 用户的HDFS 和 Sentry ACL 之间的兼容性问题,您必须完成以下步骤:
- 创建一个仅用于Replication Manager作业的用户帐户,因为此用户将绕过 Sentry ACL。
例如,创建一个名为bdr-only-user 的用户。
- 要在复制期间绕过 Sentry ACL,请在源集群上执行以下步骤:
- 在 Cloudera Manager 管理控制台中,选择Clusters > <HDFS service>。
- 选择配置并搜索以下属性:NameNode Advanced Configuration Snippet (Safety Valve) for hdfs-site.xml.
- 添加以下属性:Name - dfs.namenode.inode.attributes.provider.bypass.users Value - 输入[***USERNAME, USERNAME@REALMNAME***],其中 [***USERNAME***] 是用户您在步骤 1 中创建的 [***REALMNAME***] 是 Kerberos 领域名称。
例如,如果在Realm上的用户名是bdr-only-user,则输入bdr-only-user, bdr-only-user@ElephantRealm。
- 重新启动 NameNode。
- 在目标集群上重复步骤 2。
创建 HDFS 复制策略时,请在“Run As Username”和“Run on Peer as Username”(如果可用)字段中指定您在步骤 1 中创建的用户。
Note
在运行所用用户名字段被用来发动MapReduce工作拷贝数据。 Run on Peer as Username字段用于在源上运行副本列表,如果与Run as Username不同。
重要
确保将Run on Peer的值设置为 Username与Run as Username相同,否则 Replication Manager 从源读取 ACL 作为hdfs,它将 Sentry 提供的 ACL 拉到目标集群并将它们应用到 HDFS 中的文件。它可能导致在目标集群中额外使用 NameNode 堆。
基于快照差异的复制指南
默认情况下,Replication Manager 使用快照差异(“diff”)通过比较 HDFS 快照并仅复制源目录中更改的文件来提高性能。
虽然 Hive 元数据需要完整复制,但存储在 Hive 表中的数据可以利用基于快照差异的复制。
要使用此功能,请遵循以下准则:
- 源和目标集群必须由 Cloudera Manager 5.15.0 或更高版本管理。
- 源和目标集群运行 CDH 5.15.0 或更高版本、5.14.2 或更高版本或 5.13.3 或更高版本。
- 验证 HDFS 快照是不可变的。
在 Cloudera Manager 管理控制台中,转到Clusters > HDFS service > Configuration部分并搜索Enable Immutable Snapshots。
- 不要对全局路径使用快照差异。它没有针对全局路径进行优化。
- 将快照根目录在层次结构中设置得尽可能低。
- 要使用快照差异功能,配置为运行作业的用户需要是超级用户或快照根目录的所有者,因为他们 run-as-user必须具有列出快照的权限。
- 决定您是希望 Replication Manager 在快照差异失败时中止还是继续复制。如果您选择将 Replication Manager 配置为在遇到错误时继续复制,Replication Manager 将执行完整的复制。请注意,由于执行完整复制,因此继续复制可能会导致更长的持续时间。
- 当以下一项或多项更改时,Replication Manager 执行完整复制:删除策略、保留策略、目标路径或排除路径。
- 从路径两者中复制策略的源和目的地簇必须是snapshottable根目录下或应snapshottable为策略来使用快照的diff运行。
- 如果源数据包含加密子目录,请在复制策略中创建排除正则表达式以在复制期间排除该子目录。创建另一个复制策略来复制加密的子目录。这是因为,如果源数据中存在加密的子目录,则基于快照差异的复制可能会失败。
- 如果创建 Hive 复制策略来复制数据库,请确保该数据库中表的所有 HDFS 路径都是快照表或位于快照表根目录下。例如,如果正在复制的数据库具有外部表,则所有外部表 HDFS 数据位置也应该是可快照的。否则可能会导致Replication Manager无法生成差异报告。如果没有差异报告,Replication Manager 不使用快照差异。
- 每次复制后,Replication Manager 都会在源集群上保留一个快照。使用源集群上的快照副本,Replication Manager 为下一个复制周期执行增量备份。只有在以下情况下,Replication Manager 才会在源集群上保留快照:
- Cloudera Manager 中的源和目标集群为 5.15 及更高版本
- 源和目标 CDH 分别为 5.13.3 、5.14.2 和 5.15
配置 HDFS 数据的复制
在调度 HDFS 数据复制之前,您必须设置集群。
- 验证您的集群是否符合支持的复制方案之一。
- 如果您对源集群和目标集群使用不同的 Kerberos 主体,请将目标主体添加为源集群上的代理用户。例如,如果您使用hdfssrc源集群上的hdfsdest主体和目标集群上的主体,请将以下属性添加到源 集群上core-site.xml属性的 HDFS 服务集群范围高级配置片段(安全阀):
<property>
<name>hadoop.proxyuser.hdfsdest.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hdfsdest.hosts</name>
<value>*</value>
</property>
如果源集群由与目标集群不同的 Cloudera Manager 服务器管理,则部署客户端配置并重新启动源集群上的所有服务。
- 从Cloudera Manager >复制>复制策略页面,单击创建复制策略。
- 选择HDFS 复制策略。
出现 创建 HDFS 复制策略 对话框。
- 选择 常规 选项卡以配置以下内容:
- 立即-立即运行调度。
- 一次- 在未来运行一次调度。设置日期和时间。
- 重复- 将来定期运行调度。设置日期、时间和运行间隔。
- 单击 名称 字段并为复制策略添加唯一名称。
- 单击 源 字段并选择源 HDFS 服务。您可以选择由peer Cloudera Manager Server 管理的 HDFS 服务、本地 HDFS 服务(由您登录的管理控制台的 Cloudera Manager Server 管理)。
- 输入 要复制的目录(或文件)的 源路径。
- 单击目标字段并从您登录的管理控制台的 Cloudera Manager Server 管理的 HDFS 服务中选择目标 HDFS 服务。
- 输入应保存源文件的目标路径。
- 选择一个时间表:
- 在用户名运行字段中输入运行复制作业的用户。默认情况下,这是hdfs. 如果要以其他用户身份运行作业,请在此处输入用户名。如果您使用的是Kerberos,您必须在此处提供一个用户名,并且必须是一个ID大于1000的用户名。(您也可以通过YARN或MapReduce服务中的min.user.id属性来配置最小用户ID号.) 验证运行该作业的用户是否有一个主目录 /user/username,在 HDFS 中由 username:supergroup 拥有。此用户必须具有从源目录读取和写入目标目录的权限。
请注意以下事项:
- 用户不得出现在 YARN 配置中使用禁止系统用户属性指定的禁止用户列表中(转到 YARN 服务,选择配置选项卡并搜索属性)。出于安全考虑,默认情况下禁止 hdfs 用户运行 YARN 容器。
- 通过将用户添加到由“允许的系统用户”属性指定的用户“白名单”,可以覆盖对大于 1000 的用户 ID 的要求。(转到 YARN 服务,选择配置选项卡并搜索属性。)
- 选择“资源”选项卡以配置以下内容:
- MapReduce – 公平调度程序:mapred.fairscheduler.pool
- MapReduce – 容量调度程序: 队列名称
- Yarn – mapreduce.job.queuename
- 调度程序池- (可选)在字段中输入资源池的名称。您输入的值由您在 Cloudera Manager 为复制执行 MapReduce 作业时指定的MapReduce 服务使用。作业使用以下属性之一指定值:
- 最大Map槽数- 每个映射器的Map槽数限制。默认值为 20。
- 最大带宽- 每个Map的带宽限制。默认值为 100 MB。
- 复制策略- 文件复制任务应该静态还是动态地分布在映射器之间。(默认为Dynamic。)静态复制预先 在映射器之间分配文件复制任务,以实现基于文件大小的统一分配。动态复制将文件复制任务以小集合分配给映射器,当每个映射器完成其任务时,它会动态获取并处理下一组未分配的任务。
- 选择高级选项选项卡,配置以下内容:
- 添加排除单击链接以从复制中排除一个或多个路径。将显示基于正则表达式的路径排除字段,您可以在其中输入基于正则表达式的路径。添加排除项时,请包括正则表达式的快照相对路径。例如,要排除 /user/bdr目录,请使用以下正则表达式,其中包括bdr目录的快照:
.*/user/.snapshot/. /bdr.*
要从全局源路径中的复制中排除顶级目录,您可以指定正则表达式的相对路径而不包括 .snapshot在路径中。例如,bdr要从复制中排除 目录,请使用以下正则表达式:
代码语言:javascript复制.*/user /bdr.*
Note
当您设置路径排除过滤器(并将删除策略设置为删除)时,目标集群上的路径应该保持不变。但是,当前的行为是,即使目录/文件与排除过滤器匹配,也会在目标集群上删除它们。
您可以添加多个要排除的正则表达式。
- MapReduce 服务- 要使用的 MapReduce 或 YARN 服务。
- 日志路径-日志的备用路径。
- 描述- 复制策略的描述。
- 错误处理- 您可以选择以下内容:
- 跳过校验和检查- 是否跳过对复制文件的校验和检查。如果选中,则不会验证校验和。默认情况下检查校验和。
重要的
在以下情况下,您必须跳过校验和检查以防止由于校验和不匹配而导致复制失败:
- 从源集群上的加密区域复制到目标集群上的加密区域。
- 从源集群上的加密区域复制到目标集群上的未加密区域。
- 从源集群上的未加密区域复制到目标集群上的加密区域。
校验和有两个用途:
- 跳过已复制文件的复制。如果选择Skip Checksum Checks,如果源集群和目标集群之间的文件长度和修改时间相同,则复制作业将跳过复制文件。否则,作业会将文件从源复制到目标。
- 冗余验证数据的完整性。但是,不需要校验和来保证集群之间的准确传输。HDFS 数据传输在传输过程中受校验和保护,存储硬件也使用校验和来确保数据被准确存储。这两种机制协同工作以验证复制数据的完整性。
- 跳过列表校验和检查- 在比较两个文件以确定它们是否相同时是否跳过校验和检查。如果跳过,则使用文件大小和上次修改时间来确定文件是否相同。跳过检查可提高映射器阶段的性能。请注意,如果您选择跳过校验和检查选项,也会跳过此检查。
- Abort on Error - 是否在出现错误时中止作业。如果选中,则复制到该点的文件将保留在目标上,但不会复制其他文件。默认情况下,错误中止是关闭的。
- 在快照差异失败时中止- 如果快照差异在复制期间失败,Replication Manager 使用完整副本来复制数据。如果选择此选项,Replication Manager 会在遇到错误时中止复制。
- 保留- 是保留源文件系统上存在的块大小、复制计数、权限(包括 ACL)和扩展属性 (XAttrs),还是使用目标文件系统上配置的设置。默认情况下会保留源系统设置。当Permission被选中并且源和目标集群都支持 ACL 时,复制会保留 ACL。否则,不会复制 ACL。当扩展属性检查,并且源和目标集群都支持扩展属性,复制保留它们。(此选项仅在源集群和目标集群都支持扩展属性时显示。)
Note
要保留对 HDFS 的权限,您必须以超级用户身份在目标集群上运行 。使用“以用户名运行”选项来确保是这种情况。
- 保留已删除的文件- 保留目标文件,即使它们在源中不再存在。(这是默认设置。)。
- 删除到垃圾箱- 如果启用了 HDFS 垃圾箱,文件将移动到垃圾箱文件夹。
- 永久删除- 使用最少的空间;谨慎使用。此选项不会删除顶级目录中的文件和目录。这符合 rsync/Hadoop DistCp 行为。
- 删除策略- 在源上删除的文件是否也应从目标目录中删除。此策略还确定目标位置中与源无关的文件的处理方式。选项包括:
- 警报- 是否为复制工作流中的各种状态变化生成警报。您可以在失败、启动、成功或复制工作流中止时发出警报。
- 单击保存策略。
复制任务现在在复制策略 表中显示为一行。(任务最多可能需要 15 秒才能出现。)
如果您在Schedule字段中选择 Immediate,则在您单击Save Policy时复制作业开始运行。
要指定其他复制任务,请选择Create > HDFS Replication。
Note
如果您的复制作业需要很长时间才能完成,并且在复制完成之前文件已更改,则复制可能会失败。考虑将目录设为可快照,以便复制作业在复制文件之前创建目录的快照,然后在执行复制时从这些可快照目录中复制文件。
限制复制主机
如果您的集群在资源有限的主机上安装了客户端,HDFS 复制可能会使用这些主机来运行复制命令,这可能会导致性能下降。您可以通过指定 DataNode 主机的“白名单”来限制 HDFS 复制仅在选定的 DataNode 上运行。
- 单击集群> HDFS 服务>配置。
- 键入HDFS Replication搜索框。
- 找到HDFS 复制环境高级配置片段(安全阀)属性。
- 添加 HOST_WHITELIST 属性。输入以逗号分隔的 DataNode 主机名列表以用于 HDFS 复制。例如:
HOST_WHITELIST=host-1.mycompany.com,host-2.mycompany.com
- 单击保存更改以提交更改。
查看复制策略
“复制策略”页面显示有关每个调度复制作业的一行信息。每行还显示有关上次运行复制作业的最新消息。
图 1.复制策略表
一次只能发生一个与复制策略对应的作业;如果与同一复制策略关联的另一个作业在前一个作业完成之前启动,则取消第二个作业。
您可以通过选择左侧的过滤器来限制显示的复制作业。如果您没有看到预期的策略,请调整或清除过滤器。使用搜索框搜索路径、数据库或表名称的策略列表。
的复制策略列在下表中进行了描述。
表 1.复制策略表
字段 | 描述 |
---|---|
ID | 内部生成的 ID 号,用于标识策略。提供一种方便的方式来识别策略。单击ID列标签可按ID对复制策略表进行排序。 |
姓名 | 您在创建策略时指定的唯一名称。 |
类型 | 复制策略的类型,HDFS 或 Hive。 |
来源 | 复制的源集群。 |
目的地 | 复制的目标集群。 |
吞吐量 | 写入的所有文件的每个映射器/文件的平均吞吐量。请注意,吞吐量不包括以下信息:所有映射器的总吞吐量以及文件写入后对文件执行校验和所花费的时间。 |
进度 | 复制的进度。 |
完成 | 复制作业完成的时间。单击已完成 列标签以按时间对复制策略表进行排序。 |
下一次运行 | 根据为策略指定的调度参数,调度下一次复制的日期和时间。将鼠标悬停在日期上可查看有关调度复制的其他详细信息。单击上次运行列标签以按上次运行日期对复制策略表进行排序。 |
行动 | “操作” 按钮提供以下项目:显示历史记录- 打开复制历史记录页面以进行复制。编辑配置- 打开编辑复制策略页面。Dry Run - 模拟复制任务的运行,但实际上并不复制任何文件或表。试运行后,您可以选择 Show History,这将打开Replication History页面,您可以在其中查看任何错误消息以及将在实际复制中复制的文件或表的数量和大小。立即运行 -立即运行复制任务。单击收集诊断数据以打开发送诊断数据屏幕,该屏幕允许您收集策略的最后 10 次运行的特定于复制的诊断数据:选择将诊断数据发送到 Cloudera以自动将包发送到 Cloudera 支持。您还可以在发送捆绑包时输入票号和评论。单击收集并发送诊断数据以生成包并打开复制诊断命令屏幕。命令完成后,单击下载结果数据以下载包含捆绑包的 zip 文件。禁用 | 启用- 禁用或启用复制策略。没有为禁用的复制策略安排进一步的复制。删除- 删除策略。删除复制策略不会删除复制的文件或表。 |
- 显示历史记录- 打开复制历史记录页面以进行复制。
- 编辑配置- 打开编辑复制策略页面。
- Dry Run - 模拟复制任务的运行,但实际上并不复制任何文件或表。试运行后,您可以选择 Show History,这将打开Replication History页面,您可以在其中查看任何错误消息以及将在实际复制中复制的文件或表的数量和大小。
- 立即运行 -立即运行复制任务。
- 单击收集诊断数据以打开发送诊断数据屏幕,该屏幕允许您收集策略的最后 10 次运行的特定于复制的诊断数据:
- 选择将诊断数据发送到 Cloudera以自动将包发送到 Cloudera 支持。您还可以在发送捆绑包时输入票号和评论。
- 单击收集并发送诊断数据以生成包并打开复制诊断命令屏幕。
- 命令完成后,单击下载结果数据以下载包含捆绑包的 zip 文件。
- 禁用 | 启用- 禁用或启用复制策略。没有为禁用的复制策略安排进一步的复制。
- 删除- 删除策略。删除复制策略不会删除复制的文件或表。
- 当作业正在进行时,“上次运行”列会显示一个微调器和进度条,并且在作业所在行下方的消息中指示复制任务的每个阶段。单击命令详细信息链接以查看有关命令执行的详细信息。
- 如果作业成功,则会指示复制的文件数。如果自上一个作业以来源文件没有更改,则不会复制该文件。因此,在初始作业之后,实际上可能只复制文件的一个子集,这会在成功消息中指示。
- 如果作业失败,则显示图标。
- 要查看有关已完成作业的更多信息,请选择操作>显示历史记录。
查看复制历史
您可以在“复制历史”页面上查看有关复制作业的历史详细信息。
要查看复制作业的历史记录
- 从Cloudera Manager 中,选择复制>复制策略。
将显示可用复制策略的列表。
- 找到作业所在的行,选择相同的行,然后单击操作>显示历史记录。
“复制历史记录”页面出现,其中包含作业信息。
图 1.复制历史屏幕 (HDFS)
复制历史表
“复制历史记录”页面显示以前运行的复制作业的表格,其中包含以下列:
字段 | 描述 |
---|---|
开始时间 | 显示有关作业的详细信息。您可以展开该部分以查看以下作业详细信息:开始时间 - 显示复制作业开始的时间。持续时间 - 显示完成作业的持续时间。命令详细信息 - 单击查看后在新选项卡中显示命令详细信息 。该命令详细信息 页显示有关命令运行过程中每一步的细节和信息。在此页面上,单击“上下文”可以查看与命令相关的服务状态页面,然后单击“下载”将摘要下载为 JSON 文件。要查看命令详细信息,请展开 Step部分,然后选择Show All Steps、Show Only Failed Steps或 Show Only Running Steps。在本节中,您可以执行以下任务:查看实际的命令字符串。查看命令的开始时间和持续时间。单击上下文链接可查看与命令相关的服务状态页面。选择选项卡之一以查看命令的角色日志、 标准输出和标准错误。查看正在运行和最近的命令MapReduce 作业。点击链接查看职位详情。HDS 复制报告。单击下载 CSV 以查看以下选项:ERROR – 发生错误,文件未复制。DELETED – 已删除的文件。SKIPPED – 跳过复制的文件,因为它是最新的。列表- 单击以下载包含复制报告的 CSV 文件。该文件列出了在复制作业期间复制的文件和目录的列表。状态- 单击可下载包含完整状态报告的 CSV 文件。该文件包含文件的完整状态报告,其中复制状态为以下之一:仅错误状态- 单击可下载包含所有复制文件的状态报告的 CSV 文件,其中包含错误。该文件列出了已复制文件的状态、路径和错误消息。仅已删除状态- 单击可下载包含所有已删除文件的状态报告的 CSV 文件。该文件列出了已删除数据库和表的状态、路径和消息。仅跳过状态- 单击可下载包含所有跳过文件的状态报告的 CSV 文件。该文件列出了被跳过的数据库和表的状态、路径和消息。性能- 单击可下载 CSV 文件,其中包含有关正在运行的复制作业的性能的摘要报告。性能摘要报告包括正在处理复制作业的每个映射器的最后一个性能示例。完整性能- 单击可下载包含作业性能报告的 CSV 文件。性能报告显示在复制作业完全执行期间为所有映射器采集的样本。(仅限试运行)查看可复制文件的数量。显示实际复制期间将复制的文件数。(仅限试运行)查看可复制字节数。显示在实际复制期间将复制的字节数。查看复制的 Impala UDF 的数量。(仅对选择了复制 Impala 元数据的 Hive/Impala 复制显示。)如果创建复制作业时在用户运行身份字段中指定了用户,则会显示所选用户。查看从复制作业返回的消息。 |
期间 | 完成复制作业所需的时间。 |
结果 | 指示复制作业的状态为成功或失败。 |
预期文件 | 预期复制的文件数及其文件大小基于复制策略的参数。 |
复制的文件 | 复制作业的复制文件数及其文件大小。 |
文件失败 | 复制作业复制失败的文件数及其文件大小。 |
文件已删除 | 已删除的文件数及其复制作业的文件大小 |
跳过的文件 | 复制作业跳过的文件数及其文件大小。复制过程会跳过目标中已存在且未更改的文件。 |
- 开始时间 - 显示复制作业开始的时间。
- 持续时间 - 显示完成作业的持续时间。
- 命令详细信息 - 单击查看后在新选项卡中显示命令详细信息 。
该命令详细信息 页显示有关命令运行过程中每一步的细节和信息。在此页面上,单击“上下文”可以查看与命令相关的服务状态页面,然后单击“下载”将摘要下载为 JSON 文件。 要查看命令详细信息,请展开 Step部分,然后选择Show All Steps、Show Only Failed Steps或 Show Only Running Steps。在本节中,您可以执行以下任务:
-
- 查看实际的命令字符串。
- 查看命令的开始时间和持续时间。
- 单击上下文链接可查看与命令相关的服务状态页面。
- 选择选项卡之一以查看命令的角色日志、 标准输出和标准错误。
查看正在运行和最近的命令
- MapReduce 作业。点击链接查看职位详情。
- HDS 复制报告。单击下载 CSV 以查看以下选项:
- ERROR – 发生错误,文件未复制。
- DELETED – 已删除的文件。
- SKIPPED – 跳过复制的文件,因为它是最新的。
- 列表- 单击以下载包含复制报告的 CSV 文件。该文件列出了在复制作业期间复制的文件和目录的列表。
- 状态- 单击可下载包含完整状态报告的 CSV 文件。该文件包含文件的完整状态报告,其中复制状态为以下之一:
- 仅错误状态- 单击可下载包含所有复制文件的状态报告的 CSV 文件,其中包含错误。该文件列出了已复制文件的状态、路径和错误消息。
- 仅已删除状态- 单击可下载包含所有已删除文件的状态报告的 CSV 文件。该文件列出了已删除数据库和表的状态、路径和消息。
- 仅跳过状态- 单击可下载包含所有跳过文件的状态报告的 CSV 文件。该文件列出了被跳过的数据库和表的状态、路径和消息。
- 性能- 单击可下载 CSV 文件,其中包含有关正在运行的复制作业的性能的摘要报告。性能摘要报告包括正在处理复制作业的每个映射器的最后一个性能示例。
- 完整性能- 单击可下载包含作业性能报告的 CSV 文件。性能报告显示在复制作业完全执行期间为所有映射器采集的样本。
- (仅限试运行)查看可复制文件的数量。显示实际复制期间将复制的文件数。
- (仅限试运行)查看可复制字节数。显示在实际复制期间将复制的字节数。
- 查看复制的 Impala UDF 的数量。(仅对选择了复制 Impala 元数据的 Hive/Impala 复制显示。)
- 如果创建复制作业时在用户运行身份字段中指定了用户,则会显示所选用户。
- 查看从复制作业返回的消息。
期间完成复制作业所需的时间。结果指示复制作业的状态为成功或失败。预期文件预期复制的文件数及其文件大小基于复制策略的参数。复制的文件复制作业的复制文件数及其文件大小。文件失败复制作业复制失败的文件数及其文件大小。文件已删除已删除的文件数及其复制作业的文件大小跳过的文件复制作业跳过的文件数及其文件大小。复制过程会跳过目标中已存在且未更改的文件。
监控 HDFS 复制的性能
您可以使用从 Cloudera Manager 管理控制台下载为 CSV 文件的性能数据来监控 HDFS 复制策略的进度。
此文件包含有关正在复制的文件、平均吞吐量和其他有助于诊断 HDFS 复制期间性能问题的详细信息的信息。您可以查看运行 HDFS 复制作业和已完成作业的性能数据。
查看正在运行的HDFS 复制策略的性能数据。
- 从Cloudera Manager 中,选择复制>复制策略。
- 选择策略,然后单击操作>显示历史记录。
- 单击下载 CSV,然后选择以下选项之一以查看性能报告:
- 性能 - 单击可下载包含有关复制作业性能的摘要报告的 CSV 文件。性能摘要报告包括正在处理复制作业的每个映射器的最后一个性能示例。
- 完整性能 - 单击可下载包含作业性能报告的 CSV 文件。完整的性能报告包括在复制作业完全执行期间为所有映射器采集的所有样本。
- 要查看数据,请在电子表格程序(如 Microsoft Excel)中打开文件。
查看已完成的HDFS 复制策略的性能数据:
表 1. HDFS 性能报告列
性能数据列 | 描述 |
---|---|
时间戳 | 收集性能数据的时间 |
主持人 | 运行 YARN 或 MapReduce 作业的主机的名称。 |
复制的字节数 | 为当前正在复制的文件复制的字节数。 |
已用时间(毫秒) | 当前正在复制的文件的复制操作所用的总时间(以毫秒为单位)。 |
复制的文件 | 复制的文件数。 |
平均吞吐量 (KB/s) | 自当前正在复制的文件开始以来的平均吞吐量(以千字节/秒为单位)。 |
最后一个文件(字节) | 最后一个文件的文件大小(以字节为单位)。 |
最后文件时间(毫秒) | 以毫秒为单位复制最后一个文件所花费的时间。 |
上次文件吞吐量 (KB/s) | 自上一个文件开始复制以来的吞吐量(以千字节/秒为单位)。 |
除了性能报告之外,您还可以查看错误文件、删除的文件和复制作业期间跳过的文件的报告。要查看报告,请执行以下步骤:
- 在复制策略页面上,选择策略并单击操作>显示历史记录。
出现复制策略的复制历史页面。展开以查看复制作业详细信息。
- 单击下载 CSV以获取以下选项:
-
- ERROR – 发生错误,文件未复制。
- DELETED – 已删除的文件。
- SKIPPED – 跳过复制的文件,因为它是最新的。
- 列表- 单击以下载包含复制报告的 CSV 文件。该文件列出了在复制作业期间复制的文件和目录的列表。
- 状态- 单击可下载包含完整状态报告的 CSV 文件。该文件包含文件的完整状态报告,其中复制状态为以下之一:
- 仅错误状态- 单击可下载包含所有复制文件的状态报告的 CSV 文件,其中包含错误。该文件列出了已复制文件的状态、路径和错误消息。
- 仅已删除状态- 单击可下载包含所有已删除文件的状态报告的 CSV 文件。该文件列出了已删除数据库和表的状态、路径和消息。
- 仅跳过状态- 单击可下载包含所有跳过文件的状态报告的 CSV 文件。该文件列出了被跳过的数据库和表的状态、路径和消息。
- 性能- 单击可下载 CSV 文件,其中包含有关正在运行的复制作业的性能的摘要报告。性能摘要报告包括正在处理复制作业的每个映射器的最后一个性能示例。
- 完整性能- 单击可下载包含作业性能报告的 CSV 文件。性能报告显示在复制作业完全执行期间为所有映射器采集的样本。
要查看数据,请在电子表格程序(如 Microsoft Excel)中打开文件。
每两分钟收集一次性能数据。因此,在复制作业的初始执行期间没有可用的数据,因为没有足够的样本来估计吞吐量和其他报告的数据。
在 Excel 中显示的示例 CSV 文件如下所示:
请注意以下限制和已知问题:
- 如果您在复制作业开始后过早单击 CSV 下载,Cloudera Manager 将返回一个空文件或一个仅包含列标题的 CSV 文件,并在实际收集性能数据后稍后尝试。
- 如果您使用表单使用代理用户 用户@域,无法通过链接获得性能数据。
- 如果复制作业只复制可以在不到几分钟内传输的小文件,则不会收集性能统计信息。
- 对于指定动态复制策略的复制策略,有关 MapReduce 作业传输的最后一个文件的统计信息隐藏了该 MapReduce 作业执行的先前传输。
- CSV 文件中仅报告每个 MapReduce 作业的最后一次跟踪。
原文链接:https://docs.cloudera.com/cdp-private-cloud-upgrade/latest/data-migration/topics/rm-dc-hdfs-replication.html
Hive/Impala复制策略
Hive/Impala 复制使您能够根据指定的复制策略将 Hive 元存储和数据从一个集群复制(复制)到另一个集群,并将目标集群上的 Hive 元存储和数据集与源集群同步 。
最低要求角色: 复制管理员(也由完全管理员提供)
目标集群必须由设置复制的 Cloudera Manager Server 管理,源集群可以由同一服务器或Peer Cloudera Manager Server 管理。
笔记
由于 CDH 集群和 CDP-PvC Base 之间的仓库目录更改,Hive 复制不会从源集群中指定的数据库和表中复制表数据。但是复制作业成功运行而没有任何中断。在从 CDH 集群复制到 CDP-PVC BASE 时,建议 定义HDFS目标路径。如果未定义 HDFS 目标路径且 复制 HDFS 文件 设置为 true,则使用原始源名称复制数据。例如,复制的表数据驻留在 /warehouse/tablespace/external/hive目录下,但数据被复制到 /user/hive/warehouse地点。此外, 在复制过程之前不定义 HDFS 目标路径可能会导致大量 HDFS 空间用于不需要的数据移动。
重要的
由于 Hive3 具有不同的默认表类型和仓库目录结构,因此在将 Hive 数据从 CDH5 或 CDH6 版本复制到 CDP-PVC BASE 时适用以下更改:
- 在 Hive 复制期间,所有表都成为外部表。这是因为 Hive3 中的默认表类型是 ACID,这是唯一的托管表类型。在此版本中,BDR 不支持Hive2 -> Hive3复制到 ACID 表中,并且所有表都必须作为外部表进行复制。
- 复制表将在Hive 配置参数hive.metastore.warehouse.external.dir 设置的外部 Hive 仓库目录下创建 。用户必须确保这与Hive 配置参数hive.metastore.warehouse.dir 具有不同的值 ,即托管表的位置。
- 如果用户想要将相同的数据库从 Hive2 复制到 Hive3(设计上会有不同的路径),他们需要使用每个策略的强制覆盖选项以避免任何不匹配问题。
笔记
从 Sentry 复制到 Ranger 时,受支持的最低 Cloudera Manager 版本为 6.3.1 及更高版本。
配置注意事项:
- 如果hadoop.proxyuser.hive.groups配置已更改为将 Hive Metastore Server 的访问权限限制为某些用户或组,则该 hdfs组或包含该hdfs用户的组也必须包含在为 Hive/Impala 复制指定的组列表中。此配置可以在 Hive 服务上指定为覆盖,也可以在核心站点 HDFS 配置中指定。这适用于源集群和目标集群上的配置设置。
- 如果您在目标集群上配置了 Hive/Impala 复制过程中复制 HDFS 数据的目录,复制过程中复制的权限会被 HDFS ACL 同步覆盖并且不会保留
笔记
如果您的部署包括由 Kudu 支持的表,Replication Manager 会过滤掉用于 Hive 复制的 Kudu 表,以防止数据丢失或损坏。
Hive/Impala 复制的主机选择
如果您的集群在资源有限的主机上安装了 Hive 客户端,Hive/Impala 复制可能会使用这些主机来运行复制命令,这可能会导致复制性能下降。
为了提高性能,您可以指定要在复制期间使用的主机(“白名单”),以便不使用资源较少的主机。
- 单击集群> Hive 服务>配置。
- 键入Hive Replication搜索框。
- 找到Hive 复制环境高级配置片段(安全阀)属性。
- 添加HOST_WHITELIST属性。输入以逗号分隔的主机名列表,以用于 Hive/Impala 复制。
HOST_WHITELIST=host-1.mycompany.com,host-2.mycompany.com
- 输入更改原因,然后单击保存更改以提交更改。
Hive 表和 DDL 命令
使用drop table和truncate table等DDL 命令时,以下内容适用。
- 如果您配置 Hive 表的复制,然后删除该表,该表将保留在目标集群上。发生后续复制时不会删除该表。
- 如果删除目标集群上的表,并且该表仍包含在复制作业中,则复制期间将在目标上重新创建该表。
- 如果删除源集群上的表分区或索引,复制作业也会将它们删除到目标集群上。
- 如果您截断表,并且复制作业的删除策略设置为删除到垃圾箱或永久删除,则复制期间目标上的相应数据文件将被删除。
参数的复制
数据库、表、分区和索引的参数在 Hive/Impala 复制期间默认复制。
您可以禁用参数复制:
- 登录到 Cloudera Manager 管理控制台。
- 转到 Hive 服务。
- 单击配置选项卡。
- 搜索Hive 复制环境高级配置片段。
- 添加以下参数:
REPLICATE_PARAMETERS=false
- 单击保存更改。
动态环境中的 Hive 复制
要在 Hive Metastore 更改的环境中使用 Replication Manager 进行 Hive 复制,例如在创建或删除数据库或表时,需要额外的配置。
- 打开 Cloudera Manager 管理控制台。
- 在源集群上搜索 hdfs-site.xml属性的HDFS 客户端高级配置片段(安全阀) 。
- 添加以下属性:
- 名称:replication.hive.ignoreDatabaseNotFound
值:true
- replication.hive.ignoreTableNotFound
值:true
- 保存更改。
- 重启 HDFS 服务。
配置 Hive/Impala 数据的复制
在配置 Hive/Impala 复制作业之前,您必须设置集群。
- 验证您的集群是否符合支持的复制方案之一。
- 如果源集群由与目标集群不同的 Cloudera Manager 服务器管理,请配置对等关系。
- 从Cloudera Manager > Replication,单击 Create Replication Policy。
- 选择Hive 复制策略。
出现 创建 Hive 复制策略 对话框。
- 选择常规选项卡以配置以下内容:
- 您可以使用加号指定多个数据库和表以向规范添加更多行。
- 您可以在一行中指定多个数据库,方法是用竖线 (|) 字符分隔它们的名称。例如:mydbname1|mydbname2|mydbname3。
- 正则表达式可用于数据库或表字段,如下表所述:
- 不导入 Sentry 权限(默认)
- 如果 Sentry 权限是从 CDH 集群导出的,则同时导入 Hive 对象和 URL 权限
- 如果 Sentry 权限是从 CDH 集群导出的,则只导入 Hive 对象权限
- 使用名称字段为复制策略提供唯一名称。
- 使用源下拉列表选择您要复制的 Hive 服务所在的集群。
- 使用目标下拉列表选择复制目标。如果 Cloudera Manager 管理的 Hive 服务只有一个可用作目标,则将其指定为目标。如果此 Cloudera Manager 管理多个 Hive 服务,请从中选择。
- 根据您计划使用的目标集群类型,选择Use HDFS Destination。
- 选择以下权限之一:
- 选中“全部复制”以从源复制所有 Hive 数据库。要仅复制选定的数据库,请取消选中此选项并输入要复制的数据库名称和表。
正则表达式 | 结果 |
---|---|
[w]. | 任何数据库或表名。 |
(?!mynameb). | 除了名为 myname 的数据库或表之外的任何数据库或表。 |
db1|db2[w_] | db1 和 db2 数据库的所有表。 |
数据库1[w_] 单击“ ”按钮,然后输入数据库[w_] | db1 和 db2 数据库的所有表(替代方法)。 |
笔记
运行MapReduce工作的用户应该read与 execute对上Hive仓库目录的权限 源集群。如果您将复制作业配置为保留权限,则在目标集群上需要超级用户权限。
- 如果对等集群配置了不同的超级用户,请指定在对等上运行作为用户名选项。这仅适用于在 kerberized 环境中工作时。
- 选择“资源”选项卡以配置以下内容:
- MapReduce – 公平调度程序:mapred.fairscheduler.pool
- MapReduce – 容量调度程序:queue.name
- Yarn – mapreduce.job.queuename
- 调度程序池- (可选)在字段中输入资源池的名称。您输入的值由您在 Cloudera Manager 为复制执行 MapReduce 作业时指定的MapReduce 服务使用。作业使用以下属性之一指定值:
- 最大Map槽和最大带宽 - 每个映射器的Map槽数量和带宽限制。默认值为 100 MB。
- 复制策略– 文件复制应该是静态的(默认)还是动态的。静态复制预先在映射器之间分配文件复制任务,以实现基于文件大小的统一分配。动态复制将文件复制任务以小集合分配给映射器,并且当每个映射器处理其任务时,它会动态获取并处理下一组未分配的任务。
- 选择Advanced选项卡指定导出位置,修改将执行复制的 MapReduce 作业的参数,并设置其他选项。您可以选择一个 MapReduce 服务(如果您的集群中有多个)并更改以下参数:
- 是- 复制 Impala 元数据。
- 否– 不复制 Impala 元数据。
- Auto – Cloudera Manager 根据 CDH 版本确定是否复制 Impala 元数据。
- 取消选中复制 HDFS 文件复选框以跳过复制关联的数据文件。
- 如果源集群和目标集群都使用 CDH 5.7.0 或更高版本(包括 5.11.x),请选择复制 Impala 元数据下拉列表并选择否以避免重复复制 Impala 元数据。(此选项仅在源集群和目标集群都支持时显示。)您可以为Replicate Impala Metadata选择以下选项:
要在 Cloudera Manager 管理的 CDH 版本为 5.7 或更低版本时复制 Impala UDF,请参阅有关何时选择此选项的信息。
-
- 该强制覆盖选项,如果选中,如果检测到不兼容的更改将强制覆盖到目的地metastore数据。例如,如果目标 Metastore 被修改,并且一个新分区被添加到表中,则此选项会强制删除该分区,并使用在源上找到的版本覆盖表。
重要
如果 未设置Force Overwrite选项,并且 Hive/Impala 复制过程检测到源集群上的更改不兼容,则 Hive/Impala 复制将失败。这有时会在重复复制中发生,其中与源集群上的现有数据库或表关联的元数据会随着时间的推移而发生变化。
- 默认情况下,Hive 元数据导出到默认 HDFS 位置 ( /user/${user.name}/.cm/hive),然后从此 HDFS 文件导入到目标 Hive 元存储。在本例中,user.name是目标集群上 HDFS 服务的进程用户。要覆盖此导出文件的默认 HDFS 位置,请在“导出路径”字段中指定路径。
笔记
在 Kerberized 集群中,源集群上的 HDFS 主体 必须具有read, write和 对目标集群上的导出路径目录的execute访问权限。
- 并发 HMS 连接数 - 并发 Hive Metastore 连接数。这些连接用于同时从 Hive 导入和导出元数据。增加线程数可以提高 Replication Manager 的性能。默认情况下,新的复制策略使用 5 个连接。
如果将该值设置为 1 或更多,Replication Manager 将使用具有指定连接数的多线程。如果将该值设置为 0 或更少,Replication Manager 将使用单线程和单连接。
请注意,源和目标集群必须运行支持并发 HMS 连接的 Cloudera Manager 版本、Cloudera Manager 5.15.0 或更高版本和 Cloudera Manager 6.1.0 或更高版本。
- 默认情况下,Hive HDFS 数据文件(例如 /user/hive/warehouse/db1/t1)被复制到相对于“ /”(在本例中为 /user/hive/warehouse/db1/t1)的位置。要覆盖默认值,请在HDFS Destination Path字段中输入路径。例如,如果您输入 /ReplicatedData,数据文件将被复制到 /ReplicatedData/user/hive/warehouse/db1/t1.
- 选择要用于此复制的MapReduce 服务(如果您的集群中有多个)。
- 日志路径-日志的替代路径。
- 描述- 复制策略的描述。
- Skip Checksum Checks - 是否跳过校验和检查,默认情况下执行。
- 跳过列表校验和检查- 在比较两个文件以确定它们是否相同时是否跳过校验和检查。如果跳过,则使用文件大小和上次修改时间来确定文件是否相同。跳过检查可提高映射器阶段的性能。请注意,如果您选择 跳过校验和检查选项,也会跳过此检查。
- Abort on Error - 是否在出现错误时中止作业。通过选中该复选框,复制到该点的文件将保留在目标上,但不会复制其他文件。默认情况下,错误中止是关闭的。
- 在快照差异失败时中止- 如果快照差异在复制期间失败,Replication Manager 使用完整副本来复制数据。如果选择此选项,Replication Manager 会在遇到错误时中止复制。
- 删除策略- 源上的文件是否也应从目标目录中删除。选项包括:
- 保留- 是保留源文件系统上存在的块大小、复制计数和权限 ,还是使用目标文件系统上配置的设置。默认情况下,设置保留在源上。
笔记
您必须以超级用户身份运行才能保留权限。使用“以用户名运行”选项来确保是这种情况。
- 警报- 是否为复制工作流中的各种状态变化生成警报。您可以提醒On Failure、 On Start、On Success或On Abort(复制工作流中止时)。
- 单击保存策略。
复制任务在复制策略表中显示为一行 。
要指定其他复制任务,请选择Create > Hive Replication。
笔记
如果您的复制作业需要很长时间才能完成,并且在复制完成之前表发生了变化,则复制可能会失败。考虑将 Hive 仓库目录和任何外部表的目录设为可快照,以便复制作业在复制文件之前创建目录的快照。
针对 Hive 复制策略的 Ranger 复制Sentry
创建或编辑 Hive 复制策略时,您可以选择迁移 Hive 对象、Impala 数据和正在复制的 URL 的 Sentry 策略。Replication Manager 将 Sentry 策略转换为目标集群中迁移数据的 Ranger 策略。将 Sentry 策略复制到 Ranger 需要最低支持的 Cloudera Manager 版本 6.3.1 及更高版本。
在 Hive 复制策略中,如果您选择如果 Sentry 权限从 CDH 集群导出,同时导入 Hive 对象和 URL 权限或如果 Sentry 权限从 CDH 集群导出,仅导入 Hive 对象权限选项,复制管理器执行在复制作业运行期间自动执行以下任务:
当您选择将 Sentry 策略迁移到 Ranger 时,Replication Manager 会自动执行以下任务:
- 使用 authzmigrator 工具将每个 Sentry 策略导出为单个 JSON 文件。JSON 文件包含资源列表,例如 URI、数据库、表或列以及适用于它的策略。
- 使用 DistCp 工具将导出的 Sentry 策略复制到目标集群。
- 在使用 authzmigrator 工具通过 Ranger 其余端点过滤与复制作业相关的策略后,将 Sentry 策略摄取到 Ranger 中。为了过滤策略,Replication Manager 使用由 Cloudera Manager 传递给 authzmigrator 工具的过滤器表达式。
如果您要复制数据库中表的子集,则数据库级策略将转换为每个被复制表的等效表级策略。(例如,对于每个复制的表,数据库上的 ALL -> 表上的 ALL)。
Ranger 中将不会引用原始角色名称。权限直接授予组和用户关于资源而不是角色。这是在就地升级到CDP Private Cloud Base期间将 Sentry 迁移到 Ranger 的一种不同格式 ,后者确实导入和使用了 Sentry 角色。
无论是否修改了策略,每次复制时都会重新创建每个策略。如果您希望继续安排数据复制,但您还想修改目标集群的 Ranger 策略(并保留这些修改),您应该通过编辑复制策略在后续运行中禁用 Sentry 到 Ranger 迁移,并选择不导入 Sentry 权限(默认) 选项。
Impala 和 Hive 用户定义函数 (UDF) 的复制
默认情况下,对于 CDH 版本为 5.7 或更高版本的集群,Impala 和 Hive UDF 保留在 Hive Metastore 中,并作为 Hive/Impala 复制的一部分自动复制。
要在 Cloudera Manager 管理的 CDH 版本为 5.6 或更低版本时复制 Impala UDF,请参阅有关在创建 Hive/Impala 复制策略时何时选择高级选项卡上的复制 Impala 元数据选项的信息。
复制作业运行后,您可以在复制策略页面上看到在计划的最后一次运行期间复制的 Impala 和 Hive UDF 的数量。您还可以在之前运行的复制的复制历史记录页面上查看复制的 UDF 数量 。
监控 Hive 或 Impala 复制的性能
您可以使用从 Cloudera Manager 管理控制台下载为 CSV 文件的性能数据来监控 Hive/Impala 复制策略的进度。
此文件包含有关正在复制的表和分区的信息、平均吞吐量以及其他有助于诊断 Hive/Impala 复制期间性能问题的详细信息。您可以查看运行 Hive/Impala 复制作业和已完成作业的性能数据。
查看正在运行的Hive/Impala 复制的性能数据:
- 在Cloudera Manager 中,选择复制>复制策略。
- 找到策略所在行,选择策略,然后单击操作>显示历史记录。
- 单击Download CSV for HDFS Replication Report,然后选择以下选项之一以查看性能报告:
- 性能- 单击可下载包含有关复制作业性能的摘要报告的 CSV 文件。性能摘要报告包括正在处理复制作业的每个映射器的最后一个性能示例。
- 完整性能- 单击可下载包含作业性能报告的 CSV 文件。完整的性能报告包括在复制作业完全执行期间为所有映射器采集的所有样本。
- 要查看数据,请在电子表格程序(如 Microsoft Excel)中打开文件。
除了性能报告之外,您还可以查看错误文件、删除的文件和复制作业期间跳过的文件的报告。要查看报告,请执行以下步骤:
- 在“复制策略”页面上,找到该策略并单击“操作” >“显示历史记录”。
出现复制策略的复制历史页面。展开以查看复制作业详细信息。
- 单击下载 CSV以获取以下选项:
- ERROR – 发生错误,文件未复制。
- DELETED – 已删除的文件。
- SKIPPED – 跳过复制的文件,因为它是最新的。
- 列表- 单击以下载包含复制报告的 CSV 文件。该文件列出了在复制作业期间复制的文件和目录的列表。
- 状态- 单击可下载包含完整状态报告的 CSV 文件。该文件包含文件的完整状态报告,其中复制状态为以下之一:
- 仅错误状态- 单击可下载包含所有复制文件的状态报告的 CSV 文件,其中包含错误。该文件列出了已复制文件的状态、路径和错误消息。
- 仅已删除状态- 单击可下载包含所有已删除文件的状态报告的 CSV 文件。该文件列出了已删除数据库和表的状态、路径和消息。
- 仅跳过状态- 单击可下载包含所有跳过文件的状态报告的 CSV 文件。该文件列出了被跳过的数据库和表的状态、路径和消息。
- 性能- 单击可下载 CSV 文件,其中包含有关正在运行的复制作业的性能的摘要报告。性能摘要报告包括正在处理复制作业的每个映射器的最后一个性能示例。
- 完整性能- 单击可下载包含作业性能报告的 CSV 文件。性能报告显示在复制作业完全执行期间为所有映射器采集的样本。
- 要查看数据,请在电子表格程序(如 Microsoft Excel)中打开文件。
查看已完成的Hive/Impala 复制策略的性能数据:
- 在“复制策略”页面上,找到该策略并单击“操作” >“显示历史记录”。
- 要查看 Hive 阶段的性能,请单击Hive 复制报告标签旁边的下载 CSV,然后选择以下选项之一:
- 结果- 下载复制表的列表。
- 性能- 下载 Hive 复制的性能报告。
笔记
如果复制的 HDFS 阶段跳过所有 HDFS 文件,因为它们没有更改,或者如果复制 HDFS 文件选项(在创建 Hive/Impala 复制策略时位于高级选项卡上) ,下载 HDFS 复制报告的选项可能不会出现 未选中的。
有关HDFS 性能报告中数据的说明,请参见表 1。
- 要查看数据,请在电子表格程序(如 Microsoft Excel)中打开文件。
每两分钟收集一次性能数据。因此,在复制作业的初始执行期间没有可用的数据,因为没有足够的样本来估计吞吐量和其他报告的数据。
从 Cloudera Manager 管理控制台下载的 CSV 文件返回的数据具有以下结构:
表 1. Hive 性能报告列
Hive 性能数据列 | 描述 |
---|---|
时间戳 | 收集性能数据的时间 |
主持人 | 运行 YARN 或 MapReduce 作业的主机的名称。 |
数据库名称 | 数据库的名称。 |
表名 | 表的名称。 |
TotalElapsedTimeSecs | 从复制操作开始经过的秒数。 |
总表数 | 要复制的表总数。该列的值将-1用于 Cloudera Manager 无法确定要更改的表数量的复制。 |
总分区数 | 要复制的分区总数。如果源集群运行 Cloudera Manager 5.9 或更低版本,则此列包含值 ,-1 因为旧版本不报告此信息。 |
数据库计数 | 当前复制的数据库数。 |
数据库错误计数 | 失败的数据库复制操作数。 |
表数 | 到目前为止复制的表总数(对于所有数据库)。 |
当前表计数 | 为当前数据库复制的表总数。 |
表错误计数 | 失败的表复制操作总数。 |
分区计数 | 到目前为止复制的分区总数(对于所有表)。 |
当前分区计数 | 为当前表复制的分区总数。 |
分区跳过计数 | 跳过的分区数,因为它们是在上次运行的复制作业中复制的。 |
索引计数 | 复制的索引文件总数(对于所有数据库)。 |
当前索引计数 | 为当前数据库复制的索引文件总数。 |
索引跳过计数 | 由于未更改而跳过的索引文件数。由于 Hive 中的错误,此值始终为零。 |
Hive函数计数 | 复制的 Hive 函数数。 |
Impala 对象计数 | 复制的 Impala 对象数。 |
请注意以下限制和已知问题:
- 如果您在复制作业开始后过早单击 CSV 下载,Cloudera Manager 将返回一个空文件或一个仅包含列标题的 CSV 文件,并在实际收集性能数据后稍后尝试。
- 如果您使用表单代理用户,user@domain则无法通过链接获得绩效数据。
- 如果复制作业只复制可以在不到几分钟内传输的小文件,则不会收集性能统计信息。
- 对于指定动态复制策略的复制策略,有关 MapReduce 作业传输的最后一个文件的统计信息隐藏了该 MapReduce 作业执行的先前传输。
- CSV 文件中仅报告每个 MapReduce 作业的最后一次跟踪。
启用、禁用或删除复制策略
创建新的复制策略时,它会自动启用。如果禁用复制策略,则可以稍后重新启用。
管理复制策略。
- 从Cloudera Manager 中,选择复制>复制策略。
- 为所选下拉菜单选择操作,然后根据需要选择 启用|禁用|删除。
要启用、禁用或删除多个复制策略,您可以从复制策略页面选择这些策略并重复步骤 2。
将数据复制到 Impala 集群
Impala 元数据作为常规 Hive/Impala 复制操作的一部分进行复制。
复制 Impala 元数据
Impala 元数据复制作为 Hive 复制的一部分执行。Impala 复制仅支持在两个 CDH 集群之间进行。Impala 和 Hive 服务必须在两个集群上运行。
要启用 Impala 元数据复制,请执行以下任务:
- 安排 Hive 复制。
- 确认在“创建 Hive 复制”对话框的“高级”选项卡 上将“复制 Impala 元数据”选项设置为“ 是” 。
当您将复制 Impala 元数据选项设置为是时,Impala UDF(用户定义的函数)将在目标集群上可用,就像在源集群上一样。作为复制 UDF 的一部分,定义它们的二进制文件也会被复制。
笔记
要对已复制到目标集群的表运行查询或执行 DDL 语句,您必须在目标集群上运行 Impala INVALIDATE METADATA 语句以防止查询失败。
使 Impala 元数据无效
对于不使用 LDAP 身份验证的 Impala 集群,您可以将 Hive/Impala 复制作业配置为在复制完成后自动使 Impala 元数据失效。如果集群使用 Sentry,则 Impala 用户应该有权运行INVALIDATE METADATA.
配置导致 Hive/Impala 复制作业运行 ImpalaINVALIDATE METADATA完成复制后目标集群上每个表的语句。该语句在复制完成后清除目标集群 Impala 中复制表和视图的元数据,允许目标上的其他 Impala 客户端成功查询这些表并获得准确结果。但是,如果在复制运行时对任何复制的表或视图执行 DDL 操作,则此操作可能不安全。一般情况下,不建议直接修改目标上的复制数据/元数据。忽略这一点可能会导致使用这些表或视图的应用程序和查询出现意外或不正确的行为。
笔记
如果源包含 UDF,INVALIDATE METADATA即使您配置了自动失效,您也必须手动运行该语句并且不指定任何表。
要配置该选项,请执行以下任务:
- 安排 Hive 复制。
- 在Advanced选项卡上,选择Invalidate Impala Metadata on Destination选项。
或者,您可以INVALIDATE METADATA为复制表手动运行该语句。
将快照与复制结合使用
某些复制,尤其是那些需要很长时间才能完成的复制,可能会因为源文件在复制过程中被修改而失败。
您可以通过将快照与复制结合使用来防止此类故障。CDH 5.0 及更高版本会自动使用快照。要利用这一点,您必须为快照启用相关目录(也称为使目录成为 快照表)。
当复制作业运行时,它会检查指定的源目录是否是可快照的。在复制任何文件之前,复制作业会创建这些目录的时间点快照,并将它们用作文件副本的源。这可确保复制的数据与复制作业开始时的源数据一致。复制过程完成后,将保留用于后续运行的最新快照。
目录是可快照的,因为它已启用快照,或者因为父目录已启用快照。快照目录的子目录包含在快照中。
带有快照的 Hive/Impala 复制
如果您使用 Hive 复制,Cloudera 建议您将 Hive 仓库目录设为可快照。
Hive 仓库目录位于 HDFS 文件系统中hive.metastore.warehouse.dir属性指定的位置。(默认位置是 /user/hive/warehouse。)要访问此属性:
- 打开 Cloudera Manager 并浏览到 Hive 服务。
- 单击配置选项卡。
- 在搜索框中,键入 hive.metastore.warehouse.dir。
显示Hive 仓库目录属性。
如果您在 Hive 中使用外部表,还要使托管任何未存储在 Hive 仓库目录中的外部表的目录快照表。
同样,如果您正在使用 Impala 并使用 Hive/Impala 复制来复制任何 Impala 表,请确保表和关联数据库的存储位置也是可快照的。
使用 Kerberos 身份验证启用集群之间的复制
要启用集群之间的复制,需要额外的设置步骤以确保源集群和目标集群可以通信。
最低要求角色:集群管理员(也由完全管理员提供)
重要
即使没有 Kerberos 领域信任关系,Cloudera Replication Manager 也可以与不同 Kerberos 领域中的集群一起使用。Cloudera Manager 配置属性Trusted Kerberos Realms和Kerberos Trusted Realms用于 Cloudera Manager 和 CDH 配置,与 Kerberos 领域信任关系无关。
如果您在不同 Kerberos 领域中的集群之间使用独立的 DistCp,则必须配置领域信任。
端口
在启用 Kerberos 身份验证的情况下使用 Replication Manager 时,Replication Manager 需要以下页面中列出的所有端口Replication Manager 的端口要求。
此外,用于 Kerberos KDC 服务器和 KRB5 服务的端口必须对目标集群上的所有主机开放。默认情况下,这是端口 88。
域名的注意事项
如果源集群和目标集群都使用 Kerberos 进行身份验证,请使用以下配置之一来防止运行复制作业时发生冲突。
- 如果集群不使用相同的 KDC(Kerberos 密钥分发中心),Cloudera 建议您为每个集群使用不同的领域名称。此外,如果您要跨两个不同领域中的集群进行复制,请参阅本主题后面的复制步骤以在这些集群之间建立信任。
- 如果集群使用相同的 KDC 或属于统一领域一部分的不同 KDC,您可以使用相同的领域名称,例如其中一个 KDC 是主 KDC,另一个是工作 KDC。
- 笔记
如果您有多个集群用于隔离生产和非生产环境,则此配置可能会导致主体在两种环境中具有相同的权限。确保为每种类型的环境适当设置权限。
重要的
如果源集群和目标集群在同一领域但不使用相同的 KDC 或 KDC 不是统一领域的一部分,则复制作业将失败。
HDFS、Hive 和 Impala 复制
配置源集群和目标集群。
- 在目标集群中的主机上,确保每个主机上的 krb5.conf文件(通常位于 /etc/kbr5.conf)具有以下信息:
- 源集群的 Kerberos 领域的 KDC 信息。例如:
[realms]
SRC.EXAMPLE.COM = {
kdc = kdc01.src.example.com:88
admin_server = kdc01.example.com:749
default_domain = src.example.com
}
DST.EXAMPLE.COM = {
kdc = kdc01.dst.example.com:88
admin_server = kdc01.dst.example.com:749
default_domain = dst.example.com
}
代码语言:javascript复制[domain_realm]
.dst.example.com = DST.EXAMPLE.COM
dst.example.com = DST.EXAMPLE.COM
.src.example.com = SRC.EXAMPLE.COM
src.example.com = SRC.EXAMPLE.COM
笔记
如果您遇到主机名不一致的情况,您必须导航到Cloudera Manager Host All Hosts并确保所有这些主机都以与domain_realm部分中所见类似的方式覆盖 。
- 在目标集群上,使用 Cloudera Manager 将源集群的领域添加到Trusted Kerberos Realms配置属性:
- 转到 HDFS 服务。
- 单击配置选项卡。
- 在搜索字段中键入Trusted Kerberos以查找Trusted Kerberos Realms 属性。
- 单击加号图标,然后输入源 集群领域。
- 输入更改原因,然后单击保存更改以提交更改。
- 转至 管理>设置。
- 在搜索字段中,键入domain name。
- 在域名字段中,输入要映射到目标集群 KDC 的任何域名或主机名。使用加号图标根据需要添加任意数量的条目。此属性中的条目用于生成 中的domain_realm 部分krb5.conf。
- 如果domain_realm在高级配置片段(安全阀)中配置了剩余的 krb5.conf,请删除它的条目。
- 输入更改原因,然后单击保存更改以提交更改。
Kerberos 连接测试
作为测试连接的一部分,Cloudera Manager 测试在运行复制的源和目标集群上正确配置的 Kerberos 身份验证。添加对等方进行复制时,测试连接会自动运行,或者您可以从“操作”菜单手动启动测试连接 。
当源和目标集群运行 Cloudera Manager 5.12 或更高版本时,此功能可用。您可以通过设置禁用Kerberos的连通性测试 feature_flag_test_kerberos_connectivity,以false与Cloudera的管理器API:api/<version>/cm/config。
如果测试检测到 Kerberos 配置存在任何问题,Cloudera Manager 会根据 Cloudera Manager 是否管理 Kerberos 配置文件提供解决步骤。
Cloudera Manager 测试以下场景:
- 两个集群是否都启用了 Kerberos。
- 从 Cloudera Manager 6.1 及更高版本开始,支持从不安全集群到安全集群的复制。
- 如果源集群使用 Kerberos 而目标集群不安全,则不支持复制。
- 两个集群是否在同一个 Kerberos 领域。同一个领域中的集群必须共享同一个 KDC,或者 KDC 必须在一个统一的领域中。
- 集群是否位于不同的 Kerberos 领域。如果集群在不同的领域,则必须根据以下标准配置目标集群:
- 目标 HDFS 服务必须具有正确的 Trusted Kerberos Realms设置。
- 该krb5.conf文件domain_realm在所有主机上都有正确的 映射。
- 该krb5.conf文件包含realms有关所有主机的正确 信息。
- 本地和对等 KDC 是否在可用端口上运行。该端口必须对集群中的所有主机开放。默认端口为 88。
Cloudera Manager 运行测试后,Cloudera Manager 会提出解决任何 Kerberos 配置问题的建议。
Kerberos 建议
如果 Cloudera Manager 管理 Kerberos 配置文件,Cloudera Manager 会为您正确配置 Kerberos,然后提供您必须手动运行以完成集群配置的命令集。如果 Cloudera Manager 不管理 Kerberos 配置文件,Cloudera Manager 会提供更正问题所需的手动步骤。
加密数据的复制
HDFS 支持静态数据加密,包括通过 Hive 访问的数据。本主题介绍了加密区域内和加密区域之间的复制如何工作,以及如何配置复制以避免因加密而失败。
加密集群之间传输的数据
源目录和目标目录可能在也可能不在加密区域中。如果目标目录在加密区域中,则目标目录上的数据会被加密。如果目标目录不在加密区域中,即使源目录在加密区域中,该目录上的数据也不会加密。CDH 5.1 或更低版本不支持加密区域。
配置加密区域时,您还可以配置密钥管理服务器 (KMS) 来管理加密密钥。在复制过程中,当密钥从源集群传输到目标集群时,Cloudera Manager 使用 TLS/SSL 对它们进行加密。
配置加密区域时,您还可以配置密钥管理服务器 (KMS) 来管理加密密钥。当指定加密源目录的 HDFS 复制命令运行时,Cloudera Manager 临时将加密密钥从源集群复制到目标集群,使用 TLS/SSL(如果为 KMS 配置)来加密密钥。Cloudera Manager 然后使用这些密钥解密从源集群收到的加密文件,然后再将文件写入目标集群。
重要的
在配置 HDFS 复制时,必须选择 跳过校验和检查属性以防止在以下情况下复制失败:
- 从源集群上的加密区域复制到目标集群上的加密区域。
- 从源集群上的加密区域复制到目标集群上的未加密区域。
- 从源集群上的未加密区域复制到目标集群上的加密区域。
即使源目录和目标目录都在加密区域中,数据在从源集群读取时会被解密(使用源加密区域的密钥),并在写入目标集群时再次加密(使用密钥)用于目标加密区域)。如果您为 HDFS 数据传输配置了加密,则数据传输会被加密。
笔记
解密和加密步骤发生在运行复制数据的 MapReduce 作业的主机上的同一进程中。因此,纯文本数据仅存在于 Mapper 任务的内存中。如果源或目标集群上正在使用 KMS,并且您对源或目标目录使用加密区域,请为 KMS 配置 TLS/SSL 以防止将密钥作为纯文本传输到映射器任务。
在复制期间,数据使用 distcp. 对于使用加密区域的集群,请使用 TLS/SSL 配置源和目标之间 KMS 密钥传输的加密。
要配置源集群和目标集群之间的数据传输加密:
- 在源集群和目标集群上为 HDFS 客户端启用 TLS/SSL。您可能还需要在源和目标上的 SSL 证书之间配置信任。
- 为两个对等 Cloudera Manager 服务器启用 TLS/SSL。
- 使用 HDFS 数据传输加密来加密数据传输。
以下博客文章提供了有关使用 HDFS 进行加密的其他信息:https : //blog.cloudera.com/blog/2013/03/how-to-set-up-a-hadoop-cluster-with-network-encryption/。
安全考虑
您在计划复制作业时使用“运行方式”字段指定的用户需要对要复制的密钥和数据目录的完全访问权限。这不是 KMS 管理的推荐最佳实践。
如果您更改 KMS 中的权限以启用此要求,您可能会意外地为该用户提供对使用相同密钥的其他加密区域中的数据的访问权限。如果未指定用户的运行方式领域,复制运行作为默认用户,hdfs。
要访问加密数据,用户必须在 KMS 上获得他们需要与之交互的加密区域的授权。您在计划复制时使用运行方式字段指定的用户必须具有此授权。密钥管理员必须为该用户向 KMS 添加 ACL 以防止授权失败。
使用 KMS 协议从源到客户端的密钥传输使用 REST 协议,这要求您为 KMS 配置 TLS/SSL。启用 TLS/SSL 后,密钥不会以纯文本形式通过网络传输。
快照
您可以使用 Cloudera Manager 或使用命令行创建 HBase 和 HDFS 快照。
HDFS 快照允许您创建目录或整个文件系统的时间点备份,而无需实际克隆数据。它们可以提高数据复制性能并防止因更改源目录而导致的错误。这些快照作为只读目录出现在文件系统上,可以像其他普通目录一样访问。
Cloudera Manager 快照策略
Cloudera Manager 支持创建快照策略,这些策略定义要创建快照的目录或表、应拍摄快照的时间间隔以及每个快照时间间隔应保留的快照数量。
例如,您可以创建一个同时拍摄每日和每周快照的策略,并指定应维护七个每日快照和五个每周快照。
最低要求角色: 复制管理员(也由完全管理员提供)
笔记
您还可以通过使用快照来提高可靠性。
管理快照策略
您必须为快照启用 HDFS 目录,以允许为该目录创建快照策略。要将 HDFS 目录指定为快照表,请按照以下步骤操作
创建快照策略
- 从 Cloudera Manager,选择复制>快照策略。
现有快照策略显示在表格中。
- 要创建新策略,请单击创建快照策略。
- 从下拉列表中,选择要为其创建策略的服务(HDFS 或 HBase)和集群。
- 为策略提供一个名称,并可以选择输入描述。
- 指定要包含在快照中的目录、命名空间或表。
重要的
不要拍摄根目录的快照。
- 对于 HDFS 服务,选择要包含在快照中的目录路径。下拉列表允许您仅选择启用快照的目录。如果没有为快照启用目录,则会显示警告。
单击以添加路径和删除路径。
- 对于 HBase 服务,列出要包含在快照中的表。您可以使用 Java 正则表达式来指定一组表。例如,finance.*匹配名称以 开头的所有表finance。您还可以使用 语法为给定命名空间中的所有表创建快照。{namespace}:.*
- 指定快照计划。您可以每小时、每天、每周、每月或每年或这些的任意组合安排快照。根据您选择的频率,您可以指定拍摄快照的时间、星期几、月份中的某一天或一年中的月份,以及在每个时间间隔保留的快照数量。调度信息中的每个时间单位都与更大粒度的时间单位共享。也就是说,分钟值由所有选定的计划共享,小时由适用于小时的所有计划共享,依此类推。例如,如果您指定在半小时拍摄每小时快照,并在 20 小时拍摄每日快照,则每日快照将在 20:30 发生。
要选择间隔,请选中相关框。这些字段显示您可以编辑要保留的快照的时间和数量的位置。
- 指定是否应为快照工作流中的各种状态更改生成警报。您可以在失败、启动、成功或快照工作流中止时发出警报。
- 单击保存策略。
新策略出现在 快照策略页面上。
要编辑或删除快照策略:
- 从 Cloudera Manager,选择复制>快照策略。
现有快照策略显示在表格中。
- 找到该策略并单击操作菜单,然后选择 编辑或删除选项。
快照历史
“快照历史记录”页面显示有关已运行或尝试的快照作业的信息。
该页面显示了一个包含以下列的快照作业表:
表 1.快照历史
字段 | 描述 |
---|---|
开始时间 | 快照作业开始执行的时间。单击以显示有关快照的详细信息。例如:单击“查看”链接以打开“托管计划快照命令”页面,该页面显示有关执行命令的每个步骤的详细信息和消息。 |
结果 | 显示快照是成功还是失败。 |
路径 | 处理的表 | HDFS 快照:为快照处理的路径数。HBase 快照:为快照处理的表数。 |
路径 | 未处理的表 | HDFS Snapshots:快照未处理的路径数。HBase Snapshots:快照未处理的表 数。 |
创建的快照 | 创建的快照数量。 |
快照已删除 | 删除的快照数量。 |
创建过程中的错误 | 显示创建快照时发生的错误列表。每个错误都显示相关路径和错误消息。 |
删除过程中的错误 | 显示删除快照时发生的错误列表。每个错误都显示相关路径和错误消息。 |
孤立的快照
当快照策略包含对要保留的快照数量的限制时,Cloudera Manager 会在每次添加新快照时检查存储的快照总数,并在必要时自动删除最旧的现有快照。
编辑或删除快照策略时,从策略中删除的文件、目录或表可能会留下“孤立”快照,这些快照不会自动删除,因为它们不再与当前快照策略相关联。Cloudera Manager 从不选择这些快照进行自动删除,因为只有在策略创建包含这些文件、目录或表的新快照时才会选择删除。
您可以通过 Cloudera Manager 或通过创建使用 HDFS 或 HBase 快照命令的命令行脚本手动删除快照。很难找到孤立的快照以进行手动删除。快照策略自动接收前缀, cm-auto后跟全局唯一标识符 (GUID)。您可以通过搜索该策略独有的前缀来查找特定策略的所有快照。cm-auto-guid
为避免孤立快照,请在编辑或删除关联的快照策略之前删除快照,或记录要删除的快照的标识名称。该前缀显示在策略列表中的策略摘要中,并出现在删除对话框中。记录快照名称(包括关联的策略前缀)是必要的,因为在删除策略后无法确定与策略关联的前缀,并且快照名称不包含对快照策略的可识别引用。
管理 HDFS 快照
本主题演示了如何使用 Cloudera Manager 或命令行管理 HDFS 快照。
对于 HDFS 服务,使用文件浏览器选项卡查看与集群上的服务关联的 HDFS 目录。您可以查看当前保存的文件快照,并删除或恢复它们。
在 HDFS 文件浏览器选项卡中,您可以:
- 将 HDFS 目录指定为“可快照”,以便可以为这些目录创建快照。
- 启动 HDFS 目录的即时(计划外)快照。
- 查看当前维护的已保存快照列表。这些可以包括一次性的即时快照,以及基于策略的计划快照。
- 删除保存的快照。
- 从保存的快照恢复 HDFS 目录或文件。
- 将 HDFS 目录或文件从保存的快照恢复到新目录或文件(恢复为)。
在使用快照之前,请注意以下限制:
- 包含加密目录的快照无法在创建它们的区域之外恢复。
- Cloudera Manager Admin Console 无法对启用了静态加密的 HDFS 路径执行快照操作(例如创建、恢复和删除)。此限制仅影响 Cloudera Manager 管理控制台,不影响 CDH 命令行工具或未由管理控制台执行的操作,例如使用命令行工具的 Replication Manager。有关快照操作的更多信息,请参阅Apache HDFS 快照文档。
浏览 HDFS 目录
您可以浏览 HDFS 目录以选择正确的集群。
要浏览 HDFS 目录以查看快照活动:
- 从Clusters选项卡中,选择您的 CDH HDFS 服务。
- 转到文件浏览器选项卡。
当您浏览 HDFS 的目录结构时,您选择的目录的基本信息会显示在右侧(所有者、组等)。
启用和禁用 HDFS 快照
要创建快照,必须为快照启用 HDFS 目录。您不能将目录指定为快照策略的一部分,除非它已为快照启用。
最低要求角色:集群管理员(也由完全管理员提供)
为快照启用 HDFS 目录
- 从Clusters选项卡中,选择 CDH HDFS 服务。
- 转到文件浏览器选项卡。
- 转到要启用快照的目录。
- 在文件浏览器中,单击完整文件路径旁边的下拉菜单并选择 启用快照。
笔记
为目录启用快照后,您将无法在其任何子目录上启用快照。只能在启用了快照的目录上拍摄快照。
禁用可快照目录
要为启用了快照的目录禁用快照,请使用 右上角下拉菜单按钮中的禁用快照。如果目录的快照存在,则必须先将其删除,然后才能禁用快照。
拍摄和删除 HDFS 快照
要管理 HDFS 快照,请为快照启用 HDFS 目录。
最低要求角色: 复制管理员(也由完全管理员提供)
拍摄快照
笔记
您还可以通过创建快照策略来安排定期发生快照。
- 从Clusters选项卡中,选择 CDH HDFS 服务。
- 转到文件浏览器选项卡。
- 转到包含要恢复的快照的目录。
- 单击完整路径名旁边的下拉菜单并选择 Take Snapshot。
显示拍摄快照屏幕。
- 输入快照的名称。
- 单击“确定”。
存在“拍摄快照”按钮,可立即对目录进行快照。
- 要拍摄快照,请单击“拍摄快照”,指定快照的名称,然后单击“拍摄快照”。快照被添加到快照列表中。
已拍摄的任何快照均按拍摄时间、名称和菜单按钮列出。
删除快照
- 从Clusters选项卡中,选择 CDH HDFS 服务。
- 转到文件浏览器选项卡。
- 转到包含要删除的快照的目录。
- 在快照列表中,找到要删除的快照,单击。
- 选择删除。
恢复快照
从快照还原之前,请确保有足够的磁盘空间。
- 从Clusters选项卡中,选择 CDH HDFS 服务。
- 转到文件浏览器选项卡。
- 转到要还原的目录。
- 在文件浏览器中,单击完整文件路径旁边的下拉菜单(在文件浏览器列表的右侧),然后选择以下选项之一:
- 从快照恢复目录
- 将目录从快照还原为...
显示恢复快照屏幕。
- 如果要将快照恢复到其他目录,请选择从快照恢复目录为...。输入必须将快照还原到的目录路径。确保 HDFS 上有足够的空间来从快照还原文件。
笔记
如果在将目录从快照还原为...字段中输入现有目录路径 ,则该目录将被覆盖。
- 选择以下选项之一:
- 恢复HDFS数据时,如果集群中存在MapReduce或YARN服务,则使用DistributedCopy(distcp)恢复目录,提高恢复速度。所述还原快照屏幕HDFS(下更多选项)允许使用的MapReduce或纱作为MapReduce的服务的选择。对于文件,或者如果 MapReduce 或 YARN 服务不存在,则执行正常复制。
- Skip Checksum Checks - 是否跳过校验和检查(默认是执行它们)。如果选中,则不会执行校验和验证。
- 使用 HDFS 'copy' 命令- 此选项执行速度较慢,并且在安全集群中不需要凭据。它将快照的内容复制为子目录或目标目录中的文件。
- 使用 DistCp / MapReduce - 此选项执行速度更快,并且需要安全集群中的凭据(运行方式)。它将目标目录与源快照的内容合并。选择此选项后,以下附加字段(与配置复制时可用的字段类似)将显示在“更多选项”下:
在以下情况下,您必须选择此属性以防止在恢复快照时失败:
- 在单个加密区域内恢复快照。
- 将快照从一个加密区域恢复到不同的加密区域。
- 将快照从未加密区域恢复到加密区域。
原文链接:https://docs.cloudera.com/cdp-private-cloud-upgrade/latest/data-migration/topics/cdp-data-migration-replication-manager-to-cdp-data-center.html