本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS Glue 將阿帕奇卡桑德拉工作負載遷移到 Amazon Keyspaces
創建者:尼古拉·科列斯尼科夫(AWS),卡思加普里亞·錢德蘭(AWS)和薩米爾·帕特爾(AWS)
環境:生產 | 來源:卡桑德拉 | 目標:Amazon Keyspaces |
R 類型:不適用 | 工作負載:開放原始碼;所有其他 | 技術:分析;移轉;無伺服器;大數據 |
AWS 服務:AWS AWS Glue;Amazon Keyspaces;Amazon S3;AWS CloudShell |
Summary
這種模式向您展示如何將現有的 Apache 卡桑德拉工作負載遷移到 Amazon Keyspaces(對於阿帕奇卡桑德拉)通過使用 AWS Glue CqlReplicator。您可以在 AWS Glue 上使用 CQlReplicator,將移轉工作負載的複寫延遲降到幾分鐘。您也會學到如何使用 Amazon Simple Storage Service (Amazon S3) 儲存貯體來存放遷移所需的資料,包括 Apache Parquet
先決條件和限制
先決條件
卡桑德拉群集與源表
Amazon Keyspaces 中的目標資料表以複寫工作負載
S3 儲存貯體,用於存放包含增量資料變更的中間 Parquet 檔案
S3 儲存貯體來存放任務組態檔案和指令碼
限制
AWS Glue 上的 CQLL 複製器需要一些時間來為卡桑德拉工作負載佈建資料處理單元 (DPU)。Cassandra 叢集與 Amazon 金鑰空間中的目標金鑰空間和表格之間的複寫延遲可能只持續幾分鐘。
架構
源, 技術, 堆棧
阿帕奇·卡桑德拉
DataStax 伺服器
南瓜属
目標技術堆疊
Amazon Keyspaces
移轉架構
下圖顯示了一個示例架構,其中 Cassandra 叢集託管在 EC2 執行個體上並分散在三個可用區域。該卡桑德拉節點託管在私有子網。
該圖顯示以下工作流程:
自訂服務角色可讓您存取 Amazon Keyspaces 和 S3 儲存貯體。
AWS Glue 任務會讀取 S3 儲存貯體中的任務組態和指令碼。
AWS AWS Glue 任務透過連接埠 9042 連線,以讀取卡桑德拉叢集中的資料。
AWS Glue 任務會透過連接埠 9142 連線,將資料寫入 Amazon Keyspaces。
工具
AWS 服務和工具
AWS Command Line Interface (AWS CLI) (AWS CLI) 是一種開放原始碼工具,可協助您透過命令列殼層中的命令與 AWS 服務互動。
AWS CloudShell 是以瀏覽器為基礎的殼層,您可以使用 AWS Command Line Interface (AWS CLI) (AWS CLI) 和一系列預先安裝的開發工具來管理 AWS 服務。
AWS Glue 是全受管的 ETL 服務,可協助您在資料存放區和資料串流之間可靠地分類、清理、豐富和移動資料。
Amazon Keyspaces(適用於 Apache Cassandra)是一種受管的資料庫服務,可協助您在 AWS 雲端中遷移、執行和擴展 Cassandra 工作負載。
Code
此模式的程式碼可在 GitHub CQL
最佳實務
若要判斷移轉所需的 AWS Glue 資源,請預估來源 Cassandra 資料表中的資料列數目。例如,每 0.25 個 DPU (2 個 vCPUs、4 GB 記憶體) 以及 84 GB 磁碟的每個資料列有 250 K 個資料列。
在運行 CQL 複製器之前預熱 Amazon Keyspaces 表。例如,八個 CQL複製器圖塊 (AWS Glue 任務) 每秒最多可寫入 22 K WCU,因此目標應預先加熱至每秒 25-30 K 的 WCU。
若要啟用 AWS Glue 元件之間的通訊,請對安全群組中的所有 TCP 連接埠使用自我參照的輸入規則。
使用增量流量策略隨時間分配移轉工作負載。
史诗
任務 | 描述 | 所需技能 |
---|---|---|
創建一個目標密鑰空間和表。 |
| 應用程式擁有者、AWS 管理員、DBA、應用程式開發人 |
配置卡桑德拉驅動程序連接到卡桑德拉。 | 使用下列組態指令碼:
注意:前面的腳本使用星火卡桑德拉連接器。有關更多信息,請參閱卡桑德拉 | DBA |
配置卡桑德拉驅動程序連接到 Amazon Keyspaces。 | 使用下列組態指令碼:
注意:前面的腳本使用星火卡桑德拉連接器。有關更多信息,請參閱卡桑德拉 | DBA |
為 AWS AWS Glue 任務建立 IAM 角色。 | 建立以 AWS Glue 命名 注意: | AWS DevOps |
在 AWS 中下載 CQL 複製器。 CloudShell | 執行下列命令,將專案下載到您的主資料夾:
| |
修改參考組態檔案。 | 將 | AWS DevOps |
啟動遷移程序。 | 下列指令會初始化 CQLReplicator 環境。初始化涉及複製 .jar 成品,以及建立 AWS Glue 連接器、S3 儲存貯體、AWS Glue 任務、
該指令碼包括下列參數:
| AWS DevOps |
驗證部署。 | 執行上一個命令之後,AWS 帳戶應包含下列項目:
| AWS DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
啟動移轉程序。 | 要在 AWS Glue 上操作 CQL 複製器,您需要使用 若要將工作負載從 Cassandra 叢集複寫到 Amazon Keyspaces,請執行下列命令:
您的源密鑰空間和表 若要複製更新,請新增 | AWS DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
在歷史遷移階段驗證遷移卡桑德拉行。 | 若要取得回填階段期間複製的資料列數目,請執行下列命令:
| AWS DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
使用命 | 若要正常停止移轉程序,請執行下列命令:
若要立即停止遷移程序,請使用 AWS Glue 主控台。 | AWS DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
刪除已部署的資源。 | 下列命令會刪除 AWS Glue 任務、連接器、S3 儲存貯體和 Keyspaces 表格
| AWS DevOps |
故障診斷
問題 | 解決方案 |
---|---|
AWS Glue 任務失敗並傳回記憶體不足 (OOM) 錯誤。 |
|
相關資源
其他資訊
移轉考量
您可以使用 AWS Glue 將您的 Cassandra 工作負載遷移到 Amazon Keyspaces 間,同時保持 Cassandra 來源資料庫在遷移過程中完全正常運作。複寫完成後,您可以選擇將應用程式切斷到 Amazon Keyspaces 間,而 Cassandra 叢集和 Amazon 金 Keyspaces 間之間的複寫延遲最小 (不到分鐘)。為了保持資料一致性,您也可以使用類似的管道將資料從 Amazon Keyspaces 複寫回 Cassandra 叢集。
寫入單位計算
舉個例子,假設您打算在一小時內寫入 500,000,000 的資料列大小為 1 KiB。您需要的 Amazon Keyspaces 寫入單位 (WCU) 總數是根據以下計算:
(number of rows/60 mins 60s) 1 WCU per row = (500,000,000/(60*60s) * 1 WCU) = 69,444 WCUs required
每秒 69,444 WCU 是 1 小時的速率,但您可以為開銷增加一些緩衝。 例如,69,444 * 1.10 = 76,388 WCUs
有 10% 的額外負荷。
通過使用 CQL 創建密鑰空間
若要使用 CQL 建立金鑰空間,請執行下列命令:
CREATE KEYSPACE target_keyspace WITH replication = {'class': 'SingleRegionStrategy'} CREATE TABLE target_keyspace.target_table ( userid uuid, level text, gameid int, description text, nickname text, zip text, email text, updatetime text, PRIMARY KEY (userid, level, gameid) ) WITH default_time_to_live = 0 AND CUSTOM_PROPERTIES = {'capacity_mode':{ 'throughput_mode':'PROVISIONED', 'write_capacity_units':76388, 'read_capacity_units':3612 }} AND CLUSTERING ORDER BY (level ASC, gameid ASC)