데이터 엔지니어링 학습 중 다양한 데이터 파이프라인을 구축해보면서 복잡한 워크플로우를 자동으로 관리하고 모니터링하는 시스템에 대한 필요성이 커졌습니다. 이번 포스팅에서는 Airflow와 Kubernetes를 통해 안정적이고 효율적인 데이터 파이프라인을 구축을 위해 필요한 기본 개념에 대해 알아보겠습니다. 이번 포스팅은 Line Engineering의 Kubernetes를 이용한 효율적인 데이터 엔지니어링(Airflow on Kubernetes VS Airflow Kubernetes Executor)글을 참고하여 작성하였습니다.https://engineering.linecorp.com/ko/blog/data-engineering-with-airflow-k8s-1 Kubernetes를 이용한 효율적인 데이터..
1. 구성 환경 및 설치 버전GCP Computer Engine: e2-standard-2(vCPU 2개, 메모리 8GB) 3대무료 크레딧을 사용할 수 있는 GCP를 사용Kafka 3.7.2최신 4버전을 설치해서 사용해보려 했으나 학습목적이므로 stable버전을 사용하기로함Java 17Kafka 3.7.2: Java 11이상 권장 (Kafka Broker Java11이상 / Kafka Clients, Streams Java 8이상)Kafka 4:Java 17이상 권장 (Kafka Broker Java17이상 / Kafka Clients, Streams Java 11 이상)추후 업그레이드를 생각하여 Java17로 설치하기로함KRaft분산 시스템을 관리하기 위한 메커니즘기존엔 Zookeeper를 사용하여 클..
Kafka는 대규모 실시간 데이터 스트리밍을 위한 대표적인 분산 메시지 큐 시스템입니다. 이번 포스팅에서는 Kafka의 기본 개념과 구성 요소 등을 살펴보며 Kafka가 왜 실시간 데이터 처리 플랫폼으로 각광받는지 알아봅시다. 1. Kafka Overview1.1 Kafka의 주요 기능Kafka는 다음과 같은 특징을 가진 분산 메시지 큐 시스템입니다:Pub/Sub 모델을 지원하는 구조로 데이터를 생산하는 Publisher와 소비하는 Consumer라고 하는 subscriber로 데이터를 관리하고 처리여러 대의 서버로 구성된 클러스터 기반 아키텍처를 통해 수평 확장 가능Topic 단위로 데이터를 관리하며, Topic은 여러 개의 Partition으로 구성 가능High throughput, Low laten..
현대의 디지털 서비스는 점점 더 실시간 응답을 요구하고 있습니다. 사용자의 행동, 장비의 센서 데이터, 시스템 로그 등 수많은 정보가 끊임없이 생성되고 있으며, 이를 즉시 처리하고 반응해야만 경쟁력을 유지할 수 있습니다. 이러한 요구를 충족시키기 위해 등장한 것이 이벤트 스트리밍(event streaming)과 이벤트 기반 아키텍처(Event-Driven Architecture)입니다. 이번 글에서는 이벤트 스트리밍의 개념부터, Event-Driven Architecture, 그리고 분산 메시지 큐에 이르기까지 핵심 개념을 정리해 보겠습니다. 1. 스트리밍 데이터 처리의 필요성1.1 이벤트 스트리밍이란?이벤트 스트리밍(event streaming)은 데이터베이스, 센서, 모바일 장치 등에서 발생하는 실..
1. Spark 설치 전 참고사항Spark학습을 목적으로 한다면 로컬환경으로 구성하는 것이 좋습니다. 이유는 다음과 같습니다.로컬 설치 이유비용 없음: 로컬 머신만 있으면 별도의 클라우드 비용 없이 실습 가능구성 이해에 도움: Spark를 직접 설치하고 설정해보는 과정에서 아키텍처 이해에 큰 도움간단한 테스트에 적합: 소규모 데이터(수MB~수백MB) 기준으로 대부분의 Spark API를 충분히 학습 가능오프라인 환경에서도 실습 가능구성 방법Spark Standalone 모드로 설치Jupyter + PySpark 조합으로 실습 환경 구성 가능로컬 클러스터(Spark Local[n]) 방식으로 멀티스레드 테스트도 가능다른 구성 방법 (참고)Docker 또는 로컬 클러스터 구성Spark Master + Wor..
Spark를 사용하기 앞서 RDD라는 기본적인 데이터 구조에 대해 확실히 이해하는것이 중요합니다. 지난 포스팅에서는 RDD의 개념을 간단하게 알아보았다면 이번에는 RDD가 개발 배경과 특징에 대해 자세히 알아보겠습니다. 1. RDD란?중요한만큼 다시한번 RDD에 대해 알아봅시다.RDDRDD는 immutable한 분산된 object들의 collection이다.RDD의 각 데이터셋은 logical patition으로 나눠져있어 클러스터 내의 물리적으로 다른 컴퓨팅노드에서 처리될 수 있다.read-only의 파티션된 record의 집합이다.storage나 다른 RDD로 부터 deterministic operation(결정론적인 동작, Spark의 API)을 통해서 만들어질 수 있다.병렬로 실행될 수 있는 Fa..