本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
离线迁移适用于能够容忍停机一段时间来执行迁移的情况。在企业中,通常会有补丁维护时段、大型版本维护时段或需要停机一段时间来执行硬件升级或重大升级等。离线迁移可以利用此时段复制数据,并将应用程序流量从 Apache Cassandra 切换到 Amazon Keyspaces。
离线迁移可以减少对应用程序的修改,因为它不需要与 Cassandra 和 Amazon Keyspaces 进行通信。此外,暂停数据流后,无需保持变更即可复制确切的状态。
在本示例中,我们使用 Amazon Simple Storage Service(Amazon S3)作为离线迁移期间数据的暂存区域,以最大限度地减少停机时间。您可以使用 Spark Cassandra 连接器和 AWS Glue 将在 Amazon S3 中以 Parquet 格式存储的数据自动导入到 Amazon Keyspaces 表中。以下小节将简要概述此过程。您可以在 Github
使用 Amazon S3 和 AWS Glue 执行从 Apache Cassandra 到 Amazon Keyspaces 的离线迁移过程需要以下 AWS Glue 作业。
提取和转换 CQL 数据并将其存储在 Amazon S3 存储桶中的 ETL 作业。
第二个作业是将存储桶中的数据导入到 Amazon Keyspaces。
第三个作业是导入增量数据。
如何从运行于 Amazon Virtual Private Cloud 中 Amazon EC2 的 Cassandra 离线迁移到 Amazon Keyspaces
首先使用 AWS Glue 以 Parquet 格式从 Cassandra 导出表数据,并将其保存到 Amazon S3 存储桶中。您需要使用连接 VPC 的 AWS Glue 连接器运行 AWS Glue 作业,而运行 Cassandra 的 Amazon EC2 实例位于该 VPC 中。然后,使用 Amazon S3 私有端点,您可以将数据保存到 Amazon S3 存储桶。
下图说明了这些步骤。
对 Amazon S3 存储桶中的数据进行随机排序,以改善数据随机掩码。均匀导入的数据允许在目标表中分配更多的流量。
从具有大型分区(超过 1000 行的分区)的 Cassandra 导出数据时需要执行此步骤,以避免在将数据插入到 Amazon Keyspaces 时出现热键模式。热键问题会导致 Amazon Keyspaces 中出现
WriteThrottleEvents
并导致加载时间延长。使用其他 AWS Glue 作业将数据从 Amazon S3 存储桶导入到 Amazon Keyspaces。Amazon S3 存储桶中经过随机排序的数据以 Parquet 格式存储。
有关离线迁移过程的更多信息,请参阅 Amazon Keyspaces with AWS Glue