- Airflow
- Airflow는 데이터 파이프라인을 작성하고 관리하기 위한 오픈소스 Work-flow 자동화 패키지임. 파이썬 스크립트로 사용자 지정 작업 및 work-flow를 지정할 수 있음.
- Airflow의 Task는 파이썬 함수로 구현되어 실행되고, 파이썬 패키지와 라이브러리를 확장해서 사용할 수 있음.
- 데이터의 수집, 처리, 저장 및 전달을 자동화하고 스케쥴러를 실행할 수 있음.
- 주요특징
- Task 단위 Work-flow 관리
- 스케쥴링 : Airflow는 작업을 정의하고 실행 일정을 설정할 수 있음. 작업들은 특정 시간 또는 조건에 따라 주기적으로 실행될 수 있음.
- 모니터링 및 로깅 : Airflow 대시보드를 통해 실행중인 작업의 상태를 모니터링하고 Log Data를 볼 수 있음.
- 동적 Work-flow : 파이프라인 내에서 조건문과 제어문을 사용해서 동적인 워크플로우를 생성할 수 있음.
- 다양한 연결성 : 여러 Database, Storage System, Cloud Service와 연동이 가능한 플러그인 제공
- 확장성 : 작업을 병렬로 실행하고 대규모 데이터 파이프라인을 처리할 수 있음.
- 작동 방식
- DAG (Directed Acylic Graph) 정의 : Airflow 는 DAG로 정의됨. DAG는 task 간의 의존성을 정의하는 방향성 비순환 그래프임
- Operator 정의 : 각 Task는 Operator로 정의됨. Operator는 실제로 어떤 작업을 수행하는 역할을 하는데, 예를 들어 Python 함수 실행이나 SQL 쿼리 실행, 데이터 복사 등이 있음.
- DAG 작성 : Task 간 의존성을 정의하여 DAG 작성함. 파이프라인의 논리를 정의하는 영역임.
- 스케쥴 설정 : 작업이 언제 실행되어야 하는지 스케쥴을 설정함. Airflow는 Cron expression 혹은 Timedelta를 사용하여 스케쥴링 할 수 있음.
- 실행 : 설정된 스케쥴에 따라 Airflow는 작업을 실행하고 작업간의 의존성을 준수함.
- 모니터링 및 관리 : 실행중인 작업 및 Work-flow를 Airflow 대시보드에서 모니터링하고 관리함. Task 실행상태와 로그 데이터를 확인할 수 있음.
- Apache Airflow를 활용하면 데이터 파이프라인을 효율적으로 관리/스케쥴링 할 수 있으며 작업들간 의존성도 관리하여 데이터 처리작업을 자동화할 수 있음.
- 파이썬 연동
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime
# DAG 정의
dag = DAG(
'my_dag',
schedule_interval=None, # 실행 스케줄 설정
start_date=datetime(2023, 1, 1),
catchup=False # 이전 실행 누락된 작업을 실행하지 않음
)
# 파이썬 함수 정의
def my_python_function():
print("Hello from Python!")
- Kafka
- Kafka는 Apache kafka를 이용해서 데이터를 real-time으로 수집하고 저장, 전송하는 스트리밍 방식의 파이프라인
- 대용량의 데이터를 안정적으로 처리할 수 있고, 분산 환경에서 동작하는 분산 스트리밍 플랫폼으로 활용되고 있음.
- 구성요소
- Apache Kafka : 데이터를 토픽(Topic) 단위로 구분하며, 데이터 생산자(Producer)가 데이터를 특정 토픽으로 전송하고 데이터 소비자(Cosumer)가 해당 토픽에서 데이터를 읽고 활용할 수 있음.
- Producer : 데이터를 생산하고 Topic 으로 보내는 역할을 함.
- Broker : Kafka 의 각 서버를 Broker 라고 함. 브로커는 데이터를 받아서 저장하고, 데이터를 요청한 Consumer에게 전송함. 여러 브로커를 함께 사용하면 고가용성 및 확장성을 확보할 수 있음.
- Topic : 데이터 스트림을 묶어서 저장하는 단위임. 각 토픽은 데이터 스트림의 특정 주제나 카테고리를 의미하며, 토픽 단위로 분류되고 처리됨.
- Consumer : 토픽에서 데이터를 읽고 필요한 처리를 수행하는 역할임. 여러 destination으로 전송될 수 있으며, 이에 따라 소비자는 데이터를 처리하고 다양한 작업을 수행함.
-
- 작동 방식
- 데이터 수집 : 데이터 파이프라인은 다양한 data source 에서 수집함. 생산자(Producer)를 통해 Kafka 토픽으로 보내짐.
- 스트림 처리 : Kafka 토픽에 도착한 데이터는 브로커에 저장되며, 소비자(Consumer)가 해당 토픽에서 데이터를 read하여 필요한 처리를 수행하고 다른 시스템으로 데이터를 전송할 수 있음.
- 데이터 전송 : 데이터베이스에 저장하거나 실시간 대시보드에 표시하는 등, 처리된 데이터는 다른 시스템으로 전송됨.
- 실시간 분석 및 모니터링 : 실시간으로 데이터를 처리하고 모니터링 할 수 있음.
- 파이썬 연동
from kafka import KafkaProducer, KafkaConsumer
# Producer
producer = KafkaProducer(bootstrap_servers='localhost:9092')
producer.send('my_topic', value='Hello, Kafka!')
# Consumer
consumer = KafkaConsumer('my_topic', bootstrap_servers='localhost:9092')
for message in consumer:
print(message.value)
- dbt
- Presto
'Medical AI & Article Review' 카테고리의 다른 글
BI tool (0) | 2023.10.11 |
---|---|
Ad-hoc 데이터 분석 (0) | 2023.10.11 |
의료에서의 컴퓨터 비전(Computer vision in Medical) (1) | 2023.10.08 |
PPG(Photoplethysmography) 광용적맥파 정리 (0) | 2023.10.07 |
ECG(심전도) 데이터 노이즈 처리 (0) | 2023.08.28 |