DataEngineering

    Spark tuning

    이번 포스트에서는 Spark 작업을 최적화하여 성능을 향상시키는 방법에 대해서 다룹니다. Spark 성능 튜닝은 시스템이 사용하는 메모리, 코어와 인스턴스를 대상으로 기록할 설정을 조정하는 프로세스를 가리킵니다. Spark 튜닝을 통해 편의성과 성능 사이의 균형을 맞추고 리소스 병목 현상을 예방하는 효과를 얻을 수 있습니다. Data Serialization 객체를 직렬화하는 부분에서 성능에 영향이 크기 때문에 Spark 어플리케이션 최적화를 위해 가장 먼저 조정합니다. 여기서 직렬화를 다루는 이유는 직렬화는 spark은 네트워크로 데이터를 전송하거나 디스크에 쓸 때 바이너리 포맷으로 변환하기 위한 과정이나 셔플과정에서 쓰이기 때문에 이부분 튜닝이 성능에 큰 영향을 줄 수 있습니다. spark에서는 ja..

    [Spark] Spark run in Cluster Mode-YARN

    이전까지 spark 스크립트를 배치로 돌리면서 클러스터에서 spark-submit커맨드를 보내기 급급했는데 어플리케이션이 클러스터에서 어떻게 실행되는지 설명할 수 있어야겠다고 생각이 들었습니다. 이번 포스트에서는 spark-submit으로 클러스터에 띄운 어플리케이션이 어떻게 실행되는지 공식 문서 내용을 정리합니다. 용어 설명 Task executor에 전달되는 작업 단위 Job Spark action에 대한 응답으로 생성되는 여러 태스크로 구성된 병렬 연산. 각각의 작업을 실행하여 전체적인 처리 과정을 분산시킵니다. Stage 개별의 job은 stage라고 불리는 소규모 태스크 세트로 분할됩니다. Application Spark 스크립트로 빌드된 프로그램. 클러스터에 driver와 executor로 구..

    [Airflow] Operators

    하나의 오퍼레이터는 Airflow에서 완수해야하는 하나의 기본 단위이다. 이번 포스트에서는 가장 많이 쓰이는 오퍼레이터인 BashOperator, PythonOperator, KubernetesPodOperator 등 모든 오퍼레이터가 상속받는 BaseOperator 내용을 보면서 필수 인자와 각 오퍼레이터별 별도 필요 인자를 살펴본다.BaseOperator Abstract base class for all operators. 모든 오퍼레이터들을 위한 추상 클래스 오퍼레이터들은 DAG 내의 노드가 되는 객체들을 생성하기 때문에, BaseOperator는 DAG 크롤링 행동을 위한 많은 재귀 메서드들을 포함하고 있다. 이 클래스에서 파생되기 위해서는, 생성자와 'execute' 메서드를 재정의하면 된다. ..

    Airflow Concept

    Airflow는 배치성으로 처리가 필요한 워크플로우를 개발하고 스케쥴링하고 모니터링하는 오케스트레이션 플랫폼이다. 스트리밍 솔루션이 아니기 때문에 계속 돌아가는 이벤트기반 워크플로우를 위해 설계되지 않았다. 보통은 Kafka를 통해서 실시간 데이터를 입수 및 처리해서 스토리지에 쌓고 Airflow가 주기적으로 데이터 처리를 시작한다. 이번 포스트에서는 Airflow의 기본 개념과 중요한 구성 요소들을 간단하게 소개한다. 스크립트 작성보다 기존에 사용하던 Airflow의 기본 철학을 이해하고 DAG를 구성하면서 사용했던 인자들을 복습하는 장이다. Workflow airflow에서는 워크플로우를 코드로 정의할 수 있다는 특징을 가진다. 이런 특성은 다음 목적을 위해 구현된다. Dynamic: 파이썬 코드로 ..

    MapReduce

    💡 병렬화 및 내결함성의 세부 사항을 추상화하는 대규모 데이터셋을 처리하기 위한 프로그래밍 모델 Cluster Master Node 분산 파일 시스템을 관리하고 워커 노드가 수행할 작업을 예약한다. NameNode: 파일 시스템 메타 데이터를 관리 Job Tracker: 워커 노드에서 작업 실행을 조정 Worker Node 데이터를 처리하는 작업을 실행하는 시스템이다. 데이터 블록을 저장하고 마스터노드로부터 할당된 테스크를 수행한다. 하둡에서 데이터는 분산된 방식으로 워커 노드에 저장된다. 맵리듀스 모델은 그 데이터를 병렬 처리하는데 쓰인다. 이런 원리로 하둡은 대용량 데이터를 효율적으로 관리하고 데이터 분석과 머신러닝 같은 규모의 작업을 할 수 있다. Job 클라언트가 수행하는 작업의 기본 단위 (입력..

    Hadoop

    💡 큰 데이터가 있다면 하나의 서버를 키우는것보다 더 많은 서버에서 이를 분담 검색 엔진 개발을 위해 시작된 프로젝트 기능을 위한 크롤링 데이터를 색인하는 시스템 → 수십억 웹 페이지, 1조개 링크에 대한 데이터 저장 테라바이트 크기 이상의 데이터를 더 빠르게 정렬할 수 있게 되었다 HDFS 💡 대용량 파일을 다룰 수 있도록 설계된 파일 시스템 하둡의 파일 시스템 추상화 개념에 대한 구현체 중 하나 클러스터 전체에서 매우 높은 총 대역폭을 제공한다. 설계 특성 매우 큰(~MB, GB, TB, PB) 파일 스트리밍 방식의 데이터 접근 한 번 쓰고 여러번 읽는다 데이터셋은 생성 or 원본으로부터 복사 범용 하드웨어 쉽게 구할 수 있는 하드웨어로 구성된 대형 클러스터에서 문제 없이 실행되도록 설계됨 HDFS ..