Sqoop으로 MySQL 데이터 가져오는 방법에 대해 알아보겠습니다.

Sqoop

RDBMS에 있는 데이터를 특별한 전처리 없이 곧바로 HDFS에 적재하거나, 반대로 HDFS에 저장된 데이터를 RDBMS로 제공해야할때 도와주는 프로젝트

Sqoop의 버전

  • 스쿱1 클라이언트 : CLI 기반으로 스쿱 명령을 실행하는 초기 버전
  • 스쿱 2 : 스쿱 서버를 두고 스쿱 클라이언트가 API를 호출하는 방식

Sqoop 요소

  • Sqoop Client : 하둡의 분산 환경에서 HDFS와 RDBMS 간의 데이터 임포트 및 익스포트 기능을 수행하기 위한 라이브러리로 구성
  • Sqoop Server : 스쿱 2의 아키텍처에서 제공되며, 스쿱 1의 분산된 클라이언트 기능을 통합해 REST API로 제공
  • Import/Export : 임포트 기능은 RDBMS의 데이터를 HDFS로 가져올때 사용하며, 반대로 익스포트 기능은 HDFS의 데이터를 RDBMS로 내보낼 때 사용
  • Connectors 임포트 및 익스포트에서 사용될 다양한 DBMS의 접속 어댑터와 라이브러리를 제공
  • Metadata : 스쿱 서버를 서비스하는 데 필요한 각종 메타 정보를 저장

Sqoop Architecture

Sqoop Import

Sqoop Export

실습

목표 : 스쿱을 이용해서 MySQL로부터 가져온 데이터를 HDFS와 Hive에 Import 하기

Database Informations

Server : MySQL
IP : 111.111.111.111
Port : 3306
User Id : jungwoon
DB : HELLO_SOCIAL
TABLE
	- post_info (3만 5천+)
	- post_engager (1100만건)

import MySQL -> HDFS

$ sqoop import —connect jdbc:mysql://111.111.111.111:3306/HELLO_SOCIAL —username jungwoon -P — table post_info -m 1

정상적으로 가져오게 되면 아래와 같이 해당 테이블 이름으로 HDFS에 파일이 생기는것을 확인할 수 있다.

import MySQL -> HIVE

$ sqoop import --connect jdbc:mysql://111.111.111.111:3306/HELLO_SOCIAL --username kclick -P —post_engager --hive-import

정상적으로 가져오게 되면 아래와 같이 Hue를 통해서 Hive 쿼리를 날릴 수 있다.