

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Migrasikan beban kerja Apache Cassandra ke Amazon Keyspaces dengan menggunakan AWS Glue
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue"></a>

*Nikolai Kolesnikov, Karthiga Priya Chandran, dan Samir Patel, Amazon Web Services*

## Ringkasan
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-summary"></a>

Pola ini menunjukkan cara memigrasikan beban kerja Apache Cassandra yang ada ke Amazon Keyspaces (untuk Apache Cassandra) dengan menggunakan AWS Glue. CQLReplicator Anda dapat menggunakan CQLReplicator AWS Glue untuk meminimalkan kelambatan replikasi migrasi beban kerja Anda hingga hitungan menit. Anda juga mempelajari cara menggunakan bucket Amazon Simple Storage Service (Amazon S3) untuk menyimpan data yang diperlukan untuk migrasi, [termasuk file Apache](https://parquet.apache.org/) Parquet, file konfigurasi, dan skrip. Pola ini mengasumsikan bahwa beban kerja Cassandra Anda di-host di instans Amazon Elastic Compute Cloud ( EC2Amazon) di cloud pribadi virtual (VPC).

## Prasyarat dan batasan
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-prereqs"></a>

**Prasyarat**
+ Cluster Cassandra dengan tabel sumber
+ Tabel target di Amazon Keyspaces untuk mereplikasi beban kerja
+ Bucket S3 untuk menyimpan file Parket perantara yang berisi perubahan data tambahan
+ Bucket S3 untuk menyimpan file dan skrip konfigurasi pekerjaan

**Batasan**
+ CQLReplicator pada AWS Glue memerlukan waktu untuk menyediakan Data Processing Units (DPUs) untuk beban kerja Cassandra. Jeda replikasi antara cluster Cassandra dan ruang kunci target dan tabel di Amazon Keyspaces kemungkinan akan berlangsung hanya dalam hitungan menit.

## Arsitektur
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-architecture"></a>

**Tumpukan teknologi sumber**
+ Apache Cassandra
+ DataStax Peladen
+ ScyllaDB

**Tumpukan teknologi target**
+ Amazon Keyspaces

**Arsitektur migrasi**

Diagram berikut menunjukkan contoh arsitektur di mana cluster Cassandra di-host pada EC2 instance dan tersebar di tiga Availability Zone. Node Cassandra di-host di subnet pribadi.

![Peran layanan khusus, Amazon Keyspaces, dan Amazon S3, dengan AWS Glue terhubung ke node VPC.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/e08048da-8996-4f2c-b8ed-da49fe9e693b/images/76256ab3-a1e6-4c9e-9c40-dc78f51edf0f.png)


Diagram menunjukkan alur kerja berikut:

1. Peran layanan khusus menyediakan akses ke Amazon Keyspaces dan bucket S3.

1. Pekerjaan AWS Glue membaca konfigurasi pekerjaan dan skrip di bucket S3.

1. Pekerjaan AWS Glue terhubung melalui port 9042 untuk membaca data dari cluster Cassandra.

1. Pekerjaan AWS Glue terhubung melalui port 9142 untuk menulis data ke Amazon Keyspaces.

## Alat
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-tools"></a>

**Layanan dan alat AWS**
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.
+ [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) adalah shell berbasis browser yang dapat Anda gunakan untuk mengelola layanan AWS dengan menggunakan AWS Command Line Interface (AWS CLI) Command Line Interface (AWS CLI) dan berbagai alat pengembangan yang telah diinstal sebelumnya.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) adalah layanan ETL yang dikelola sepenuhnya yang membantu Anda mengkategorikan, membersihkan, memperkaya, dan memindahkan data dengan andal antara penyimpanan data dan aliran data.
+ [Amazon Keyspaces (untuk Apache Cassandra)](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html) adalah layanan database terkelola yang membantu Anda memigrasi, menjalankan, dan menskalakan beban kerja Cassandra Anda di AWS Cloud.

**Kode**

