목록전체 글 (7)
sean.log
Spark란?Spark: 빅데이터 처리를 위한 오픈소스 분산 처리 플랫폼메모리 기반의 빠른 분산 처리 엔진으로, 대규모 데이터를 빠르게 처리하고 이를 토대로 다양한 분석 및 실시간 서비스에 활용할 수 있도록 인프라와 API를 제공하는 역할을 한다⇒ 처리 엔진이기 때문에 HDFS, S3와 같은 저장소 위에서 계산만 하는 역할!예: 데이터가 요리 재료, HDFS는 냉장고라면 Spark는 요리사 Spark Component요리에 한식, 중식, 양식 등 다양하게 있는 것처럼 Spark의 라이브러리도 비슷하다!예: 구조화된 데이터 처리에는 SparkSQL, 실시간 처리는 Structured StreamingSpark는 여러 워크로드를 위한 라이브러리를 제공한다각각의 컴포넌트는 중심 엔진(Spark Core)과 별..
Hadoop이란?Hadoop: 대규모 데이터 처리를 위한 분산처리 오픈소스 프레임워크고가의 고성능 컴퓨터 1대 대신 저렴한 범용 컴퓨터 여러대를 클러스터로 구성하고, 큰 크기의 데이터를 나누어 병렬 처리함으로써 처리 속도를 높일 수 있다⇒ Hadoop의 핵심 키워드: HDFS, MapReduce, YARN 예: Hadoop을 택배 시스템으로 설명한다면?HDFS = 물류 창고 (데이터 저장소)MapReduce = 택배 포장 & 배송 작업 (데이터 처리)YARN = 물류 센터 관리자 (리소스 관리 및 배분) HDFS (Hadoop Distributed File System)HDFS: 대용량 데이터를 작게 잘라 분산 저장하는 스토리지- HDFS는 하나의 큰 파일을 작은 조각으로 나누어 저장하는데, 이 조각을..
사이드 프로젝트를 위한 데이터 파이프라인 환경이 필요해서 Airflow를 구축하게 되었다.이번 포스팅에서는 Docker Compose를 활용하여 CeleryExecutor 기반의 Airflow 환경을 구성한 과정을 정리해보겠다.CeleryExecutor 선택 이유Airflow는 여러 Executor를 제공하는데, 그 중 CeleryExecutor를 선택한 이유는 다음과 같다:분산 처리: 여러 워커를 통해 작업을 병렬로 처리할 수 있다확장성: 필요에 따라 워커를 쉽게 추가할 수 있다안정성: 워커가 죽어도 다른 워커가 작업을 이어받을 수 있다물론 간단한 프로젝트라면 SequentialExecutor나 LocalExecutor도 충분하지만, 실제 프로덕션에 가까운 환경을 경험해보고 싶었다. Architectu..
본 게시글은 Airflow 2.10.x 버전을 기준으로 작성하였습니다1. DAG (Directed Acyclic Graph)DAG는 워크플로우 또는 데이터 파이프라인을 정의하는 기본 개념으로, Task라는 기본적인 작업 단위를 연결한 집합이다.DAG는 지도와 같으며, 실제로 이 DAG를 실행하면 인스턴스가 만들어진다. 이때 특정 시점에 실행되는 DAG의 인스턴스를 DAG run이라고 한다. DAG는 여러 개의 Task로 구성되어 있는데, 이때 DAG가 실행될 때(DAG run이 생성될 때) DAG 내의 각 Task는 하나의 Task instance로 구체화되어 실행된다. 즉, Task instance는 특정 시점에 실행되는 Task의 인스턴스이다.2. ArchitectureWebserverAirflow에..
코딩테스트를 풀다보면 주어진 범위 내에서 소수를 구해야하는 문제들을 맞닥뜨리게 된다. 이때 정석적인 방법은 2부터 자신의 절반보다 작은 수까지 순회하며 직접 나누어보는 것이었는데, 이 방법은 꽤나 직관적이지만 효율적이기 때문에 시간 초과로 틀리기 일쑤다. 나 또한 이런 문제로 골머리를 앓던 도중, 에라토스테네스의 체라는 개념을 알게 되어 소수를 찾는 문제에서 시간 초과 문제를 해결할 수 있었다. 에라토스테네스의 체는 범위에서 합성수를 지우는 방식으로 빠르게 소수를 찾을 수 있도록 도와준다.예를 들어, 1부터 100까지의 수 중에서 소수를 찾는다고 가정하자.1은 제거 (소수가 아니므로)지워지지 않은 수 중, 제일 작은 2를 소수로 채택하고 나머지 2의 배수를 모두 지운다지워지지 않은 수 중, 제일 작은 3..
CAP Theorem?CAP Theorem은 분산 환경의 성질을 크게 3가지 특성(C, A, P)으로 나누어 설명하고, 각 특성들의 상충 관계에 대해 설명하면서 분산 시스템을 선택할 때 고려해야할 주요 특성들을 논한다분산 시스템: 최소 두 개 이상의 노드가 네트워크를 구성하며 마치 하나의 컴퓨터가 동작하는 것처럼 보이도록 하는 시스템대부분의 NoSQL 스토리지들은 분산 시스템으로 동작하고, 물리적으로 별개의 노드들이 하나의 시스템을 구성하기 위해 네트워크를 통해 서로 통신하고 동기화한다⇒ DB 관점에서 NoSQL과 SQL 데이터베이스를 구분 짓는 가장 큰 특징 CAP 각각의 의미Consistency(일관성): 모든 노드는 언제나 최신의 데이터를 보유하고 동일한 데이터를 가지고 있어야 한다분산 시스템에 몇..
gRPCAPI (Application Programming Interface): 정의 및 프로토콜 집합을 사용해 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘두 애플리케이션 간의 서비스 계약이며, 이 계약은 요청과 응답을 사용해 두 애플리케이션이 서로 통신하는 방법을 정의한다클라이언트: 요청을 보내는 애플리케이션 / 서버: 응답을 보내는 애플리케이션API의 작동 방식SOAP API: 단순 객체 접근 프로토콜을 사용해, XML을 사용해 메시지 교환. 유연성이 떨어지고 과거에 더 많이 사용된 APIRPC API: 원격 프로시저 호출Websocket API: JSON 객체를 사용해 데이터를 전달하는 최신 웹 API. 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있어 REST API보다 ..