1 a n G u a g e /BigData
빅데이터를 지탱하는 기술 / [5] 빅데이터의 파이프라인
동혼
2020. 3. 26. 19:20
요약
5.1 워크플로 관리 와 관리 도구
5.2 DAG , 워크플로
5.3 데이터 플로우를 사용한 스트림 처리
람다 아키텍처
5.1 워크플로 관리
- 워크플로 관리 도구 도입 이유 : 정기적인 데이터 관리를 자동화 하여 안정된 배치 처리 실행
5.1.1 워크플로 관리
- 워크플로란?
- 업무 프로세스와 같이 정해진업무를 원활하게 진행하기 위한 구조
- 다수의 업무 시스템에 내장되어 있어 매일 테스크를 관리하는 데 이용
- 테스크는 정해진 스케줄에 따라 자동으로 실행되고 문제 발생시 알려준다
- 워크플로 관리 도구
- 역할
- 정기적으로 태스크를 실행
- 비정상적인 상태를 감지하여 해결을 도움
- 스케줄링 실행 , 결과 통지
- 테스크 간 의존관계 정하고 순서대로 실행
- 테스크의 실행 결과 보관, 오류 발생시 재 실행
- 태스크 :
- 데이터 파이프 라인의 실행 과정에서 정해진 처리를 반복됨
- 이때 실행되는 개별처리
- 종류
- 선언형
- 미리 제공된 기능만 수행 가능
- 모든 사람에게 동일한 워크플로가 되기에 유지보수성이 높다
- 동일 쿼리를 파라미터만 바꾸어 실행 / 단순 반복 생성 경우 시 사용
- ex SQL
- 스크립트 형
- 유연하다 ( 변수나 제어 구문을 사용가능 )
- 데이터 수집 시 주로 사용된다
- ex ETL 프로세스
- 선언형
- 역할
5.1.2 오류 발생시 복구 방법
- 워크플로 관리에서 테스크의 실행 순서를 정하는 것과 동시에 오류를 어떻게 처리할 것인가 계획을 정한다
- 오류에 강한 워크플로 구축으로 일일 처리되는 데이터 처리를 안정적으로 실행하기 위함
- 오류 발생시 대체법
- 복구
- 플로우 재실행
- 재시도
- 재시도 최적화 횟수는 태스크마다 다르다
- 백필 ( backfill )
- 일정기간의 플로우를 연속해서 실행하는 구조
- 태스크의 실패가 며칠 동안 계속된 후 이를 모아 재실행 하고 싶을 때 사용
- 사용시 성능상 주의 필요
- 일정기간의 플로우를 연속해서 실행하는 구조
5.1.3 멱등한 조작으로 태스크 기술
- 특징
- 동일 태스크를 여러번 실행해도 동일한 결과가 나온다
- 태스크 복구 전제 조건 & 목적 : 재실행시 안전성 증가
- 방법
- 원자성 조작
- 추가or 치환
- 워크플로의 각 태스크는 추가 or 치환을 통해 파일명을 새롭게 만든다
- 추가시 데이터는 중복되지만 치환시 멱등하다
- 원자성을 지닌 추가
- 중간 테이블을 만들어 처리한 후 마지막에 목적 테이블을 추가하여 여러 상황을 방지한다
- 워크플로 전체를 멱등하게 조정
5.1.4 태스크 큐
- 출현 배경
- 워크플로 관리 도구 - 외부 시스템 부하 컨트롤 필요 → 테스크의 크기, 동시 실행 수 등을 변화시켜 원활한 워크플로로 조정
- 정의
- 대량의 태스크를 동시 실행시 서버에 과부하가 생기므로 제한을 두고 실행시키는 것
- 모든 테스크를 큐에 저장하고 워커 프로세스가 순서대로 테스크를 꺼내면서 병렬화 실현
- 8개의 워커를 기동시 8개의 태스크가 병렬 실행된다
- 특징
- 병목 현상 해소
- 테스크 수의 적정화 ( 적당히 불할함)
+ 일처리를 위하여 워크플로 이용 / 오류 작동 안나게 조작 / 오류날 경우 빠른 오류 해결 필요 ( 복구 / 재시도 / 재실행 / 백필 ) /
워크플로를 멱등하게 조정하여 워크플로 안정성 증가시키기 / 태스크 큐 (병렬성 제한자)로 원활한 워크플로 생성
5.2 배치형의 데이터 플로우
5.2.1 MapReduce
- 데이터플로우
- 맵리듀스를 사용한 데이터 처리시 맵리듀스 프로그램을 워크플로의 태스크로 등록하며 다단계의 데이터 처리를 진행
- 기술의 발전으로 맵리듀스로 하였던 다단계의 데이터 처리를 분산 시스템 내부에서 실행가능 ( = "데이터플로우 " 라고 지칭 )
- 구조 & 단계
- 맵리듀스 : Key -Value 쌍으로 데이터를 처리
- 맵
- 데이터를 담는 자료 구조 중 하나
- Key -Value 쌍으로 데이터를 처리
- 리듀스
- 맵을 통해 정리(줄이는) 방법
- 키를 기준으로 같은 값을 가진 맵 카운트 / 밸류 통합 / 평균 추출 등
- 맵
- 과정
- 과정 & 설명 :
- 데이터 입력 >데이터 split > Map ( key-value 값 생성) > 컴바이너 & 셔플 (같은 키를 묶음) > 정렬 > 리듀스 (커스터마이징작업 / 레코드 가공 및 작업 ) > 출력
- 사용 이유
- 데이터 처리 프로세스를 단순하게 만들기 위해
- 기준값이 하나가 되어야 프로세스가 단순해짐
- 데이터 처리 프로세스를 단순하게 만들기 위해
- 맵리듀스 : Key -Value 쌍으로 데이터를 처리
+ 출처 : Map / Reduce 이해하기
5.2.2 새로운 프레임 워크 DAG
- DAG ( Directed Acyclic Graph / 방향성 비순환 그래프)
- 특징
- 수학과 컴퓨터 알고리즘에서 사용되는 데이터 모델
- 데이터 플로으에서는 DAG 를 구성하는 각 노드가 동시 병행으로 실행됨
- 처리가 끝난 데이터는 네트워크로 전달되어 (MapReduce에 존재하는 ) 대기시간을 없앤다
- 성질
- 노드와 노드가 화살표로 연결된다 ( 방향성)
- 화살표를 아무리 따라가도 동일 노드로는 되돌아 오지않는다 (비순환)
- 노드간의 의존관계를 유지 및 실행 순서에 알맞게 지정 가능
- 높은 트랜잭션 처리 속도를 가진다
- 하나의 노드가 다른 노드를 검증하므로 속도 증가
- 뛰어난 확장성
- 트랜잭션의 증가 ∝ 추후 생성되는 트랜잭션을 검증할 가능성 증가
- 특징
5.2.3 데이터 플로우와 워크플로 조합
- 데이터 플로우에서 프로그래밍 시, 입출력을 하나의 DAG로 기술 가능
- 장점
- 워크플로 관리 도구 사용 필요성 없어짐
- 단점 ( 플로우에서 못 함 )
- 태스크 정기 실행 불가능
- 실패한 태스크만 기록하여 복구 불가능
- 해결방안
- 분산 시스템 안에서만 실행되는 데이터 처리 > 하나의 데이터 플로우로 기술함
- 종류
- 데이터를 읽어들이는 플로우
- 데이터를 써서 내보내는 플로우
- 장점
5.3 스트리밍 형의 데이터 플로우
- 데이터의 실시간 처리를 높이기 위해 배치처리sd와는 다른 데이터 파이프라인이 필요하다
5.3.1 배치처리와 스트림 처리
- 배치처리와 스트림 처리로 경로 분리
- 배치처리
- 데이터를 분산 스토리지에 보관하는 부분부터 시작
- 스트림 처리
- 실시간 이벤트 처리 / 과거 데이터 취급에는 부적합
- 분산 스토리지를 거치지 않고 처리
- 배치처리
- 배치처리와 스트림 처리 통합
- 배치처리
- 데이터 → 작게 나누어 DAG에 넣음
- 기존 데이터를 분할한다
- 유한데이터
- 스트림 처리
- 끊임 없는 데이터 → DAG로 넣어 데이터 처리
- 단시간에 차례대로 생성
- 무한데이터
- 배치처리
5.3.2 스트림 처리 결과를 배치처리로 치환
- 스트림 처리의 두가지 문제
- 장애나 버그 등 시간의 문제로 과거가 된 결과를 수정할 수 없다 ( 실시간 처리가 아니라서)
- 늦게 전송된 데이터 취급을 못한다
- 대체법
- 스트림 처리와 별개로 배치처리를 실행 시키기
- 람다 아키텍처
- 람다 아키텍처
- 특징
- 배치 및 스트림 처리 방법을 모두 활용하여 빅데이터를 처리가능
- 실시간 분석을 지원한다
- 구성
- batch layer
- (raw) 데이터를 미리 계산 후 저장 , batch 처리하여 배치 뷰 생성
- 배치 뷰의 데이터가 부정확 시 복구 가능
- 새로운 뷰 제공시 원본데이터로 새로운 뷰의 통계 분석 가능
- serving layer
- batch로 분석된 데이터가 저장되어있고 batch 외에는 쓰기가 안됨
- speed layer
- 실시간 데이터를 집계 (Real-time View)
- 주의점
- 배치 뷰와 실시간 뷰의 데이터 중복 불허용
- 배치로 데이터가 만 든 후 실시간 뷰의 데이터를 주기적으로 삭제해야한다
- batch layer과 speed layer은 서로 호환되어야 한다
- batch layer
- 특징