본문 바로가기
IT 지식/빅데이터 & 분석

[빅데이터] Sqoop & Flume

by 이민우 2021. 7. 30.
728x90
반응형

Sqoop과 Flume은 하둡에서 데이터를 수집하는 데 사용되는 프로그램들이다.

 

Sqoop의 경우에는 기존 DB에 탑재된 데이터를 그대로 하둡의 DB에 가져오게 되고, Flume은 이벤트 스트리밍 위주로, 이벤트 데이터를 하둡으로 전달하는 역할을 담당한다.

 

 

Sqoop

먼저 Sqoop은 앞서 서술하였듯, 기존 DB, 그 중에서도 RDBMS와 하둡 간 데이터를 전송할 수 있도록 설계된 자바 기반의 오픈소스 소프트웨어이다.

 

간단한 CLI를 활용해 오라클, MySQL 등의 RDBMS에서 특정 테이블 혹은 조건에 맞는 데이터를 HDFS로 옮길 수 있고, 이를 Hive, Pig, HBase 등으로 바로 옮겨 확인할 수 있다.

 

물론, 반대의 경우도 가능하다.

 

맵 리듀스의 맵 만을 사용하는 것이 특징이다.

 

 

Sqoop 명령어

 

sqoop import

--connect jdbc:mysql://<ip-address>/<db_name>

--username <user_name>

--password <password>

--table <table_name>

 

추가로

 

--columns 지정 시 특정 칼럼만 임포트 가능

--target_dir 임포트 결과를 저장할 HDFS 디렉터리 지정 (미지정시 /user/계정명/테이블명)

--query 질의문 작성 (WHERE에 $CONDITIONS 지정 필수)

--m 맵 태스크 개수

--split-by 분할 칼럼 지정 (기본키)

 

 

 

 

Flume

 

실시간으로 작성되는 로그를 즉시 HDFS에 저장하여 분석하기 위해 개발되었다.

즉, 실시간성 데이터에 적합한 프로그램이다.

 

하둡으로 데이터를 입력하기 위한 간단하고 유연하며 확장성이 좋은 솔루션이기도 하다.

 

플룸의 구성 요소는 이벤트와 에이전트로 이루어져 있다.

 

이벤트는 Flume을 통해 전달되는 데이터의 기본 페이로드이다.

이벤트는 헤더와 바디 영역으로 나뉘며, 헤더는 키-값 쌍으로 라우팅을 결정하거나 구조화된 정보를 저장한다.

 

에이전트는 source, channel, sink 로 이루어져 있다.

source는 이벤트를 받아 입력된 정보를 Sink에 전달한다.

channel은 source와 sink 사이에서 dependency를 제거하고 장애에 대비하기 위한 중간 채널 역할을 담당한다.

sink는 채널로부터 source가 전달한 이벤트 정보를 HDFS에 저장하거나 DB로 전달한다.

 

 

플룸은 단일 플룸과 다중 플룸을 사용할 수 있다.

 

단일 플룸은 로그 수집의 권한을 플룸에게 위임하여 기존의 HDFS에 직접 연결하는 것보다 빠르고 에러 발생시 대응이 가능해졌다. 하지만 플룸에 문제가 발생 시 로그 수집이 중단되는 문제가 존재했다.

 

다중 플룹은 이러한 문제점을 극복하여, 여러 개의 플룸 에이전트를 두어 장애 발생 시에도 로그 수집이 가능하도록 했다. 또한 로드 밸런싱이 가능해져 다양한 장애에 대응이 가능해졌다.

728x90
반응형

'IT 지식 > 빅데이터 & 분석' 카테고리의 다른 글

[빅데이터] 빅데이터 분석 단계  (0) 2021.08.08
[빅데이터] Spark & Zeppelin  (0) 2021.07.30
[빅데이터] 하이브  (0) 2021.07.29
[빅데이터] 하둡2와 얀(YARN)  (0) 2021.07.29
[빅데이터] 맵리듀스  (0) 2021.07.29