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 워크플로 관리

  • 워크플로란?
    1. 업무 프로세스와 같이 정해진업무를 원활하게 진행하기 위한 구조
    2. 다수의 업무 시스템에 내장되어 있어 매일 테스크를 관리하는 데 이용
    3. 테스크는 정해진 스케줄에 따라 자동으로 실행되고 문제 발생시 알려준다
  • 워크플로 관리 도구
    1. 역할
      1. 정기적으로 태스크를 실행
      2. 비정상적인 상태를 감지하여 해결을 도움
      3. 스케줄링 실행 , 결과 통지
      4. 테스크 간 의존관계 정하고 순서대로 실행
      5. 테스크의 실행 결과 보관, 오류 발생시 재 실행
    2. 태스크 :
      1. 데이터 파이프 라인의 실행 과정에서 정해진 처리를 반복됨
      2. 이때 실행되는 개별처리
    3.  종류
      1. 선언형 
        1. 미리 제공된 기능만 수행 가능
        2. 모든 사람에게 동일한 워크플로가 되기에 유지보수성이 높다
        3. 동일 쿼리를 파라미터만 바꾸어 실행 / 단순 반복 생성 경우 시 사용
        4. ex SQL
      2. 스크립트 형 
        1. 유연하다 ( 변수나 제어 구문을 사용가능 )
        2. 데이터 수집 시 주로 사용된다
        3. ex ETL 프로세스

5.1.2 오류 발생시 복구 방법

  • 워크플로 관리에서 테스크의 실행 순서를 정하는 것과 동시에 오류를 어떻게 처리할 것인가 계획을 정한다
    1. 오류에 강한 워크플로 구축으로 일일 처리되는 데이터 처리를 안정적으로 실행하기 위함
  • 오류 발생시 대체법
    1. 복구
    2. 플로우 재실행
    3. 재시도
      1. 재시도 최적화 횟수는 태스크마다 다르다
    4. 백필 ( backfill )
      1. 일정기간의 플로우를 연속해서 실행하는 구조
        1. 태스크의 실패가 며칠 동안 계속된 후 이를 모아 재실행 하고 싶을 때 사용
      2. 사용시 성능상 주의 필요 

5.1.3 멱등한 조작으로 태스크 기술

  • 특징
    1. 동일 태스크를 여러번 실행해도 동일한 결과가 나온다
    2. 태스크 복구 전제 조건 & 목적 : 재실행시  안전성 증가
  • 방법
    1. 원자성 조작
    2. 추가or 치환
      1. 워크플로의 각 태스크는 추가 or 치환을 통해 파일명을 새롭게 만든다
      2. 추가시 데이터는 중복되지만 치환시 멱등하다
    3. 원자성을 지닌 추가
      1. 중간 테이블을 만들어 처리한 후 마지막에 목적 테이블을 추가하여 여러 상황을 방지한다
    4. 워크플로 전체를 멱등하게 조정

5.1.4 태스크 큐 

  • 출현 배경
    • 워크플로 관리 도구 - 외부 시스템 부하 컨트롤 필요 → 테스크의 크기, 동시 실행 수 등을 변화시켜 원활한 워크플로로 조정
  •  정의
    1. 대량의 태스크를 동시 실행시 서버에 과부하가 생기므로 제한을 두고 실행시키는 것 
    2. 모든 테스크를 큐에 저장하고 워커 프로세스가 순서대로 테스크를 꺼내면서 병렬화 실현
      1. 8개의 워커를 기동시 8개의 태스크가 병렬 실행된다
  • 특징
    1. 병목 현상 해소
    2. 테스크 수의 적정화 ( 적당히 불할함)

 

 

+ 일처리를 위하여 워크플로 이용 / 오류 작동 안나게 조작 / 오류날 경우 빠른 오류 해결 필요 ( 복구 / 재시도 / 재실행 / 백필 ) / 

워크플로를 멱등하게 조정하여 워크플로 안정성 증가시키기 / 태스크 큐 (병렬성 제한자)로 원활한 워크플로 생성

 


5.2 배치형의 데이터 플로우

 

5.2.1 MapReduce

  • 데이터플로우
    1. 맵리듀스를 사용한 데이터 처리시 맵리듀스 프로그램을 워크플로의 태스크로 등록하며 다단계의 데이터 처리를 진행
    2. 기술의 발전으로 맵리듀스로 하였던 다단계의 데이터 처리를 분산 시스템 내부에서 실행가능 ( = "데이터플로우 " 라고 지칭 )
  • 구조 & 단계
    1. 맵리듀스 : Key -Value 쌍으로 데이터를 처리
        1. 데이터를 담는 자료 구조 중 하나
        2. Key -Value 쌍으로 데이터를 처리
      1. 리듀스
        1. 맵을 통해 정리(줄이는) 방법
        2. 키를 기준으로 같은 값을 가진 맵 카운트 / 밸류 통합 / 평균 추출 등 
    2. 과정 
      1. 과정 & 설명 :  
      2. 데이터 입력 >데이터 split > Map ( key-value 값 생성) > 컴바이너 & 셔플 (같은 키를 묶음) > 정렬 > 리듀스 (커스터마이징작업 / 레코드 가공 및 작업 ) > 출력
    3. 사용 이유
      1. 데이터 처리 프로세스를 단순하게 만들기 위해 
        1. 기준값이 하나가 되어야 프로세스가 단순해짐

 

 

