데이터 처리 프로세스
데이터 통합 및 연계 기법
데이터 연계 및 통합 유형(동기화 기준)
-
연계 통합시 일괄(BATCH) 작업, 비동기식 근접 실시간(NRT), 또는 동기 실시간 방식 혼용
-
실시간 통합 : 관심 대상 영역 상태에 대한 빠른 파악 및 대응 가능
-
일괄 작업 : ETL기능을 통해 정기적,반복적으로 대량의 데이터를 획득해 ODS 구성, 이후 데이터 웨어하우스나 마트를 구성 후 OLAP 정형/비정형 질의를 통해 경영 분석
-
동기식 실시간 데이터 통합 : 생산 및 운송 장비 센서들로부터 데이터를 실시간으로 획득해 상태를 모니터링, 작업을 통제(Complex event Processing)
-
최근 데이터 중복을 허용하는 분산 저장 환경구성을 통해 높은 확장성을 확보하는 빅데이터 저장 인프라스트럭처의 활용과 병행 설계되는 사례도 등장
-
ETL기술은 최근 ODS,MDM 허브, 플랫폼, 하둡, 클라우드 환경 등 다양한 데이터 통합 메커니즘 지원
-
최근 비정형, 준정형 데이터 중요성 부각 -> 정형 데이터로 변환은 빅데이터의 주요한 기술적 특성
-
빅데이터 기술을 사용하지 않으면 확장성과 유연성을 확보하기 어려움, 기업 IT투자를 중장기적으로 보호할 수 없음.
대용량의 비정형 데이터
로그
- 로그는 기업의 대표적 비정형 데이터
- 수집 시스템 : 아파치 Flume-NG,Chukwa, 페이스북 Scrive
대용량 비정형 데이터 수집 시스템 특징
-
초고속 수집 성능과 확장성
- 실시간으로 발생하는 대용량 데이터를 놓치지 않고 수집, 서버 수만큼 에이전트 수를 늘리는 방식으로 쉽게 확장
-
데이터 전송 보장 메커니즘
- 수집된 데이터는 분산 파일시스템, DB, NoSQL 등에 저장, 전송 안정성 수준 제어 가능
- 여러 단계를 거치는데 단계별로 신호를 주고 받아 이벤트의 유실 방지
- 각 방식은 성능과 안정성이라는 트레이드 오프가 존재
-
다양한 수집과 저장 플러그 인
- 데이터 저장소의 경우 하둡 저장 기능, NoSQL을 포함한 다양한 DB저장 플러그인 제공
-
인터페이스 상속을 통한 애플리케이션 확장
- 비즈니스 용도에 맞게 수정할 수 있어야 한다.
대규모 분산 처리
하둡
- MapReduce시스템과 HDFS를 핵심 구성요소로 가짐
- 여러 대의 컴퓨터를 하나의 시스템인 것처럼 묶어 빅데이터를 저장 처리하는 자바 기반 오픈소스 프레임워크
- 수십GB에서 수십TB에 이르거나 대규모의 컴퓨팅 및 연산 작업이 필요하다면 하둡 사용
- 비공유 분산 아키텍처 제공
하둡 특징
- 선형적인 성능과 용량 확장
- 여러 대의 서버로 클러스터를 만들어 하둡을 구축할 때 서버의 대수에 제한 없고, 최소 5개
- 비공유 분산 아키텍처 시스템 서버를 추가하면 연산 기능과 저장 기능이 서버의 대수에 비례
- 고장 감내성
- HDFS에 저장되는 데이터는 3중복제가 되어 데이터 유실 방지
- 맵리듀스 작업 중 장애가 생기면 장애가 발생한 특정 테스크만 재실행 가능
- 핵심 비즈니스 로직에 집중
- 맵리듀스는 맵과 리듀스라는 2개의 함수만 구현
- 알고리즘 및 비즈니스 로직 개발자는 분석 방식만 이해하고 목적에 맞게 간단한 코드만 작성하면 데이터의 대소에 신경 안써도됨
- 오직 비즈니스 로직에 집중하도록 장애에 자동복구, 확장성 및 성능도 하둡이 내부적으로 최적화함
- 풍부한 에코시스템
- zookeeper: 서버들 간에 상호 조정이 필요한 다양한 서비스 제공
- oozie : 작업을 관리하는 WORKFLOW 및 코디네이터 시스템
- Hbase : HDFS 기반의 컬럼 NoSQL
- Pig : 복잡한 맵리듀스 프로그래밍을 대체할 Pig Latin 제공
- Hive : 데이터 웨어하우스, 테이블 단위 저장, SQL쿼리 지원
- Mahout : 데이터 마이닝 알고리즘을 구현한 오픈 소스 라이브러리
- Hcatalog : 테이블 및 스토리지 관리
- Avro : RPC와 데이터 직렬화를 지원하는 프레임 워크
- RPC(Remote Procedure Call)
- Chukwa : 분산 환경에서 생성된 데이터를 HDFS에 안정적으로 저장하는 플랫폼
- Flume : 소스서버에 에이전트가 설치, 에이전트로부터 데이터를 전달받는 콜렉터로 구성
- Scribe : 페북에서 개발된 수집 플랫폼, Chukwa와 달리 중앙집중서버로 전송
- Sqoop : 대용량 데이터 전송 솔루션, HDFS, RDBMS, DW, NoSQL 등 다양한 저장소에 신속하게 전송할 수 있는 방법 제공
- Hiho : Sqoop과 같은 대용량 데이터 전송 솔루션, SQL지정, JDBC 이넡페이스 지원
- 다양한 응용기술들이 오픈소스 프로젝트의 형태로 제공, 이를 바탕으로 하둡 에코시스템 구성
- 맵리듀스와 HDFS는 빅데이터 처리와 분산을 위한 기반 기술로 에코시스템의 코어 프로젝트
- YARN은 맵리듀스의 단점을 극복하기 위해 하둡2.0부터 제공되는 프로젝트로 자원 관리 프레임워크 지원
- Flume-NG : 데이터가 발생하는 애플리케이션 단계, 데이터 수집, 데이터 저장, 저장소 보관 단계로 이루어져 설정하지 않으면 네번째 단계는 하둡이 저장소로 사용
데이터 연동
개요 : DB를 대상으로 대규모 분산 처리를 하는 것은 심한 부하를 야기 -> 데이터를 하둡으로 복사 후 하둡에 대규모 분산 처리를 함 이 때 데이터 연동 기능을 수행하는 대표적인 오픈 소스 솔루션이 Sqoop
Sqoop
- MYSAL, PostgreSQL, 사이베이스 등 JDBC를 지원하는 대부분의 관계형 DB와의 연동 지원
- 일부 NOSQL DB와도 연동 가능
- 맵 인풋 포맷터 사용
- 데이터 이동을 맵리듀스로 처리, 장애 허용 능력과 병렬 처리 기능
- IMPORT명령어로 RDBMS의 데이터를 HDFS로 옮기고 EXPORT명령어로 HDFS의 데이터를 RDBMS로 옮길 수 있다.
- 스크립트 문법을 이용해 하둡의 결과 데이터를 다시 관계형 DB로 적재할 수 있다.
대용량 질의 기술
개요 : 친숙한 SQL을 이용해 쉽게 처리하고 분석하는 HIVE 등장 하둡과 하이브는 대용량 데이터를 배치 처리하는데 최적화되어 있지만 실제 업무에서는 데이터를 실시간으로 조회하거나 처리해야 하는 요구사항이 많음 -> 실시간 SQL 질의 분석 기술인 SQL on 하둡 등장
스쿱 스크립트
- 데이터를 가져올 데이터베이스 정보 입력
- 데이터에 대한 SQL 입력
- 동시에 몇 개의 프로세스를 실행하여 데이터를 가져올지 지정, 적절한 개수 지정해야 함
- 데이터 베이스의 키 칼럼 입력
- 가져운 데이터를 저장할 하둡상의 경로 지정
-- connect jbbc:mysql://192.168.10.100:3306/sakila
-- username Hadoop
-- password hadoop00
- query 'select * from city where city like 'k%' '
# k로 시작하는 행에 대한 모든 열을 출력
- m2
- split-by city_id
- target-dir/user/hadoop
SQL on 하둡
- 아파치 드릴 : 맵알이 주축인 프로젝트, 드레멜의 아키텍처와 기능을 동일하게 구현한 오픈 소스 버전 드레멜
- 아파치 스팅거 : 호튼웍스에서 개발, 기존의 하이브 코드 최대한 이용
- 임팔라 : 클라우데라에서 개발 주도
- 샤크 : 인메모리 기반의 대용량 데이터웨어하우스 시스템, 하이브와 호환
- 아파치 타조 : 고려대 대학원에서 시작, 그루터가 합류해 개발 진행
- 호크 : EWC에서 분사한 피보탈에서 개발, 상용과 커뮤니티 2가지 버전
- 프레스토 : 페북에서 개발, 데이터웨어 하우징 엔진, 아파치 라이선스로 공개됨