Amazon의 Sqoop 고려 사항 EMR - Amazon EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon의 Sqoop 고려 사항 EMR

Amazon에서 Sqoop을 실행할 때 다음 항목을 고려하십시오EMR.

HCatalog 통합과 함께 Sqoop 사용

Amazon의 Sqoop은 Sqoop 통합HCatalog을 EMR 지원합니다. Sqoop을 사용하여 Amazon S3의 HCatalog 테이블에 출력을 쓰는 경우 mapred.output.direct.NativeS3FileSystemmapred.output.direct.EmrFileSystem 속성을 로 설정하여 Amazon EMR 직접 쓰기를 비활성화합니다false. 자세한 내용은 HCatalog 사용하기 단원을 참조하십시오. Hadoop -D mapred.output.direct.NativeS3FileSystem=false-D mapred.output.direct.EmrFileSystem=false 명령을 사용할 수 있습니다. 직접 쓰기를 비활성화하지 않으면 오류는 발생하지 않지만 Amazon S3에 테이블이 생성되고 데이터는 기록되지 않습니다.

Sqoop JDBC 및 데이터베이스 지원

기본적으로 Sqoop에는 MariaDB 및 PostgreSQL 드라이버가 설치되어 있습니다. Sqoop용으로 설치된 PostgreSQL 드라이버는 PostgreSQL 8.4에서만 작동합니다. Sqoop용 대체 JDBC 커넥터 세트를 설치하려면 클러스터 마스터 노드에 연결하고에 설치합니다/usr/lib/sqoop/lib. 다음은 다양한 JDBC 커넥터에 대한 링크입니다.

Sqoop에 지원되는 데이터베이스는 http://sqoop.apache.org/docs/version/SqoopUserGuide.html#_supported_databases url에 나열되어 있습니다. 여기서 version는 1.4.6과 같이 사용 중인 Sqoop 버전입니다. JDBC 연결 문자열이이 목록의 문자열과 일치하지 않는 경우 드라이버를 지정해야 합니다.

예를 들어 다음 명령(JDBC4.1의 경우)을 사용하여 Amazon Redshift 데이터베이스 테이블로 내보낼 수 있습니다.

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

MariaDB 및 내SQL 연결 문자열을 모두 사용할 수 있지만 MariaDB 연결 문자열을 지정하는 경우 드라이버를 지정해야 합니다.

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

Secure Socket Layer 암호화를 사용하여 데이터베이스에 액세스하는 경우 다음 Sqoop 내보내기 예제에서 JDBC URI 같은를 사용해야 합니다.

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

의 SSL 암호화에 대한 자세한 내용은 Amazon RDS 사용 설명서의 를 사용하여 DB 인스턴스에 대한 연결을 SSL 암호화를 RDS참조하세요.

자세한 내용은 Apache Sqoop 설명서를 참조하십시오.

암호 변경

몇 가지 방법 중 하나를 선택하여 암호를 안전하게 전달할 수 있습니다.

Java KeyStore

기본 방법은 Java KeyStore ()로 암호를 암호화하므로 읽기 가능한 형식으로 암호를 저장할 필요가 JKS없습니다.

  1. 암호 별칭을 만듭니다. 메시지가 표시되면 데이터베이스에 액세스하는 데 사용하는 암호를 입력합니다.

    hadoop credential create mydb.password.alias -provider jceks://hdfs/user/root/mysql.password.jceks
  2. 암호 별칭을 사용하여 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://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password-alias mydb.password.alias
--password-file

다음 예시에 보이는 것처럼 --password-file 명령을 사용하여 파일을 통해 암호를 전달할 수 있습니다.

  1. 암호가 포함된 새로운 파일을 생성합니다.

    echo -n 'Mymasterpass1' > /home/hadoop/mysql-pass.password
  2. 파일을 사용하여 Sqoop 작업을 시작합니다.

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

다음 예시에 보이는 것처럼 -P 명령을 사용하여 프롬프트를 통해 암호를 입력할 수 있습니다.

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