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.
Tópicos
- Pré-requisitos de uso do Apache Hadoop como origem
- Permissões para usar o Hive como origem
- Permissões para usar o HDFS como origem
- Permissões para usar o HDFS como destino
- Como se conectar ao Apache Hadoop como origem
- Como se conectar aos serviços Hive e HDFS de origem
- Como se conectar ao Amazon EMR como destino
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ários3-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âmetrofs.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 arquivocore-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 origemAcesso
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 destinoAcesso
READ+WRITE
ao bucket do Amazon S3 intermediárioAcesso
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 NameNodeEXECUTE+READ
para todas as pastas e arquivos de origem que você inclui no projeto de migraçãoREAD+WRITE
para o diretóriotmp
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 destinoREAD+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
-
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. -
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.
-
Criar um novo projeto da AWS SCT.
O exemplo de código a seguir cria o projeto da
hadoop_emr
na pastac:\sct
.CreateProject -name: 'hadoop_emr' -directory: 'c:\sct' /
-
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
euser
. 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, substituahadoop_user
ehadoop_password
pelo nome do seu usuário do Hadoop e pela senha desse usuário. Empath\name
, insira o nome e o caminho para o arquivo PEM do seu cluster Hadoop de origem. -
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
, digitetrue
. Parahost
, insira o endereço IP interno do seu serviço Hive ou HDFS de origem. Paraport
, 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
epassword
. 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
, digitelocalhost
. Paraport
, 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. Paraport
, insira a porta de serviço do seu serviço Hive ou HDFS. Em seguida, insira suas credenciais do Hive ou do HDFS parauser
epassword
.
Para se conectar ao Hive e ao HDFS na CLI da AWS SCT
-
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.
-
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
eport
. 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
ehive_password
pelo nome do seu usuário do Hive e pela senha desse usuário.Em seguida, substitua
hive_address
ehive_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ão127.0.0.1
ou o endereço IP NameNode do seu serviço Hive de origem. -
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
eport
. 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
ehdfs_password
pelo nome do seu usuário do HDFS e pela senha desse usuário.Em seguida, substitua
hdfs_address
ehdfs_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ão127.0.0.1
ou o endereço IP NameNode do seu serviço Hive de origem. -
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
-
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.
-
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
eemr_password
pelo nome do seu usuário do Amazon EMR e pela senha desse usuário. Empath\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. -
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.
-
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
ehive_password
pelo nome do seu usuário do Hive e pela senha desse usuário.Em seguida, substitua
hive_address
pelo valor padrão127.0.0.1
ou pelo endereço IP NameNode do seu serviço Hive de destino. Em seguida, substituahive_port
pela porta do serviço Hive de destino. -
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
ehdfs_password
pelo nome do usuário do HDFS e pela senha desse usuário.Em seguida, substitua
hdfs_address
ehdfs_port
pelo endereço IP privado e pela porta do NameNode do seu serviço HDFS de destino. -
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.