데이터 엔지니어링 17

[Airflow] 기반의 데이터 파이프라인(4) - Airflow의 실행 날짜 이해

Airflow는 시작날짜, 스케줄 간격, 종료날짜의 세 가지 매개변수를 사용하여 DAG를 실행하는 시점을 제어할 수 있다. Airflow는 스케줄의 간격이 지난 시점에 DAG를 트리거 한다. 따라서 start_date 기준 schedule_interval이 도래한 가장 첫 시점에 DAG가 실행된다고 보면 된다. (실무에서 사용해보지 못했지만 오픈 카톡방인 '한국 데이터 엔지니어 모임' 에서 종종 물어보는 질문이다.) 책의 예시에서는 2019-01-03일의 데이터를 2019-01-04의 정각에 수집하는 예를 보여준다. 일반적인 스케줄러라면 시작일을 2019-01-04로 해야 하겠지만 Airflow에서의 start_date는 예약 간격의 실행 날짜 이기 때문에 start_date는 2019-01-03으로 주..

[Airflow] 기반의 데이터 파이프라인(3) - 스케줄링

Airflow는 DAG에 적절한 값을 통해 스케줄 간격을 정의하여 정기적으로 실행할 수 있다. DAG를 초기화할 때 schedule_interval을 설정하여 스케줄 간격을 정의할 수 있다. 해당 값의 default는 None이며 DAG가 예약 실행되지 않고, UI 또는 API를 통해서 수동으로 트리거 된다. 1. 스케줄 간격 및 시작 날짜 정의 import datetime as dt # ...생략... dag=DAG( dag_id="schedule_examples", schedule_interval="@daily", # 매일 자정에 실행되도록 DAG를 스케줄하는 매크로 start_date=dt.datetime(2023.1.1), # 2023.1.1 부터 DAG 실행 스케줄을 시작할 날짜/시간 end_d..

[Airflow] 기반의 데이터 파이프라인(2) - Airflow 설치 with Docker

Airflow를 처음 접하는 저는 Window 환경에서 설치가 안된다는 사실이 책에 없어 혹시 누군가가 설치를 진행하다 포기하는 일을 방지하기 위해 작성합니다. Airflow 내부에 pwd 라이브러리등을 사용하기에 Window 환경에서 설치는 불가능 합니다. 또한 Docker가 PC에 설치되어 있어야 합니다. 1. docker-compose.yaml 다운로드 # 윈도우 wget -Uri https://airflow.apache.org/docs/apache-airflow/2.3.2/docker-compose.yaml -OutFile ./docker-compose.yaml # 맥, 리눅스 curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.2/doc..

[Airflow] 기반의 데이터 파이프라인(1)

Apache Airflow 기반의 데이터 파이프라인을 읽고 정리하였습니다. Airflow 1. 파이썬 코드로 유연한 파이프라인 정의 Airflow를 사용하면 파이프라인이나 워크플로 태스크를 방향성 비순환 그래프(DAG)로 정의할 수 있다. Airflow는 파이썬 스크립트로 DAG의 구조를 설명하고 구성하기 때문에 각 DAG 파일은 주어진 DAG에 대한 태스크 집합과 태스크 간의 의존성을 기술하고 실행 방법, 시간 등을 정의한다. 2. 파이프라인 스케줄링 및 실행 DAG로 파이프라인 구조를 정의하고 나면 Airflow가 파이프라인을 언제 실행할 것인지 각각의 DAG 실행 주기를 정의할 수 있다. 이를 통해 매시간, 매일, 매주 등의 DAG를 실행하거나 더 복잡한 스케줄을 사용할 수 있다. 3. 구성 Air..

[Hive] Hive-맵리듀스(2)

맵리듀스 맵리듀스는 큰 데이터를 다루는 job을 여러 태스크로 나누어 다수의 서버로 구성된 클러스터에서 병렬 처리하는 연산 모델이다. 맵리듀스는 맵과 리듀스라는 두 개의 기본 데이터 변환 연산에서 나왔다. 맵(Map) : 컬렉션의 모든 원소를 한 형태에서 다른 형태로 변환한다. 이때 입력된 key-value쌍은 0~N개의 key-value로 변환되며 같은 키를 가진 모든 key-value 쌍은 컬렉션의 형태로 동일한 리듀스 함수로 전달된다. 리듀스(Reduce) : 리듀스 함수는 값 컬렉션을 합계, 평균과 같은 값으로 변경하거나 다른 컬렉션으로 변경하여 최종 key-value쌍을 만든다. 하둡 인프라에서는 잡을 수행하기위해 많은 일을 처리하는데 수행되는 잡을 어떻게 맵-리듀스 태스크로 나누어 수행할지 결..

[Hive] Hive-Intro-(1)

컨셉 하이브(Hive)는 하둡(Hadoop)기반 데이터 웨어하우징 인프라이다. 하둡은 상용 하드웨어에서 데이터 저장 및 처리를 위한 대규모 스케일아웃 및 내결함성을 제공한다. 하이브는 대량의 데이터를 SQL로 쉽게 요약하고 분석을 진행할수 있도록 설계되었다. 3년간 Hive를 써오면서 느낀 장점은 다양한 포맷(csv, json, xml 등등)의 데이터들을 비교적 쉬운 SQL로 처리할 수 있는점 같다. 다양한 포맷 데이터를 읽고 변환하여 재적재하는 프로그램들을 일일히 만들어야하는 공수가 적은점이 최고 장점아닐까...? 다만 하이브는 맵리듀스 기동 부하로 인해 간단한 쿼리도 DMBS보다 매우 긴 응답시간을 가지지만 일반적으로 Hive로 처리하는 대규모 데이터가 가지는 처리시간에 비하면 짧다. 실제로 Hive..

[Hive] Hive-시작-(0)

신입때 부터 Hive를 이용해서 Workflow를 만들어 왔고 관련해서 정리도 했지만.... 개발자 다들 하는 블로그로 지식 정리겸... 시작해보려고 한다..(첫날임...) 전체적인 내용은 'Programming Hive' 이라는 책에 있는 내용을 토대로 Hive document 와 같이 정리하려고 한다.... 해당 책은 초반 발행일이 2013년이기도하고 Hive 버전이 2이기 때문에 프로젝트 마다 설정이 다르고 적용하지 못하거나 이미 적용되어있는 경우도 많아 document와 비교하여 정리하려고 한다.