Apache Sqoop
Apache Sqoop은 관계형 데이터 베이스 (RDBMS)와 Hadoop 간의 데이터 전송을 효율적으로 처리하는 오픈 소스 도구이다.
Sqoop을 사용해 데이터를 Hadoop으로 import 하거나 Hadoop에서 데이터베이스로 export 할 수 있다.
데이터 가져오기 (import)
데이터를 관계형 데이터베이스에서 Hadoop의 분산 파일 시스템(HDFS), Apache Hive, Apache HBase 등으로 가져오는 과정
- Sqoop Import 명령어 실행
sqoop import \
--connect jdbc:mysql://localhost/mydatabase \
--username myuser \
--password mypassword \
--table mytable \
--target-dir /user/hive/warehouse/mytable \
--split-by id
- --connect: 데이터베이스의 JDBC 연결 URL을 지정한다
- --username과 --password: 데이터베이스 접속에 사용할 사용자 이름과 비밀번호를 지정한다
- --table: 가져올 데이터베이스 테이블의 이름을 지정한다
- --target-dir: HDFS에 데이터를 저장할 디렉토리를 지정한다
- --split-by: 데이터 분할 기준이 되는 컬럼을 지정한다.
- JDBC 연결 설정
Sqoop은 JDBC 드라이버를 사용하여 데이터베이스에 연결한다.
명령어에서 지정한 --connect 옵션의 URL을 통해 데이터베이스와 연결을 설정하고, 데이터베이스의 메타데이터를 조회하여 테이블 구조를 확인한다.
- 데이터 분할 및 병렬 처리
- 데이터 분할: --split-by 옵션으로 지정된 컬럼을 기준으로 데이터를 여러 조각으로 나누어 병렬로 처리한다.
- 병렬 처리: 각 조각의 데이터는 독립적으로 가져와서 Hadoop의 HDFS에 저장된다.
- 데이터 전송 및 저장
- 데이터 전송: 각 조각의 데이터는 MapReduce 작업을 통해 HDFS로 전송된다.
- 저장: 가져온 데이터는 지정한 HDFS 디렉토리에 저장되며, 일반적으로 CSV 파일 형식이 사용된다.
데이터 내보내기 (export)
Hadoop의 분산 파일 시스템(HDFS)에서 관계형 데이터베이스로 데이터를 내보내는 과정
- Sqoop Export 명령어 실행
sqoop export \
--connect jdbc:mysql://localhost/mydatabase \
--username myuser \
--password mypassword \
--table mytable \
--export-dir /user/hive/warehouse/mytable
- --connect: 데이터베이스의 JDBC 연결 URL을 지정한다.
- --username과 --password: 데이터베이스 접속에 사용할 사용자 이름과 비밀번호를 지정한다.
- --table: 데이터를 내보낼 데이터베이스 테이블의 이름을 지정한다.
- --export-dir: HDFS에서 데이터를 읽어올 디렉토리를 지정한다.
- JDBC 연결 설정
Sqoop은 JDBC 드라이버를 사용하여 데이터베이스에 연결한다.
명령어에서 지정한 --connect 옵션의 URL을 통해 데이터베이스와 연결을 설정하고, 데이터베이스의 테이블 구조를 확인한다.
- 데이터 읽기 및 전송
- 데이터 읽기: --export-dir 옵션으로 지정된 HDFS 디렉토리에서 데이터를 읽어온다.
- 전송: 데이터는 MapReduce 작업을 통해 관계형 데이터베이스로 전송된다. 데이터베이스에 삽입될 때는 각 데이터 레코드가 지정된 테이블에 추가된다.
- 데이터 삽입
읽어온 데이터는 데이터베이스의 테이블에 삽입된다.
Sqoop은 데이터를 효율적으로 삽입하기 위해 INSERT 문을 사용한다.
'Data Engineering > Sqoop' 카테고리의 다른 글
[Linux/Sqoop] MySQL을 연동해 데이터를 가져오고 내보내기 (0) | 2024.08.22 |
---|---|
[Linux/Sqoop] Apache Sqoop을 설치해보자 (0) | 2024.08.22 |