

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Migração de workloads do Apache Cassandra para o Amazon Keyspaces usando o AWS Glue
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue"></a>

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

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

Esse padrão mostra como migrar suas cargas de trabalho existentes do Apache Cassandra para o Amazon Keyspaces (para Apache Cassandra) usando o AWS Glue. CQLReplicator Você pode usar o CQLReplicator AWS Glue para minimizar o atraso de replicação da migração de suas cargas de trabalho em questão de minutos. Você também aprende a usar um bucket do Amazon Simple Storage Service (Amazon S3) para armazenar dados necessários para a migração, incluindo arquivos, arquivos de configuração e scripts do [Apache Parquet](https://parquet.apache.org/). Esse padrão pressupõe que suas cargas de trabalho do Cassandra estejam hospedadas em instâncias do Amazon Elastic Compute Cloud ( EC2Amazon) em uma nuvem privada virtual (VPC).

## Pré-requisitos e limitações
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-prereqs"></a>

**Pré-requisitos **
+ Cluster Cassandra com uma tabela de origem
+ Tabela de destino no Amazon Keyspaces para replicar a workload
+ Bucket do S3 para armazenar arquivos intermediários do Parquet que contêm alterações incrementais de dados
+ Bucket do S3 para armazenar scripts e arquivos de configuração do trabalho

**Limitações**
+ CQLReplicator no AWS Glue, é necessário algum tempo para provisionar unidades de processamento de dados (DPUs) para as cargas de trabalho do Cassandra. O atraso de replicação entre o cluster do Cassandra e o keyspace e a tabela de destino no Amazon Keyspaces provavelmente durará apenas alguns minutos.

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

**Pilha de tecnologia de origem**
+ Apache Cassandra
+ DataStax Servidor
+ ScyllaDB

**Pilha de tecnologias de destino**
+ Amazon Keyspaces

**Arquitetura de migração**

O diagrama a seguir mostra um exemplo de arquitetura em que um cluster do Cassandra é hospedado em EC2 instâncias e distribuído por três zonas de disponibilidade. Os nós do Cassandra encontram-se hospedados em sub-redes privadas.

![Perfil de serviço personalizado, Amazon Keyspaces e Amazon S3, com o AWS Glue estabelecendo conexão com a VPC dos nós.](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e08048da-8996-4f2c-b8ed-da49fe9e693b/images/76256ab3-a1e6-4c9e-9c40-dc78f51edf0f.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Um perfil de serviço personalizado fornece acesso ao Amazon Keyspaces e ao bucket do S3.

1. Um trabalho do AWS Glue que realiza a leitura da configuração e dos scripts do trabalho no bucket do S3.

1. O trabalho do AWS Glue se conecta pela porta 9042 para ler dados do cluster Cassandra.

1. O trabalho do AWS Glue se conecta por meio da porta 9142 para gravar dados no Amazon Keyspaces.

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

**Ferramentas e serviços da AWS**
+ A ‭[AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)‭ é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.
+  CloudShellA [AWS](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) é um shell baseado em navegador que você pode usar para gerenciar serviços da AWS usando a AWS Command Line Interface (AWS CLI) e uma variedade de ferramentas de desenvolvimento pré-instaladas.
+ O [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) é um serviço de ETL totalmente gerenciado que ajuda você a categorizar, limpar, enriquecer e mover dados de forma confiável entre armazenamentos de dados e fluxos de dados.
+ O [Amazon Keyspaces (para Apache Cassandra)](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html) é um serviço de banco de dados gerenciado que ajuda você a migrar, executar e escalar suas workloads do Cassandra na nuvem AWS.

**Código **

O código desse padrão está disponível no GitHub [CQLReplicator](https://github.com/aws-samples/cql-replicator/tree/main/glue)repositório.

## Práticas recomendadas
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-best-practices"></a>
+ Para determinar os recursos necessários do AWS Glue para a migração, estime o número de linhas na tabela de origem do Cassandra. Por exemplo, 250 K linhas por 0,25 DPU (2 vCPUs, 4 GB de memória) com disco de 84 GB.
+ Pré-aqueça as tabelas do Amazon Keyspaces antes de executá-las. CQLReplicator Por exemplo, oito CQLReplicator blocos (trabalhos do AWS Glue) podem gravar até 22 K WCUs por segundo, portanto, o alvo deve ser pré-aquecido até 25 a 30 K WCUs por segundo.
+ Para permitir a comunicação entre os componentes do AWS Glue, use uma regra de entrada autorreferenciada para todas as portas TCP no seu grupo de segurança.
+ Use a estratégia de tráfego incremental para distribuir a workload de migração ao longo do tempo.

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

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


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um espaço de teclas e uma tabela de destino.  | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | Proprietário do aplicativo, administrador da AWS, DBA, desenvolvedor do aplicativo | 
| Configure o driver do Cassandra para conectar-se ao Cassandra. | Use o seguinte script de configuração:<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>O script apresentado acima faz uso do Spark Cassandra Connector. Para obter mais informações, consulte a configuração de referência para o [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | DBA | 
| Configure o driver do Cassandra para se conectar ao Amazon Keyspaces. | Use o seguinte script de configuração:<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>O script apresentado acima faz uso do Spark Cassandra Connector. Para obter mais informações, consulte a configuração de referência para o [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | DBA | 
| Crie um perfil do IAM para o trabalho do AWS Glue. | Crie um novo perfil de serviço da AWS chamado `glue-cassandra-migration`, com o AWS Glue como entidade confiável.O código `glue-cassandra-migration` deve fornecer acesso de leitura e gravação ao bucket do S3 e ao Amazon Keyspaces O bucket do S3 contém os arquivos .jar, os arquivos de configuração para o Amazon Keyspaces e para o Cassandra, e os arquivos intermediários em Parquet. Por exemplo, ele contém as políticas gerenciadas `AWSGlueServiceRole`, `AmazonS3FullAccess` e `AmazonKeyspacesFullAccess`. | AWS DevOps | 
| Faça o download CQLReplicator na AWS CloudShell. | Faça o download do projeto na sua pasta inicial executando o seguinte comando:<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> |  | 
| Modifique os arquivos de configuração de referência. | Copie os arquivos `CassandraConnector.conf` e `KeyspacesConnector.conf` para o diretório `../glue/conf` dentro da pasta do projeto. | AWS DevOps | 
| Dê início ao processo de migração. | O comando a seguir inicializa o CQLReplicator ambiente. A inicialização envolve copiar os artefatos em .jar e criar um conector do AWS Glue, um bucket do S3, um trabalho do AWS Glue, o keyspace `migration` e a tabela `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 />O comando inclui os seguintes parâmetros:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 
| Valide a implantação. | Após executar o comando anterior, a conta da AWS deve conter o seguinte:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 

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


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Dê início ao processo de migração. | Para operar CQLReplicator no AWS Glue, você precisa usar o `--state run` comando, seguido por uma série de parâmetros. A configuração exata desses parâmetros depende principalmente dos seus requisitos específicos de migração. Por exemplo, essas definições podem variar se você optar por replicar valores de tempo de vida (TTL, na sigla em inglês) e atualizações, ou se descarregar objetos maiores que 1 MB no Amazon S3.<br />Para replicar a workload do cluster do Cassandra para o Amazon Keyspaces, execute o seguinte comando: <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 />O keyspace e a tabela de origem são `source_keyspace.source_table` no cluster do Cassandra. Enquanto o keyspace e a tabela de destino são `target_keyspace.target_table` no Amazon Keyspaces. O parâmetro `--inc-traffic` ajuda a evitar que o tráfego incremental sobrecarregue o cluster do Cassandra e o Amazon Keyspaces com um grande número de solicitações.<br />Para replicar atualizações, adicione `--writetime-column regular_column_name` à sua linha de comando. A coluna regular será usada como origem do carimbo de data/hora de gravação. | AWS DevOps | 

### Monitoramento do processo de migração
<a name="monitor-the-migration-process"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide as linhas do Cassandra migradas durante a fase de migração histórica. | Para obter o número de linhas replicadas durante a fase de preenchimento, execute o seguinte comando:<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 | 

### Interrupção do processo de migração
<a name="stop-the-migration-process"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Use o comando `cqlreplicator` ou o console do AWS Glue. | Para interromper o processo de migração corretamente, execute o seguinte comando:<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 />Para interromper o processo de migração imediatamente, use o console do AWS Glue. | AWS DevOps | 

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


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua os recursos implantados. | O comando apresentado a seguir excluirá o trabalho do AWS Glue, o conector, o bucket do S3 e a tabela `ledger` do Keyspaces:<pre>./cqlreplicator --state cleanup --landing-zone s3://cql-replicator-1234567890-us-west-2</pre> | AWS DevOps | 

## Solução de problemas
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Os trabalhos do AWS Glue falharam e retornaram um erro de falta de memória (OOM, na sigla em inglês). | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | 

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

## Mais informações
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-additional"></a>

**Considerações sobre a migração**

Você pode usar o AWS Glue para migrar seu workload do Cassandra para o Amazon Keyspaces, mantendo seus bancos de dados de origem do Cassandra completamente funcionais durante o processo de migração. Após a conclusão da replicação, você pode optar por transferir seus aplicativos para o Amazon Keyspaces com um atraso mínimo de replicação (menos de minutos) entre o cluster Cassandra e o Amazon Keyspaces. Para manter a consistência de dados, você também pode usar um pipeline similar para replicar os dados de volta para o cluster Cassandra a partir do Amazon Keyspaces.

**Grave cálculos unitários**

Como exemplo, considere que você pretende escrever 500.000.000 com o tamanho da linha 1 KiB durante uma hora. O número total de unidades de gravação (WCUs) do Amazon Keyspaces que você precisa é baseado neste cálculo:

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

69.444 WCUs por segundo é a taxa de 1 hora, mas você pode adicionar um pouco de amortecimento para despesas gerais.  Por exemplo, `69,444 * 1.10 = 76,388 WCUs` tem 10% de sobrecarga.

**Criação de um keyspace usando CQL**

Para criar um keyspace usando CQL, execute os seguintes comandos:

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