Kode untuk pola ini tersedia di GitHub [CQLReplicator](https://github.com/aws-samples/cql-replicator/tree/main/glue)repositori.

## Praktik terbaik
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-best-practices"></a>
+ Untuk menentukan sumber daya AWS Glue yang diperlukan untuk migrasi, perkirakan jumlah baris dalam tabel sumber Cassandra. Misalnya, 250 K baris per 0,25 DPU (2 vCPUs, memori 4 GB) dengan disk 84 GB.
+ Tabel Amazon Keyspaces pra-hangat sebelum dijalankan. CQLReplicator Misalnya, delapan CQLReplicator ubin (AWS Glue jobs) dapat menulis hingga 22 K WCUs per detik, sehingga target harus dipanaskan terlebih dahulu hingga 25-30 K WCUs per detik.
+ Untuk mengaktifkan komunikasi antara komponen AWS Glue, gunakan aturan masuk referensi mandiri untuk semua port TCP di grup keamanan Anda.
+ Gunakan strategi lalu lintas tambahan untuk mendistribusikan beban kerja migrasi dari waktu ke waktu.

## Epik
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-epics"></a>

### Menyebarkan CQLReplicator
<a name="deploy-cqlreplicator"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat keyspace target dan tabel.  | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | Pemilik aplikasi, administrator AWS, DBA, Pengembang aplikasi | 
| Konfigurasikan driver Cassandra untuk terhubung ke Cassandra. | Gunakan skrip konfigurasi berikut:<pre>Datastax-java-driver {<br />  basic.request.consistency = "LOCAL_QUORUM"<br />  basic.contact-points = ["127.0.0.1:9042"]<br />   advanced.reconnect-on-init = true<br />   basic.load-balancing-policy {<br />        local-datacenter = "datacenter1"<br />}<br />advanced.auth-provider = {<br />       class = PlainTextAuthProvider<br />       username = "user-at-sample"<br />       password = "S@MPLE=PASSWORD="<br />}<br />}</pre>Skrip sebelumnya menggunakan Spark Cassandra Connector. Untuk informasi lebih lanjut, lihat konfigurasi referensi untuk [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | DBA | 
| Konfigurasikan driver Cassandra untuk terhubung ke Amazon Keyspaces. | Gunakan skrip konfigurasi berikut:<pre>datastax-java-driver {<br />basic {<br />  load-balancing-policy {<br />    local-datacenter = us-west-2<br />        }<br />  contact-points = [<br />            "cassandra.us-west-2.amazonaws.com:9142"<br />        ]<br />  request {<br />  page-size = 2500<br />  timeout = 360 seconds<br />  consistency = LOCAL_QUORUM<br />        }<br />    }<br />advanced {<br /> control-connection {<br />  timeout = 360 seconds<br />        }<br /> session-leak.threshold = 6<br /> connection {<br /> connect-timeout = 360 seconds<br /> init-query-timeout = 360 seconds<br /> warn-on-init-error = false<br />        }<br /> auth-provider = {<br />  class = software.aws.mcs.auth.SigV4AuthProvider<br />  aws-region = us-west-2<br /> }<br /><br /> ssl-engine-factory {<br />  class = DefaultSslEngineFactory<br />        }<br />    }<br />}</pre>Skrip sebelumnya menggunakan Spark Cassandra Connector. Untuk informasi lebih lanjut, lihat konfigurasi referensi untuk [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | DBA | 
| Buat peran IAM untuk pekerjaan AWS Glue. | Buat peran layanan AWS baru yang `glue-cassandra-migration` diberi nama AWS Glue sebagai entitas tepercaya.`glue-cassandra-migration`Seharusnya menyediakan akses baca dan tulis ke bucket S3 dan Amazon Keyspaces. Bucket S3 berisi file.jar, file konfigurasi untuk Amazon Keyspaces dan Cassandra, dan file Parket perantara. Misalnya, berisi `AWSGlueServiceRole``AmazonS3FullAccess`, dan kebijakan `AmazonKeyspacesFullAccess` terkelola. | AWS DevOps | 
| Unduh CQLReplicator di AWS CloudShell. | Unduh proyek ke folder rumah Anda dengan menjalankan perintah berikut:<pre>git clone https://github.com/aws-samples/cql-replicator.git<br />cd cql-replicator/glue<br /># Only for AWS CloudShell, the bc package includes bc and dc. Bc is an arbitrary precision numeric processing arithmetic language<br />sudo yum install bc -y</pre> |  | 
| Ubah file konfigurasi referensi. | Salin `CassandraConnector.conf` dan `KeyspacesConnector.conf` ke `../glue/conf` direktori di folder proyek. | AWS DevOps | 
| Memulai proses migrasi. | Perintah berikut menginisialisasi CQLReplicator lingkungan. Inisialisasi melibatkan penyalinan artefak.jar, dan membuat konektor AWS Glue, bucket S3, pekerjaan AWS Glue, keyspace, dan tabel: `migration` `ledger`<pre>cd cql-replicator/glue/bin<br />./cqlreplicator --state init --sg '"sg-1","sg-2"' \ <br />                --subnet "subnet-XXXXXXXXXXXX" \ <br />                --az us-west-2a --region us-west-2 \ <br />                --glue-iam-role glue-cassandra-migration \ <br />                --landing-zone s3://cql-replicator-1234567890-us-west-2<br /></pre><br />Skrip mencakup parameter berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 
| Validasi penerapan. | Setelah Anda menjalankan perintah sebelumnya, akun AWS harus berisi yang berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 

### Jalankan CQLReplicator
<a name="run-cqlreplicator"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Mulai proses migrasi. | Untuk beroperasi CQLReplicator pada AWS Glue, Anda perlu menggunakan `--state run` perintah, diikuti oleh serangkaian parameter. Konfigurasi yang tepat dari parameter ini terutama ditentukan oleh persyaratan migrasi unik Anda. Misalnya, pengaturan ini mungkin berbeda jika Anda memilih untuk mereplikasi nilai dan pembaruan time to live (TTL), atau Anda membongkar objek melebihi 1 MB ke Amazon S3.<br />Untuk mereplikasi beban kerja dari cluster Cassandra ke Amazon Keyspaces, jalankan perintah berikut: <pre>./cqlreplicator --state run --tiles 8  \<br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \ <br />                --region us-west-2 \                              <br />                --src-keyspace source_keyspace \ <br />                --src-table source_table \  <br />                --trg-keyspace taget_keyspace \<br />                --writetime-column column_name \<br />                --trg-table target_table --inc-traffic</pre><br />Ruang kunci dan tabel sumber Anda ada `source_keyspace.source_table` di cluster Cassandra. Ruang kunci dan tabel target Anda ada `target_keyspace.target_table` di Amazon Keyspaces. Parameter ini `--inc-traffic` membantu mencegah lalu lintas tambahan membebani cluster Cassandra dan Amazon Keyspaces dengan jumlah permintaan yang tinggi.<br />Untuk mereplikasi pembaruan, tambahkan `--writetime-column regular_column_name` ke baris perintah Anda. Kolom reguler akan digunakan sebagai sumber stempel waktu tulis. | AWS DevOps | 

### Memantau proses migrasi
<a name="monitor-the-migration-process"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Validasi baris Cassandra yang dimigrasi selama fase migrasi historis. | Untuk mendapatkan jumlah baris yang direplikasi selama fase penimbunan ulang, jalankan perintah berikut:<pre>./cqlreplicator --state stats \<br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \  <br />                --src-keyspace source_keyspace --src-table source_table --region us-west-2</pre> | AWS DevOps | 

### Hentikan proses migrasi
<a name="stop-the-migration-process"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Gunakan `cqlreplicator` perintah atau konsol AWS Glue. | Untuk menghentikan proses migrasi dengan anggun, jalankan perintah berikut:<pre>./cqlreplicator --state request-stop --tiles 8 \                         <br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \     <br />                --region us-west-2 \                     <br />                --src-keyspace source_keyspace --src-table source_table</pre><br />Untuk segera menghentikan proses migrasi, gunakan konsol AWS Glue. | AWS DevOps | 

### Bersihkan
<a name="clean-up"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Hapus sumber daya yang digunakan. | Perintah berikut akan menghapus tabel AWS Glue job, konektor, bucket S3, dan `ledger` Keyspaces:<pre>./cqlreplicator --state cleanup --landing-zone s3://cql-replicator-1234567890-us-west-2</pre> | AWS DevOps | 

## Pemecahan masalah
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Pekerjaan AWS Glue gagal dan mengembalikan kesalahan Kehabisan Memori (OOM). | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | 

## Sumber daya terkait
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-resources"></a>
+ [CQLReplicator dengan AWS Glue README.MD](https://github.com/aws-samples/cql-replicator/blob/main/glue/README.MD)
+ [Dokumentasi AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [Dokumentasi Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html)
+ [Apache Cassandra](https://cassandra.apache.org/_/index.html)

## Informasi tambahan
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-additional"></a>

**Pertimbangan migrasi**

Anda dapat menggunakan AWS Glue untuk memigrasikan beban kerja Cassandra Anda ke Amazon Keyspaces, sambil menjaga database sumber Cassandra Anda berfungsi sepenuhnya selama proses migrasi. Setelah replikasi selesai, Anda dapat memilih untuk memotong aplikasi Anda ke Amazon Keyspaces dengan jeda replikasi minimal (kurang dari menit) antara cluster Cassandra dan Amazon Keyspaces. Untuk menjaga konsistensi data, Anda juga dapat menggunakan pipeline serupa untuk mereplikasi data kembali ke cluster Cassandra dari Amazon Keyspaces.

**Tulis perhitungan unit**

Sebagai contoh, pertimbangkan bahwa Anda bermaksud menulis 500.000.000 dengan ukuran baris 1 KiB selama satu jam. Jumlah total unit tulis Amazon Keyspaces (WCUs) yang Anda butuhkan didasarkan pada perhitungan ini:

`(number of rows/60 mins 60s) 1 WCU per row = (500,000,000/(60*60s) * 1 WCU) = 69,444 WCUs required`

69.444 WCUs per detik adalah tarif untuk 1 jam, tetapi Anda dapat menambahkan beberapa bantal untuk overhead.  Misalnya, `69,444 * 1.10 = 76,388 WCUs` memiliki overhead 10 persen.

**Buat keyspace dengan menggunakan CQL**

Untuk membuat keyspace dengan menggunakan CQL, jalankan perintah berikut:

```
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)
```