HDInsight에서 Apache Sqoop을 사용하여 HDInsight 클러스터와 Azure SQL Database 사이에서 가져오기 및 내보내는 방법을 알아봅니다.
비구조적 및 반구조적 데이터(예: 로그 및 파일)를 처리하기 위해 당연히 Apache Hadoop을 선택하지만, 관계형 데이터베이스에 저장된 구조적 데이터를 처리해야 할 경우도 있습니다.
Apache Sqoop은 Hadoop 클러스터와 관계형 데이터베이스 간 데이터 전송을 위해 설계된 도구입니다. 이 도구를 사용하면 SQL Server, MySQL, Oracle 등의 RDBMS(관계형 데이터베이스 관리 시스템)에서 HDFS(Hadoop 분산 파일 시스템)로 데이터를 가져오고, MapReduce 또는 Apache Hive로 Hadoop의 데이터를 변환한 후 데이터를 RDBMS로 다시 내보낼 수 있습니다. 이 문서에서는 관계형 데이터베이스에 대해 Azure SQL Database를 사용하고 있습니다.
Important
이 문서에서는 데이터 전송을 수행하는 테스트 환경을 설정합니다. 그런 다음 Sqoop 작업 실행 섹션의 방법 중 하나에서 이 환경에 대한 데이터 전송 방법을 선택합니다.
HDInsight 클러스터에서 지원되는 Sqoop 버전을 보려면 HDInsight에서 제공하는 클러스터 버전의 새로운 기능을 참조하세요.
시나리오 이해
HDInsight 클러스터는 일부 샘플 데이터와 함께 제공됩니다. 다음 두 샘플을 사용합니다.
/example/data/sample.log에 있는 ApacheLog4j로그 파일 이 파일에서 다음 로그가 추출됩니다.
2012-02-03 18:35:34 SampleClass6 [INFO] everything normal for id 577725851
2012-02-03 18:35:34 SampleClass4 [FATAL] system problem at id 1991281254
2012-02-03 18:35:34 SampleClass3 [DEBUG] detail for id 1304807656
...
/hive/warehouse/hivesampletable에 있는 데이터 파일을 참조하는hivesampletable이라는 Hive 테이블. 이 테이블에는 일부 모바일 디바이스 데이터가 포함되어 있습니다.필드 데이터 형식 clientid string querytime string market string deviceplatform string devicemake string devicemodel string state string country string querydwelltime double sessionidbigint sessionpagevieworder bigint
이 문서에서는 이러한 두 데이터 세트를 사용하여 Sqoop 가져오기 및 내보내기를 테스트합니다.
테스트 환경 설정
클러스터, SQL 데이터베이스 및 기타 개체는 Azure Resource Manager 템플릿을 사용하여 Azure Portal을 통해 생성됩니다. 템플릿은 Azure 빠른 시작 템플릿에서 찾을 수 있습니다. Resource Manager 템플릿은 bacpac 패키지를 호출하여 SQL 데이터베이스에 테이블 스키마를 배포합니다. Bacpac 파일에 대한 프라이빗 컨테이너를 사용하려는 경우 템플릿에 다음 값을 사용합니다.
"storageKeyType": "Primary",
"storageKey": "<TheAzureStorageAccountKey>",
참고 항목
템플릿 또는 Azure Portal을 사용하여 가져오기는 Azure Blob Storage에서 BACPAC 파일을 가져오는 것만 지원합니다.
다음 이미지를 선택하여 Azure Portal에서 Resource Manager 템플릿을 엽니다.
다음과 같이 속성을 입력합니다.
필드 값 구독 드롭다운 목록에서 Azure 구독을 선택합니다. Resource group 드롭다운 목록에서 리소스 그룹을 선택하거나 새 리소스 그룹을 만듭니다. 위치 드롭다운 목록에서 지역을 선택합니다. 클러스터 이름 Hadoop 클러스터에 사용할 이름을 입력합니다. 소문자만 사용합니다. 클러스터 로그인 사용자 이름 미리 채워진 값 admin을 유지합니다.클러스터 로그인 암호 암호를 입력합니다. SSH 사용자 이름 미리 채워진 값 sshuser을 유지합니다.SSH 암호 암호를 입력합니다. Sql 관리자 로그인 미리 채워진 값 sqluser을 유지합니다.SQL 관리자 암호 암호를 입력합니다. _artifacts 위치 다른 위치에서 사용자 고유의 bacpac 파일을 사용하려는 경우가 아니면 기본값을 사용합니다. _artifacts 위치 SAS 토큰 비워 둡니다. Bacpac 파일 이름 사용자 고유의 bacpac 파일을 사용하려는 경우가 아니면 기본값을 사용합니다. 위치 기본 값을 사용합니다. 논리 SQL 서버 이름은
<ClusterName>dbserver입니다. 데이터베이스 이름은<ClusterName>db입니다. 기본 스토리지 계정 이름은e6qhezrh2pdqu입니다.위에 명시된 사용 약관에 동의함을 선택합니다.
구매를 선택합니다. 템플릿 배포에 배포 제출 중이라는 제목의 새 타일이 표시됩니다. 클러스터 및 SQL 데이터베이스를 만들려면 20분 정도가 걸립니다.
Sqoop 작업 실행
HDInsight는 다양한 메서드를 사용하여 Sqoop 작업을 실행할 수 있습니다. 어떤 메서드가 적합한지 결정하는 다음 테이블을 사용하여 연습할 수 있는 링크를 따르세요.
| 이것을 사용 하세요... | ... 대화형 셸 | ...배치 처리 | ... 클라이언트 운영 체제 |
|---|---|---|---|
| SSH | = | = | Linux, Unix, macOS X 또는 Windows |
| Hadoop용 .NET SDK | = | Windows(당분간) | |
| Azure PowerShell | = | Windows |
제한 사항
- 대량 내보내기 - Linux 기반 HDInsight와 함께 Microsoft SQL Server 또는 SQL Database에 데이터를 내보내는 데 사용된 Sqoop 커넥터도 현재 대량 삽입을 지원하지 않습니다.
- Batch - Linux 기반 HDInsight에서 삽입을 수행할 때
-batch스위치를 사용하는 경우 Sqoop는 삽입 작업을 일괄 처리하는 대신 여러 번의 삽입 작업을 수행합니다.
다음 단계
이제 Sqoop을 사용하는 방법에 대해 알아봤습니다. 자세한 내용은 다음을 참조하세요.
- HDInsight에서 Apache Hive 사용
- HDInsight에 데이터 업로드: HDInsight/Azure Blob Storage에 데이터를 업로드하는 다른 방법을 찾습니다.
- Apache Sqoop을 사용하여 HDInsight의 Hadoop과 SQL Database 간에 데이터 가져오기 및 내보내기
