아마존 Sqoop 이용 시 고려할 사항 EMR - 아마존 EMR

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

아마존 Sqoop 이용 시 고려할 사항 EMR

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

통합과 함께 Sqoop 사용하기 HCatalog

아마존의 스쿱은 EMR 스쿱 통합을 지원합니다. HCatalog 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 및 데이터베이스 지원

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

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

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

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

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

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

보안 소켓 계층 암호화를 사용하여 데이터베이스에 액세스하는 경우 다음 Sqoop 내보내기 예제와 JDBC URI 같은 방법을 사용해야 합니다.

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

의 SSL RDS 암호화에 대한 자세한 내용은 Amazon RDS 사용 설명서의 DB 인스턴스 연결을 암호화하는 SSL 데 사용하기 섹션을 참조하십시오.

자세한 내용은 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://mybucket/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://mybucket/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://mybucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master -P