Considerações sobre o Sqoop no Amazon EMR - Amazon EMR

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

Considerações sobre o Sqoop no Amazon EMR

Considere os seguintes itens quando executar o Sqoop no Amazon EMR.

Usar o Sqoop com integração ao HCatalog

O Sqoop no Amazon EMR permite a integração entre o Sqoop e o HCatalog. Ao usar o Sqoop para gravar a saída em uma tabela do HCatalog no Amazon S3, desabilite a gravação direta do Amazon EMR definindo as propriedades mapred.output.direct.NativeS3FileSystem e mapred.output.direct.EmrFileSystem como false. Para ter mais informações, consulte Uso do HCatalog. Você pode usar os comandos -D mapred.output.direct.NativeS3FileSystem=false e -D mapred.output.direct.EmrFileSystem=false do Hadoop. Se você não desabilitar a gravação direta, nenhum erro ocorrerá, mas a tabela será criada no Amazon S3 e nenhum dado será gravado.

Suporte do JDBC e de banco de dados para o Sqoop

Por padrão, o Sqoop tem um driver MariaDB e PostgreSQL instalado. O driver do PostgreSQL instalado para o Sqoop só funciona para o PostgreSQL 8.4. Para instalar um conjunto alternativo de conectores JDBC para o Sqoop, conecte-se ao nó principal do cluster e instale-o em /usr/lib/sqoop/lib. Veja a seguir links para vários conectores JDBC:

Os bancos de dados compatíveis com o Sqoop estão listados no seguinte url, http://sqoop.apache.org/docs/ version/SqoopUserGuide.html #_supported_databases, onde version é a versão do Sqoop que você está usando, por exemplo, 1.4.6. Se a string de conexão JDBC não corresponder às desta lista, você precisará especificar um driver.

Por exemplo, é possível exportar para uma tabela de banco de dados do Amazon Redshift com o seguinte comando (para JDBC 4.1):

sqoop export --connect jdbc:redshift://$MYREDSHIFTHOST:5439/mydb --table mysqoopexport --export-dir s3://mybucket/myinputfiles/ --driver com.amazon.redshift.jdbc41.Driver --username master --password Mymasterpass1

Você pode usar ambas as strings de conexão MariaDB e MySQL, mas, se especificar a string de conexão MariaDB, precisará especificar o driver:

sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://mybucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password Mymasterpass1

Se você estiver usando a criptografia SSL para acessar seu banco de dados, precisará usar um URI do JDBC, como no seguinte exemplo de exportação do Sqoop:

sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb?verifyServerCertificate=false&useSSL=true&requireSSL=true --table mysqoopexport --export-dir s3://mybucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password Mymasterpass1

Para obter mais informações sobre criptografia SSL no RDS, consulte Usar o SSL para criptografar uma conexão com uma instância de banco de dados no Guia do usuário do Amazon RDS.

Para obter mais informações, consulte a documentação do Apache Sqoop.

Proteção da senha

Há vários métodos que você pode escolher para transmitir sua senha com segurança:

Java KeyStore

O método preferido criptografa a senha com um Java KeyStore (JKS), eliminando a necessidade de armazenar a senha em um formato legível.

  1. Crie um alias de senha. Quando solicitado, insira a senha usada para acessar o banco de dados.

    hadoop credential create mydb.password.alias -provider jceks://hdfs/user/root/mysql.password.jceks
  2. Use o alias de senha para executar o trabalho do Sqoop:

    sqoop export -Dhadoop.security.credential.provider.path=jceks://hdfs/user/root/mysql.password.jceks --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://mybucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password-alias mydb.password.alias
--password-file

É possível usar o comando --password-file para transmitir a senha por meio de um arquivo, conforme mostrado no seguinte exemplo:

  1. Crie um arquivo que contenha a senha:

    echo -n 'Mymasterpass1' > /home/hadoop/mysql-pass.password
  2. Use o arquivo para executar o trabalho do Sqoop:

    sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://mybucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password-file /home/hadoop/mysql-pass.password
-P

É possível usar o comando -P para inserir a senha por meio de um prompt, conforme mostrado no seguinte exemplo:

sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://mybucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master -P