일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 빅데이터플랫폼
- 추천시스템
- 하둡
- Spark structured streaming
- 데이터엔지니어링
- recommendation system
- eks
- 개발자혜성
- AWS SageMaker
- hadoop
- pyspark
- 클라우데라
- mlops
- 데이터엔지니어
- kafka
- 하둡에코시스템
- dataengineer
- kubernetes
- Terraform
- Data engineering
- redis bloom filter
- Python
- 빅데이터
- cloudera
- 개발자
- 블로그
- apache spark
- DataEngineering
- spark
- BigData
- Today
- Total
Hyesung Oh
[데이터 처리 기술의 이해] 데이터 처리 프로세스 #5 대용량의 비정형 데이터 처리방법 본문
1. 대용량 로그 데이터 수집
1.1 로그(Log)
로그는 기업에서 발생하는 대표적인 비정형 데이터로, 과거에는 문제 상황 보존을 위해 사용됐고, 최근에는 마케팅/영업 전략 수립을 위한 사용자의 형태 분석 등에 사용된다.
용량이 방대하기 때문에 이를 분석하기 위해서는 고성능과 확장성을 가진 시스템이 필요하다.
로그 데이터 수집 시스템의 예 : 아파치 flume-NG, 페이스북 Scribe, 아파치 Chukwa 등
1.2 대용량 비정형 데이터 수집 시스템의 특징
1) 초고속 수집 성능과 확장성 - 수집 대상 서버가 증가하면 증가한 서버 수만큼 에이전트의 수를 늘리는 방식으로 쉽게 확장할 수 있는 구조를 가진다.
2) 데이터 전송 보장 메커니즘 - 수집된 데이터는 처리 및 분석을 위한 저장소인 분산 파일시스템, DB, NoSQL 등에 저장되며, 이때 데이터의 종류에 따라 데이터 전송 안정성 수준을 제어할 수 있다.
3) 다양한 수집과 저장 플러그인 - 로그뿐만 아니라 성능 모니터링 데이터, 트위터와 같은 소셜 서비스 데이터 등의 다양한 비정형 데이터를 몇 가지 설정만으로도 수집이 가능하도록 내장 플러그인을 제공해야한다.
4) 인터페이스 상속을 통한 애플리케이션 기능 확장 - 업무 특성상 수집 시스템에서 제공하는 기능 중 일부를 수정해야 하는 경우, 인터페이스를 확장해 원하는 부분만 비즈니스 용도에 맞게 수정할 수 있어야 함.
2. 대규모 분산 병렬 처리
2.1. 하둡(Hadoop)
- 대규모 분산 병렬 처리 시스템의 업계 표준인 맵리듀스 시스템과 분산 파일시스템 HDFS를 핵심 구성요소로 가지는 플랫폼 기술이다.
- 여러 대의 컴퓨터를 마치 하나의 시스템인 것처럼 묶어 분산 환경에서 빅데이터를 저장 및 처리 할 수 있도록 하는 자바 기반의 오픈소스 프레임워크이다.
- 한 번에 처리해야할 데이터가 수십 GB에서 수집 TB에 이르거나 대규모의 컴퓨팅 및 연산 작업이 필요하다면 하둡의 사용을 적극적으로 검토해야 한다.
- 하둡은 비공유 분산 아키텍처를 사용한다.
2.2 하둡의 특징
1) 선형적인 성능과 용량 확장
- 여러 대의 서버를 클러스터를 만들어 하둡을 구축할 때 이론적으로 클러스터링을 구성할 수 있는 서버의 대수에는 제한이 없고 통상적으로 최소 클러스터 대수는 5대 정도이다.
- 하둡은 비공유 분산 아키텍처 시스템이기 때문에 서버를 추가하면 연산 기능과 저장 기능이 서버의 대수에 비례해 증가한다.
2) 고장 감내성
- HDFS에 저장되는 데이터는 3중 복제가 되어 서로 다른 물리서버에 저장되므로 서버에서 장애가 발생하더라도 데이터 유실을 방지할 수 있다.
- 맵리듀스 작업 수행 중 특정 테스크에 장애가 생기면, 시스템이 자동으로 감지해 장애가 발생한 특정 태스크만 다른 서버에서 재실행 할 수 있다.
3) 핵심 비즈니스 로직에 집중
- 하둡의 맵리듀스는 맵과 리듀스라는 2개의 함수만 구현하면서 동작하는 시스템
- 알고리즘 및 비즈니스 로직 개발자는 맵리듀스라는 데이터 처리 분석 방식만 이해하고 비즈니스 목적에 맞게 간단한 코드만 작성하면, 데이터가 크고 작음에 신경 쓰지 않아도 된다.
- 오직 비즈니스 로직에만 집중할 수 있도록 시스템 수준에서 발생하는 장애에 대해 자동 복구를 제공하고, 확장성 및 성능 등의 이슈도 하둡이 내부적으로 최적화해 처리한다.
4) 풍부한 에코시스템 형성
- Zookeeper : 분산 환경에서 서버들간에 상호 조정이 필요한 다양한 서비스 제공
- Oozie : 하둡 작업을 관리하는 워크플로우 및 코디네이터 시스템
- Hbase : HDFS 기반의 컬럼 NoSQL
- Hive : 하둡 기반의 데이터 웨어하우스. 테이블 단위의 데이터 저장과 HiveQL 쿼리를 지원
- Mahout : 하둡 기반의 데이터 마이닝 알고리즘을 구현한 오픈 소스 라이브러리
- Chukwa 외 Flume, Scribe : 분산 환경에서 생성되는 데이터를 HDFS에 안정적으로 저장시키는 플랫폼
- Flume : 대표적인 로그 데이터 수집 시스템인 Flume-NG는 데이터가 발생하는 애플리케이션 단계, 발생한 데이터를 수집하는 단계, 수집한 데이터를 저장하는 단계, 데이터 저장소 보관 단계로 이루어지며 특별히 설정하지 않으면 네 번째 단계에서는 하둡이 저장소로 사용된다.
- YARN : 맵리듀스의 단점을 극복하기 위해 시작되어 하둡 2.0 부터 제공되는 프로젝트로 분산 애플리케이션을 구현하기 위한 자원 관리 프레임워크를 지원한다.
구분 |
주요 기술 |
구분 |
주요 기술 |
데이터 수집 |
Flume-NG, Kafka |
대용량 sql질의 |
Hive, Pig |
데이터 연동 |
Sqoop |
실시간 sql 질의 |
impala, tajo |
분산 데이터베이스 |
Hbase |
워크플로 관리 |
Oozie, Azkaban |
3. 데이터의 연동
3.1 데이터 연동의 개요
- 비정형 데이터로 분석을 수행하기 위해서는 기업 내의 정형 데이터와 분석하고자 하는 비정형 데이터를 연동하는 것이 필요하다.
- 하지만 데이터베이스를 대상으로 맵리듀스와 같은 대규모 분산 병렬 처리를 하는 것은 심한 부하를 야기하므로 데이터 터베이스의 데이터를 하둡으로 복사한 후 하둡에서 대규모 분산 처리를 수행하게 된다.
- 그 결과로 생성된 작은 요약 데이터셋을 다시 데이터베이스에 기록하는 방식으로 작업을 수행하는데, 이때 데이터 연동 기능을 수행하는 대표적인 오픈 소스 솔루션이 스쿱(Sqoop)이다.
3.2 스쿱
- 하둡과 데이터베이스간의 데이터 연동 솔루션인 스쿱은 대부분의 관계형 데이터베이스와의 연동을 지원한다.
- Hbase와 같은 일부 NoSQL 데이터베이스와도 연동이 가능하다
- 스쿱은 하둡에서 제공하는 맵 인풋 포맷터를 사용하며, SQL을 통해 테이블에서 데이터를 추출한다.
- 스쿱은 데이터의 이동을 맵리듀스를 통해 처리하여 장애 허용 능력과 병렬 처리 기능을 제공한다.
- 스쿱 스크립트의 IMPORT 명령어를 이용하여 RDBMS의 데이터를 HDFS로 옮기고, EXPORT 명령어를 이용하여 HDFS 데이터를 RDBMS로 옮길 수 있다.
4. 대용량 질의 기술
4.1 대용량 질의 기술 개요
- 하둡은 저비용으로 대용량 데이터를 저장하고 신속하게 처리할 수 있는 시스템으로 이전에 비해 단순해졌지만 여전히 코딩이 필요하기 때문에 분석가에게는 어려움이 존재한다
- 이러한 이유로 사용자에게 친숙한 SQL이라는 질의 기술을 이용하여 하둡에 저장된 데이터를 쉽게 처리하고 분석할 수 있도록 해주는 HIVE가 등장해 널리 사용되고 있다.
- 하둡과 하이브는 대용량 데이터를 배치 처리하는데 최적화 되어 있지만, 실제 업무에서는 데이터를 실시간으로 조회하거나 처리해야하는 요구 사항이 존재한다
- 실시간 조회 및 처리에 대한 제약을 극복하기 위해 실시간 SQL 질의 분석 기술인 SQL on Hadoop이 등장하엿다.
4.2 SQL on Hadoop 기술
- 아파치 드릴 : 하둡 전문 회사인 맵알이 주축인 프로젝트로 드레멜의 아키텍처와 기능을 동일하게 구현한 오픈소스 버전의 드레멜
- 아파치 스팅거 : 하둡 전문 회사인 호튼웍스에서 개발을 주도하고 있으며 기존의 하이브 코드를 최대한 이용하여 성능을 개선하는 식으로 개발이 진행되고 이씅ㅁ.
- 샤크 : 인메모리 기반의 대용량 데이터 웨어하우스 시스템이며, 하이브와 호환되기 때문에 하이브 sql질의와 사용자 정의 함수를 사용할 수 있음
- 아파치 타조 : 고려대 대학원에서 시작된 프로젝트로 국내 빅데이터 전문회사인 그루터가 합류하여 개발을 진행하고 있고, 아파치 인큐베이션 프로젝트로 등록되어 있음
- 임팔라 : 하둡 전문 회사인 클라우데라에서 개발을 주도하고 있음
- 호크 : EMC에서 분사한 하둡 전문 회사인 피보탈에서 개발한 프로젝트로 사용과 커뮤니티의 2가지 버전을 제공
- 프레스토 : 페이스북에서 자체적으로 개발하여 사용하고 있는 하둡 기반의 데이터웨어 하우징 엔진이며, 아파치 라이선스로 공개됨.
'Data Engineering' 카테고리의 다른 글
빅데이터 플랫폼 Pilot 프로젝트 01 feat. Cloudera Data Platform (0) | 2020.08.31 |
---|---|
Apache Ozone (1) | 2020.08.22 |
[데이터 처리 기술의 이해] 데이터 처리 프로세스 #4 데이터 통합 및 연계 기법 (0) | 2020.05.20 |
[데이터 처리 기술의 이해] 데이터 처리 프로세스 #3 EAI (0) | 2020.05.20 |
[데이터 처리 기술의 이해] 데이터 처리 프로세스 #2 CDC (0) | 2020.05.20 |