Data Engineering 16

Spark Application Architecture - 실행 모드

실행 모드는 스파크 애플리케이션을 실행할 때 요청한 자원의 물리적인 위치를 결정한다. 실행 모드는 총 3가지로 클러스터 모드, 클라이언트 모드, 로컬모드가 있다. 클러스터 모드 클러스터 모드를 사용하려면 컴파일된 JAR파일이나 파이썬 스크립트, R 스크립트를 클러스터 매니저에게 전달해야 한다. 클러스터 매니저는 파일을 받은 다음 하나의 워커 노드에 스파크 드라이버을 실행하고 다른 워커 노드에 스파크 익스큐터 프로세스를 실행한다. 클러스터 매니저는 모든 스파크 애플리케이션과 관련된 프로세스를 유지하는 역할을 한다. 클러스터 모드에서는 스파크 드라이버, 스파크 익스큐터가 모두 클러스터 워커 노드에서 실행된다. 클라이언트 모드 클라이언트 모드는 애플리케이션을 제출한 클라이언트 머신에 스파크 드라이버가 위치한다..

Spark Application Component - Component

스파크 드라이버 스파크 애플리케이션의 ‘운전자 역할’을 하는 프로세스. 스파크 어플리케이션의 실행을 제어하고 스파크 클러스터(익스큐터의 상태와 태스크)의 모든 상태 정보를 유지힌다. 물리적 컴퓨팅 자원 확보, 익스큐터 실행을 위한 클러스터 매니저와의 통신 등도 수행한다. 요약하면 물리적 머신의 프로세스이며 클러스터에서 실행중인 애플리케이션의 상태를 유지하는 역할을 수행한다. 스파크 익스큐터 위에서 기술한 스파크 드라이버가 할당해준 태스크를 수행하는 프로세스. 스파크 익스큐터는 스파크 드라이버가 할당한 태스크를 받아 실행하고 태스크의 상태와 결과를 드라이버에 보고한다. 모든 스파크 애플리케이션은 개별 익스큐터 프로세스를 사용한다. 클러스터 매니저 클러스터 매니저는 스파크 어플리케이션을 수행할 클러스터 머신..

Dockeroperator의 Bind mount을 활용한 Airflow 운영

Docker operator 나는 Airflow에서 Dockeroperator를 활용한다. Dockeroperator는 scheduling된 job을 수행할 때 미리 구성해놓은 docker image로 container를 생성하고, 그 안에서 job을 수행한다. 이러한 방식을 활용한 주요한 이유는 의존성 문제이다. 각각의 job이 요구하는 환경을 docker image로 미리 구성해놓고, 필요할 때 마다 job에 맞는 환경을 생성하는 방식으로 예기치 않게 발생할 수 있는 문제에 대처하기 위해 Dockeroperator를 활용했다. Mount 방식에 대한 고민 Docker image를 만들며, 컨테이너 내부에 job을 위한 코드는 어떻게 담을 것인지에 대한 고민을 시작했다. Dockerfile의 COPY ..

Airflow tutorial - 1

Airflow? 스케쥴러 특징 장점 Install ~ $ conda create -n airflow_tutorial python=3.8 ~ $ conda activate airflow_tutorial (airflow_tutorial) ~ $ pip install apache-airflow (airflow_tutorial) ~ $ airflow version # install check 2.1.1 (airflow_tutorial) ~ $ mkdir airflow && cd airflowairflow home path 설정해주기 (airflow_tutorial) ~/airflow $ vi ~/.zshrc # 자신이 사용하는 쉘에 따라서 vi로 편집 # ~/.zshrc export AIRFLOW_HOME=pa..

Kafka의 구조와 원리

Kafka 비동기 처리를 위한 메시지 큐의 한 종류 메일서비스 와의 비교 메일이 대표적인 비동기 메시징 시스템이다. 메일과 비교하면 kafka를 이해하기 용이하다. 메일의 경우 보내는 사람은 받는 사람의 상태와 상관업이 메일 서버로 메시지를 보낼 수 있다. 보낸 메시지는 메일 서버에 저장되며 받는 사람은 원하는 시간에 메일을 볼 수 있다. 카프카도 유사하다. 프로듀서는 카프카로 메시지를 보내고 해당 메시지는 카프카 서버(브로커)에 저장되어 보관한다. 그리고 컨슈머는 필요할 때 카프카 서버에 저장되어 있는 메시지를 가져갈 수 있다. 여러 대의 분산 서버에서 대량의 데이터를 처리하는 분산 메시징 시스템. 원천 시스템으로부터 대규모 트랜잭션 데이터가 발생했을 때 중간에 데이터를 버퍼링하면서 타깃 시스템에 안정..

Kafka tutorial - 1 [설치, topic생성, 발행, consumer group 실행]

install Kafka wget을 이용해 kafka를 download 받은 후, tar를 해제한다. kafka 버전별 wget link는 아래의 링크에서 찾을 수 있다. (다운로드 받으려는 kafka 버전의 하이퍼링크 링크를 복사하고 wget으로 받으면 된다.) https://kafka.apache.org/downloads ~ $ wget https://archive.apache.org/dist/kafka/2.3.0/kafka_2.12-2.3.0.tgz --2021-07-03 16:03:13-- https://archive.apache.org/dist/kafka/2.3.0/kafka_2.12-2.3.0.tgz Resolving archive.apache.org (archive.apache.org).....