

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á.

# Conectando-se aos bancos de dados do Apache Hadoop com o AWS Schema Conversion Tool
<a name="CHAP_Source.Hadoop"></a>

Você pode usar a interface de linha de AWS SCT comando (CLI) para migrar do Apache Hadoop para o Amazon EMR. AWS SCT usa seu bucket Amazon S3 como armazenamento temporário para seus dados durante a migração.

AWS SCT suporta como fonte o Apache Hadoop versão 2.2.0 e superior. Além disso, é AWS SCT compatível com o Apache Hive versão 0.13.0 e superior.

AWS SCT suporta como destino a versão 6.3.0 e superior do Amazon EMR. Além disso, AWS SCT suporta como destino o Apache Hadoop versão 2.6.0 e superior e o Apache Hive versão 0.13.0 e superior.

**Topics**
+ [Pré-requisitos de uso do Apache Hadoop como origem](#CHAP_Source.Hadoop.Prerequisites)
+ [Permissões para usar o Hive como origem](#CHAP_Source.Hadoop.Permissions)
+ [Permissões para usar o HDFS como origem](#CHAP_Source.Hadoop.PermissionsHDFS)
+ [Permissões para usar o HDFS como destino](#CHAP_Source.Hadoop.PermissionsHDFSTarget)
+ [Como se conectar ao Apache Hadoop como origem](#CHAP_Source.Hadoop.Connecting)
+ [Como se conectar aos serviços Hive e HDFS de origem](#CHAP_Source.Hadoop.Hive)
+ [Como se conectar ao Amazon EMR como destino](#CHAP_Source.Hadoop.Target)

## Pré-requisitos de uso do Apache Hadoop como origem
<a name="CHAP_Source.Hadoop.Prerequisites"></a>

Os pré-requisitos a seguir são necessários para se conectar ao Apache Hadoop com a CLI da AWS SCT .
+ Crie um bucket do Amazon S3 para armazenar dados durante a migração. Em seguida, você pode copiar dados para o Amazon EMR HDFS ou usar o Amazon S3 como um repositório de dados para seus workloads do Hadoop. Para obter mais informações, consulte [Como criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) no *Guia do usuário do Amazon S3*.
+ Crie uma função AWS Identity and Access Management (IAM) com a `AmazonS3FullAccess` política. AWS SCT usa essa função do IAM para acessar seu bucket do Amazon S3.
+ Anote sua chave AWS secreta e sua chave de acesso AWS secreta. Para obter mais informações sobre chaves de AWS acesso, consulte [Gerenciamento de chaves de acesso](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) no *Guia do usuário do IAM*.
+ Criar e configurar um cluster do Amazon EMR de destino. Para obter mais informações, consulte [Conceitos básicos do Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html) no *Guia de gerenciamento do Amazon EMR*.
+ Instale o utilitário `distcp` em seu cluster Apache Hadoop de origem. Além disso, instale o utilitário `s3-dist-cp` em seu cluster do Amazon EMR de destino. Certifique-se de que os usuários do banco de dados tenham permissões para executar esses utilitários.
+ Configure o arquivo `core-site.xml` em seu cluster Hadoop de origem para usar o protocolo s3a. Para fazer isso, defina o parâmetro `fs.s3a.aws.credentials.provider` com um dos seguintes valores:
  + `org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider`
  + `org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider`
  + `org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider`
  + `org.apache.hadoop.fs.s3a.auth.AssumedRoleCredentialProvider`

  É possível adicionar o exemplo de código a seguir ao arquivo `core-site.xml`.

  ```
  <property>
    <name>fs.s3a.aws.credentials.provider</name>
    <value>org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider</value>
  </property>
  ```

  O exemplo anterior mostra uma das quatro opções da lista de opções anterior. Se você não definir o `fs.s3a.aws.credentials.provider` parâmetro no `core-site.xml` arquivo, AWS SCT escolherá o provedor automaticamente.

## Permissões para usar o Hive como origem
<a name="CHAP_Source.Hadoop.Permissions"></a>

As permissões necessárias para um usuário do Hive de origem são as seguintes:
+ Acesso `READ` às pastas de dados de origem e ao bucket do Amazon S3 de origem
+ Acesso `READ+WRITE` aos buckets do Amazon S3 intermediários e de destino

Para aumentar a velocidade de migração, recomendamos que você execute a compactação para tabelas de origem transacionais ACID.

As permissões necessárias para um usuário do Amazon EMR Hive de destino são as seguintes:
+ Acesso `READ` ao bucket do Amazon S3 de destino
+ Acesso `READ+WRITE` ao bucket do Amazon S3 intermediário
+ Acesso `READ+WRITE` às pastas HDFS de destino

## Permissões para usar o HDFS como origem
<a name="CHAP_Source.Hadoop.PermissionsHDFS"></a>

As permissões necessárias para o HDFS como origem são as seguintes:
+ `EXECUTE`para o NameNode
+ `EXECUTE+READ` para todas as pastas e arquivos de origem que você inclui no projeto de migração
+ `READ+WRITE`para o `tmp` diretório no NameNode para executar trabalhos do Spark e armazenar arquivos antes da migração para o Amazon S3

No HDFS, todas as operações exigem acesso transversal. O acesso transversal exige a permissão da `EXECUTE` em todos os componentes existentes do caminho, exceto no componente final do caminho. Por exemplo, para qualquer operação de acesso `/foo/bar/baz`, seu usuário deve ter permissão `EXECUTE` em `/`, `/foo` e `/foo/bar`.

O exemplo de código a seguir demonstra como conceder permissões `EXECUTE+READ` para suas pastas e arquivos de origem e permissões `READ+WRITE` para o diretório `tmp`.

```
hadoop fs –chmod –R 744 /user/hdfs-data
hadoop fs –chmod –R 766 /tmp
```

## Permissões para usar o HDFS como destino
<a name="CHAP_Source.Hadoop.PermissionsHDFSTarget"></a>

As permissões necessárias para o Amazon EMR HDFS como destino são as seguintes:
+ `EXECUTE`para o NameNode cluster de destino do Amazon EMR
+ `READ+WRITE` para as pastas HDFS de destino nas quais você armazenará dados após a migração

## Como se conectar ao Apache Hadoop como origem
<a name="CHAP_Source.Hadoop.Connecting"></a>

Você pode usar o Apache Hadoop como fonte na AWS SCT versão 1.0.670 ou superior. Você pode migrar clusters do Hadoop para o Amazon EMR somente na interface de AWS SCT linha de comando (CLI). Antes de começar a usar, familiarize-se com a interface de linha de comandos da AWS SCT. Para obter mais informações, consulte [Referência CLI para AWS Schema Conversion Tool](CHAP_Reference.md).

**Para se conectar ao Apache Hadoop na CLI AWS SCT**

1. Crie um novo script de AWS SCT CLI ou edite um modelo de cenário existente. Por exemplo, é possível baixar e editar o modelo `HadoopMigrationTemplate.scts`. Para obter mais informações, consulte [Obter cenários de CLI](CHAP_Reference.md#CHAP_Reference.Scenario).

1. Defina as configurações do AWS SCT aplicativo, como a localização do driver e a pasta de registro.

   Faça o download do driver JDBC necessário e especifique o local de armazenamento do arquivo. Para obter mais informações, consulte [Instalando drivers JDBC para AWS Schema Conversion Tool](CHAP_Installing.JDBCDrivers.md).

   O exemplo de código a seguir mostra como adicionar o caminho ao driver do Apache Hive. Depois de executar esse exemplo de código, AWS SCT armazena os arquivos de log na `c:\sct` pasta.

   ```
   SetGlobalSettings
       -save: 'true'
       -settings: '{
           "hive_driver_file": "c:\\sct\\HiveJDBC42.jar",
           "log_folder": "c:\\sct",
           "console_log_folder": "c:\\sct"
       }'
   /
   ```

   Você pode usar esse exemplo e os exemplos a seguir no Windows.

1. Crie um novo AWS SCT projeto.

   O exemplo de código a seguir cria o projeto da `hadoop_emr` na pasta `c:\sct`.

   ```
   CreateProject
       -name: 'hadoop_emr'
       -directory: 'c:\sct'
   /
   ```

1. Adicione seu cluster Hadoop de origem ao projeto.

   Use o comando `AddSourceCluster` para se conectar ao cluster Hadoop de origem. Certifique-se de fornecer valores para os seguintes parâmetros obrigatórios: `name`, `host`, `port` e `user`. Outros parâmetros são opcionais.

   O exemplo de código a seguir adiciona o cluster Hadoop de origem. Este exemplo define `HADOOP_SOURCE` como um nome do cluster de origem. Use esse nome de objeto para adicionar serviços Hive e HDFS ao projeto e criar regras de mapeamento.

   ```
   AddSourceCluster
       -name: 'HADOOP_SOURCE'
       -vendor: 'HADOOP'
       -host: 'hadoop_address'
       -port: '22'
       -user: 'hadoop_user'
       -password: 'hadoop_password'
       -useSSL: 'true'
       -privateKeyPath: 'c:\path\name.pem'
       -passPhrase: 'hadoop_passphrase'
   /
   ```

   No exemplo anterior, *hadoop\$1address* substitua pelo endereço IP do seu cluster Hadoop. Se necessário, configure o valor da opção de porta. Em seguida, substitua *hadoop\$1user* e *hadoop\$1password* pelo nome do seu usuário do Hadoop e a senha desse usuário. Para*path\$1name*, insira o nome e o caminho para o arquivo PEM do seu cluster Hadoop de origem.

1. Salve o script da CLI. Em seguida, adicione as informações de conexão dos seus serviços Hive e HDFS.

## Como se conectar aos serviços Hive e HDFS de origem
<a name="CHAP_Source.Hadoop.Hive"></a>

Você pode se conectar aos serviços Hive e HDFS de origem com a CLI AWS SCT . Para se conectar ao Apache Hive, use o driver JDBC do Hive versão 2.3.4 ou superior. Para obter mais informações, consulte [Instalando drivers JDBC para AWS Schema Conversion Tool](CHAP_Installing.JDBCDrivers.md).

AWS SCT se conecta ao Apache Hive com o usuário do `hadoop` cluster. Para fazer isso, use os comandos `AddSourceClusterHive` e `AddSourceClusterHDFS`. Você pode usar uma das abordagens a seguir.
+ Crie um novo túnel SSH.

  Em `createTunnel`, digite **true**. Para `host`, insira o endereço IP interno do seu serviço Hive ou HDFS de origem. Para `port`, insira a porta de serviço do seu serviço Hive ou HDFS.

  Em seguida, insira suas credenciais do Hive ou do HDFS para `user` e `password`. Para obter mais informações sobre túneis SSH, consulte [Configurar um túnel SSH ao nó primário usando o encaminhamento de portas locais](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ssh-tunnel-local.html) no Guia de gerenciamento do Amazon EMR.
+ Use um túnel SSH existente.

  Em `host`, digite **localhost**. Para `port`, insira a porta local a partir dos parâmetros do túnel SSH.
+ Conecte-se diretamente aos seus serviços Hive e HDFS.

  Para `host`, insira o endereço IP ou nome do host do seu serviço Hive ou HDFS de origem. Para `port`, insira a porta de serviço do seu serviço Hive ou HDFS. Em seguida, insira suas credenciais do Hive ou do HDFS para `user` e `password`.

**Para se conectar ao Hive e ao HDFS na CLI AWS SCT**

1. Abra seu script de CLI, que inclui as informações de conexão do seu cluster Hadoop de origem. Certifique-se de usar o nome do cluster Hadoop que você definiu na etapa anterior.

1. Adicione seu serviço Hive de origem ao projeto.

   Use o comando `AddSourceClusterHive` para conectar o serviço Hive de origem. Certifique-se de fornecer valores para os seguintes parâmetros obrigatórios: `user`, `password`, `cluster`, `name` e `port`. Outros parâmetros são opcionais.

   O exemplo de código a seguir cria um túnel AWS SCT para trabalhar com seu serviço Hive. Esse serviço Hive de origem é executado no mesmo PC que AWS SCT. Este exemplo usa o cluster de `HADOOP_SOURCE` de origem do exemplo anterior.

   ```
   AddSourceClusterHive
       -cluster: 'HADOOP_SOURCE'
       -name: 'HIVE_SOURCE'
       -host: 'localhost'
       -port: '10005'
       -user: 'hive_user'
       -password: 'hive_password'
       -createTunnel: 'true'
       -localPort: '10005'
       -remoteHost: 'hive_remote_address'
       -remotePort: 'hive_port'
   /
   ```

   O exemplo de código a seguir se conecta ao seu serviço Hive sem um túnel.

   ```
   AddSourceClusterHive
       -cluster: 'HADOOP_SOURCE'
       -name: 'HIVE_SOURCE'
       -host: 'hive_address'
       -port: 'hive_port'
       -user: 'hive_user'
       -password: 'hive_password'
   /
   ```

   Nos exemplos anteriores, substitua *hive\$1user* e *hive\$1password* pelo nome do usuário do Hive e a senha desse usuário.

   Em seguida, substitua *hive\$1address* e *hive\$1port* pelo endereço NameNode IP e pela porta do seu cluster Hadoop de origem.

   Para isso*hive\$1remote\$1address*, você pode usar o valor padrão `127.0.0.1` ou o endereço NameNode IP do seu serviço Hive de origem.

1. Adicione seu serviço HDFS de origem ao projeto.

   Use o comando `AddSourceClusterHDFS` para conectar o serviço HDFS de origem. Certifique-se de fornecer valores para os seguintes parâmetros obrigatórios: `user`, `password`, `cluster`, `name` e `port`. Outros parâmetros são opcionais.

   Certifique-se de que seu usuário tenha as permissões necessárias para migrar dados do serviço HDFS de origem. Para obter mais informações, consulte [Permissões para usar o Hive como origem](#CHAP_Source.Hadoop.Permissions).

   O exemplo de código a seguir cria um túnel AWS SCT para trabalhar com seu serviço Apache HDFS. Este exemplo usa o cluster `HADOOP_SOURCE` de origem que você criou anteriormente.

   ```
   AddSourceClusterHDFS
       -cluster: 'HADOOP_SOURCE'
       -name: 'HDFS_SOURCE'
       -host: 'localhost'
       -port: '9005'
       -user: 'hdfs_user'
       -password: 'hdfs_password'
       -createTunnel: 'true'
       -localPort: '9005'
       -remoteHost: 'hdfs_remote_address'
       -remotePort: 'hdfs_port'
   /
   ```

   O código a seguir se conecta ao seu serviço Apache HDFS sem um túnel.

   ```
   AddSourceClusterHDFS
       -cluster: 'HADOOP_SOURCE'
       -name: 'HDFS_SOURCE'
       -host: 'hdfs_address'
       -port: 'hdfs_port'
       -user: 'hdfs_user'
       -password: 'hdfs_password'
   /
   ```

   Nos exemplos anteriores, substitua *hdfs\$1user* e *hdfs\$1password* pelo nome do usuário do HDFS e a senha desse usuário.

   Em seguida, substitua *hdfs\$1address* e *hdfs\$1port* pelo endereço NameNode IP e pela porta do seu cluster Hadoop de origem.

   Para isso*hdfs\$1remote\$1address*, você pode usar o valor padrão `127.0.0.1` ou o endereço NameNode IP do seu serviço Hive de origem.

1. Salve o script da CLI. Em seguida, adicione as informações de conexão do seu cluster do Amazon EMR de destino e os comandos de migração.

## Como se conectar ao Amazon EMR como destino
<a name="CHAP_Source.Hadoop.Target"></a>

Você pode se conectar ao seu cluster de destino do Amazon EMR com a CLI AWS SCT . Para fazer isso, você autoriza o tráfego de entrada e usa o SSH. Nesse caso, AWS SCT tem todas as permissões necessárias para trabalhar com seu cluster do Amazon EMR. Para obter mais informações, consulte [Antes de se conectar](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-ssh-prereqs.html) e [Conectar-se ao nó primário usando SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) no Guia de gerenciamento do Amazon EMR.

AWS SCT se conecta ao Amazon EMR Hive com o usuário do `hadoop` cluster. Para se conectar ao Hive do Amazon EMR, use o driver JDBC do Hive versão 2.6.2.1002 ou superior. Para obter mais informações, consulte [Instalando drivers JDBC para AWS Schema Conversion Tool](CHAP_Installing.JDBCDrivers.md).

**Para se conectar ao Amazon EMR na CLI AWS SCT**

1. Abra seu script de CLI, que inclui as informações de conexão do seu cluster Hadoop de origem. Adicione as credenciais do Amazon EMR de destino a esse arquivo.

1. Adicione seu cluster do Amazon EMR de destino ao projeto.

   O exemplo de código a seguir adiciona o cluster do Amazon EMR de destino. Este exemplo define `HADOOP_TARGET` como um nome do cluster de destino. Use esse nome de objeto para adicionar seus serviços Hive e HDFS e uma pasta de bucket do Amazon S3 ao projeto e crie regras de mapeamento.

   ```
   AddTargetCluster
   	-name: 'HADOOP_TARGET'
   	-vendor: 'AMAZON_EMR'
   	-host: 'ec2-44-44-55-66.eu-west-1.EXAMPLE.amazonaws.com'
   	-port: '22'
   	-user: 'emr_user'
   	-password: 'emr_password'
   	-useSSL: 'true'
   	-privateKeyPath: 'c:\path\name.pem'
   	-passPhrase: '1234567890abcdef0!'
   	-s3Name: 'S3_TARGET'
   	-accessKey: 'AKIAIOSFODNN7EXAMPLE'
   	-secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
   	-region: 'eu-west-1'
   	-s3Path: 'doc-example-bucket/example-folder'
   /
   ```

   No exemplo anterior, insira os nomes dos AWS recursos e as informações de conexão do Amazon EMR. Isso inclui o endereço IP do seu cluster do Amazon EMR, chave de AWS acesso, chave de acesso AWS secreta e bucket do Amazon S3. Se necessário, configure o valor da variável de porta. Em seguida, *emr\$1password* substitua *emr\$1user* e pelo nome do seu usuário do Amazon EMR e a senha desse usuário. Para*path\$1name*, insira o nome e o caminho para o arquivo PEM do seu cluster Amazon EMR de destino. Para mais informações, consulte [Baixar arquivo PEM para acesso ao cluster do EMR.](https://docs.aws.amazon.com/whitepapers/latest/teaching-big-data-skills-with-amazon-emr/download-pem-file-for-emr-cluster-access.html)

1. Adicione o bucket do Amazon S3 de destino ao projeto.

   O exemplo de código a seguir adiciona o bucket do Amazon S3 de destino. Este exemplo usa o cluster `HADOOP_TARGET` que você criou antes.

   ```
   AddTargetClusterS3
   	-cluster: 'HADOOP_TARGET'
   	-Name: 'S3_TARGET'
   	-accessKey: 'AKIAIOSFODNN7EXAMPLE'
   	-secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
   	-region: 'eu-west-1'
   	-s3Path: 'doc-example-bucket/example-folder'
   /
   ```

   No exemplo anterior, insira sua chave de AWS acesso, chave de acesso AWS secreta e bucket do Amazon S3.

1. Adicione seu serviço Hive de destino ao projeto.

   O exemplo de código a seguir cria um túnel AWS SCT para trabalhar com seu serviço Hive de destino. Este exemplo usa o cluster `HADOOP_TARGET` de destino que você criou anteriormente.

   ```
   AddTargetClusterHive
       -cluster: 'HADOOP_TARGET'
       -name: 'HIVE_TARGET'
       -host: 'localhost'
       -port: '10006'
       -user: 'hive_user'
       -password: 'hive_password'
       -createTunnel: 'true'
       -localPort: '10006'
       -remoteHost: 'hive_address'
       -remotePort: 'hive_port'
   /
   ```

   No exemplo anterior, substitua *hive\$1user* e *hive\$1password* pelo nome do seu usuário do Hive e a senha desse usuário.

   Em seguida, *hive\$1address* substitua pelo valor padrão `127.0.0.1` ou pelo endereço NameNode IP do seu serviço Hive de destino. Em seguida, *hive\$1port* substitua pela porta do serviço Hive de destino.

1. Adicione seu serviço HDFS de destino ao projeto.

   O exemplo de código a seguir cria um túnel AWS SCT para trabalhar com seu serviço Apache HDFS. Este exemplo usa o cluster `HADOOP_TARGET` de destino que você criou anteriormente.

   ```
   AddTargetClusterHDFS
       -cluster: 'HADOOP_TARGET'
       -name: 'HDFS_TARGET'
       -host: 'localhost'
       -port: '8025'
       -user: 'hdfs_user'
       -password: 'hdfs_password'
       -createTunnel: 'true'
       -localPort: '8025'
       -remoteHost: 'hdfs_address'
       -remotePort: 'hdfs_port'
   /
   ```

   No exemplo anterior, substitua *hdfs\$1user* e *hdfs\$1password* pelo nome do usuário do HDFS e a senha desse usuário.

   Em seguida, *hdfs\$1port* substitua *hdfs\$1address* e pelo endereço IP privado e pela porta NameNode do serviço HDFS de destino.

1. Salve o script da CLI. Em seguida, adicione regras de mapeamento e comandos de migração. Para obter mais informações, consulte [Migração de workloads do Hadoop](big-data-hadoop.md).