+ 출처 : Map / Reduce 이해하기

5.2.2 새로운 프레임 워크 DAG 

  • DAG ( Directed Acyclic Graph / 방향성 비순환 그래프) 
    1. 특징
      1. 수학과 컴퓨터 알고리즘에서 사용되는 데이터 모델
      2. 데이터 플로으에서는 DAG 를 구성하는 각 노드가 동시 병행으로 실행됨
        1. 처리가 끝난 데이터는 네트워크로 전달되어 (MapReduce에 존재하는 ) 대기시간을 없앤다
    2. 성질 
      1. 노드와 노드가 화살표로 연결된다 ( 방향성)
      2. 화살표를 아무리 따라가도 동일 노드로는 되돌아 오지않는다 (비순환)
        1. 노드간의 의존관계를 유지 및 실행 순서에 알맞게 지정 가능 
      3. 높은 트랜잭션 처리 속도를 가진다
        1. 하나의 노드가 다른 노드를 검증하므로 속도 증가
      4. 뛰어난 확장성
        1. 트랜잭션의 증가 ∝ 추후 생성되는 트랜잭션을 검증할 가능성 증가 

 

5.2.3 데이터 플로우와 워크플로 조합

  • 데이터 플로우에서 프로그래밍 시, 입출력을 하나의 DAG로 기술 가능
    1. 장점 
      1. 워크플로 관리 도구 사용 필요성 없어짐
    2. 단점 ( 플로우에서 못 함 ) 
      1. 태스크 정기 실행 불가능 
      2. 실패한 태스크만 기록하여 복구 불가능
    3. 해결방안
      1.  분산 시스템 안에서만 실행되는 데이터 처리 > 하나의 데이터 플로우로 기술함
    4. 종류
      1. 데이터를 읽어들이는 플로우
      2. 데이터를 써서 내보내는 플로우

 

 


5.3 스트리밍 형의 데이터 플로우

  • 데이터의 실시간 처리를 높이기 위해 배치처리sd와는 다른 데이터 파이프라인이 필요하다

5.3.1 배치처리와 스트림 처리

  • 배치처리와 스트림 처리로 경로 분리
    1. 배치처리
      1. 데이터를 분산 스토리지에 보관하는 부분부터 시작
    2. 스트림 처리
      1. 실시간 이벤트 처리 / 과거 데이터 취급에는 부적합 
      2. 분산 스토리지를 거치지 않고 처리
  • 배치처리와 스트림 처리 통합
    1. 배치처리
      1. 데이터 → 작게 나누어 DAG에 넣음 
      2. 기존 데이터를 분할한다
      3. 유한데이터 
    2. 스트림 처리
      1. 끊임 없는 데이터 → DAG로 넣어 데이터 처리 
      2. 단시간에 차례대로 생성
      3. 무한데이터

 

5.3.2 스트림 처리 결과를 배치처리로 치환 

  • 스트림 처리의 두가지 문제
    1. 장애나 버그 등 시간의 문제로 과거가 된 결과를 수정할 수 없다 ( 실시간 처리가 아니라서)
    2. 늦게 전송된 데이터 취급을 못한다
  • 대체법
    1. 스트림 처리와 별개로 배치처리를 실행 시키기
    2. 람다 아키텍처 
  • 람다 아키텍처
    1. 특징 
      1. 배치 및 스트림 처리 방법을 모두 활용하여 빅데이터를 처리가능
      2. 실시간 분석을 지원한다
    2. 구성
      1. batch layer 
        1. (raw) 데이터를 미리 계산 후 저장 , batch 처리하여 배치 뷰 생성
        2. 배치 뷰의 데이터가 부정확 시 복구 가능
        3. 새로운 뷰 제공시 원본데이터로 새로운 뷰의 통계 분석 가능
      2. serving layer
        1. batch로 분석된 데이터가 저장되어있고 batch 외에는 쓰기가 안됨
      3.  speed layer
        1. 실시간 데이터를 집계 (Real-time View)
      4. 주의점
        1. 배치 뷰와 실시간 뷰의 데이터 중복 불허용
        2. 배치로 데이터가 만 든 후 실시간 뷰의 데이터를 주기적으로 삭제해야한다
        3. batch layer과 speed layer은 서로 호환되어야 한다

람다아키텍쳐