Como usar o Apache Hadoop como origem para AWS SCT - AWS Schema Conversion Tool

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

Como usar o Apache Hadoop como origem para AWS SCT

É possível usar a interface de linha de comandos (CLI) da AWS SCT para migrar do Apache Hadoop para o Amazon EMR. A AWS SCT usa seu bucket do Amazon S3 como armazenamento temporário para seus dados durante a migração.

A AWS SCT oferece suporte como Apache Hadoop de origem versão 2.2.0 e superior. Além disso, a AWS SCT oferece suporte com o Apache Hive versão 0.13.0 e superior.

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

Pré-requisitos de uso do Apache Hadoop como origem

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 suas cargas de trabalho do Hadoop. Para obter mais informações, consulte Como criar um bucket no Guia do usuário do Amazon S3.

  • Crie um perfil (IAM) AWS Identity and Access Management com a política de AmazonS3FullAccess. A AWS SCT usa esse perfil do IAM para acessar o bucket do Amazon S3.

  • Anote sua chave AWS secreta e sua chave de acesso AWS secreta. Para obter mais informações sobre as chaves de acesso da AWS, consulte Como gerenciar chaves de acesso no Guia de 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 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 parâmetro fs.s3a.aws.credentials.provider no arquivo core-site.xml, a AWS SCT escolherá o provedor automaticamente.

Permissões para usar o Hive como origem

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

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 diretório tmp 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

As permissões necessárias para o Amazon EMR HDFS como destino são as seguintes:

  • EXECUTE para o NameNode do cluster Amazon EMR de destino

  • 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

Você pode usar o Apache Hadoop como origem na AWS SCT versão 1.0.670 ou superior. É possível migrar clusters do Hadoop para o Amazon EMR somente na interface de linha de comandos (CLI) da AWS SCT. Antes de começar a usar, familiarize-se com a interface de linha de comandos da AWS SCT. Para obter mais informações, consulte AWS SCT Referência da CLI.

Para se conectar ao Apache Hadoop na CLI da AWS SCT
  1. Crie um novo script de CLI da AWS SCT 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.

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

    Faça o download do driver JDBC necessário e especifique o local de armazenamento do arquivo. Para obter mais informações, consulte Baixar os drivers de banco de dados necessários.

    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, a AWS SCT armazena os arquivos de log na pasta c:\sct.

    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.

  3. Criar um novo projeto da AWS SCT.

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

    CreateProject -name: 'hadoop_emr' -directory: 'c:\sct' /
  4. 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, substitua hadoop_address pelo endereço IP do seu cluster Hadoop. Se necessário, configure o valor da opção de porta. Em seguida, substitua hadoop_user e hadoop_password pelo nome do seu usuário do Hadoop e pela senha desse usuário. Em path\name, insira o nome e o caminho para o arquivo PEM do seu cluster Hadoop de origem.

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

Você pode se conectar aos serviços Hive e HDFS de origem com a CLI da 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 Baixar os drivers de banco de dados necessários.

A AWS SCT se conecta ao Apache Hive com o usuário do cluster hadoop. 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 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 da 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.

  2. 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 para AWS SCT 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_user e hive_password pelo nome do seu usuário do Hive e pela senha desse usuário.

    Em seguida, substitua hive_address e hive_port pelo endereço IP NameNode e pela porta do seu cluster Hadoop de origem.

    Para hive_remote_address, você pode usar o valor padrão 127.0.0.1 ou o endereço IP NameNode do seu serviço Hive de origem.

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

    O exemplo de código a seguir cria um túnel para AWS SCT 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_user e hdfs_password pelo nome do seu usuário do HDFS e pela senha desse usuário.

    Em seguida, substitua hdfs_address e hdfs_port pelo endereço IP NameNode e pela porta do seu cluster Hadoop de origem.

    Para hdfs_remote_address, você pode usar o valor padrão 127.0.0.1 ou o endereço IP NameNode do seu serviço Hive de origem.

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

Você pode se conectar ao seu cluster do Amazon EMR de destino com a CLI da 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 e Conectar-se ao nó primário usando SSH no Guia de gerenciamento do Amazon EMR.

AWS SCT se conecta ao Hive do Amazon EMR com o usuário do cluster hadoop. 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 Baixar os drivers de banco de dados necessários.

Para se conectar ao Amazon EMR na CLI da 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.

  2. 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 recursos AWS e as informações de conexão do Amazon EMR. Isso inclui o endereço IP do seu cluster do Amazon EMR, chave de acesso AWS, chave de acesso secreta AWS e bucket do Amazon S3. Se necessário, configure o valor da variável de porta. Em seguida, substitua emr_user e emr_password pelo nome do seu usuário do Amazon EMR e pela senha desse usuário. Em path\name, insira o nome e o caminho para o arquivo PEM do seu cluster do Amazon EMR de destino. Para mais informações, consulte Baixar arquivo PEM para acesso ao cluster do EMR.

  3. 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 acesso AWS, chave de acesso secreta AWS e bucket do Amazon S3.

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

    O exemplo de código a seguir cria um túnel para AWS SCT 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_user e hive_password pelo nome do seu usuário do Hive e pela senha desse usuário.

    Em seguida, substitua hive_address pelo valor padrão 127.0.0.1 ou pelo endereço IP NameNode do seu serviço Hive de destino. Em seguida, substitua hive_port pela porta do serviço Hive de destino.

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

    O exemplo de código a seguir cria um túnel para AWS SCT 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_user e hdfs_password pelo nome do usuário do HDFS e pela senha desse usuário.

    Em seguida, substitua hdfs_address e hdfs_port pelo endereço IP privado e pela porta do NameNode do seu serviço HDFS de destino.

  6. Salve o script da CLI. Em seguida, adicione regras de mapeamento e comandos de migração. Para obter mais informações, consulte Como migrar o Apache Hadoop para o Amazon EMR.