목록전체 글 (82)
엔지니어 블로그

GCP에 Kafka 3노드 클러스터 구축하기 (Terraform + Manual 설치)이번 프로젝트에서는 GCP 인스턴스를 활용해 Kafka 클러스터를 직접 구축해보았습니다. Terraform을 이용해 인프라를 구성하고, 각 인스턴스에 Kafka를 수동으로 설치하여 3개의 브로커로 구성된 Kafka 클러스터 환경을 만들었습니다.1. 인프라 사양 및 구성인프라는 다음과 같은 사양으로 구성했습니다. 무료 크레딧을 활용할 수 있었기 때문에 쾌적한 개발 환경을 위해 다소 여유 있는 스펙을 선택했습니다. Terraform을 이용해 GCP에 VM 인스턴스를 생성했습니다.Type: e2-standard-4vCPU: 4Memory: 16GBNode 수: 32. Kafka 설치 및 설정 (각 노드에서 진행)Java 설치..
Spark의 대표적인 장애인 Spill을 알아보고 어떤 설정을 통해 성능 튜닝이 가능한지 알아보려고 합니다. Spill을 알아보기 전에 Shuffle,Partition의 개념을 먼저 알아보겠습니다.PartitionPartition은 RDD를 구성하는 최소 단위 객체입니다. Spark의 성능,리소스 사용을 좌우하는 중요한 개념입니다. Partition은 여러 물리 노드에서 나누어 작업합니다. Spark의 최소 작업 단위를 Task라고 하고, 1개의 Task는 1개의 Partition에서 처리합니다. 또 1개의 Task는 1Core가 처리합니다. 즉, 1Task = 1Core = 1Partition입니다.Partition의 수는 Spark 성능을 크게 좌우합니다. Partition의 수가 Core수를 결정하..

Lazy Evaluation 이란?Spark에는 Lazy Evaluation이라는 기능이 있습니다. Transformation 작업을 실행하더라도 실제 변환은 Action 작업이 진행될 때 까지 미루는 기능입니다. 예를 들어 df.filter() 작업을 수행하더라도 실제 데이터 변환 작업은 진행되지 않고, df.show()를 수행할 때 변환이 진행됩니다.Lazy Evaluation을 사용하는 이유Lazy Evaluation을 사용하는 이유는 효율적인 자원 활용을 위함입니다. 데이터 변환을 미루는 행위를 통해 전체 DataFrame을 메모리에 올리는 작업을 피할 수 있습니다. 조금 더 자세히는 매 변환 작업마다 DataFrame을 메모리로 가져오는 것을 피하여 자원 활용의 효율성을 높이기 위함입니다.또 다..

Kafka를 통한 데이터 스트리밍 프로젝트를 진행하려고합니다.이번 프로젝트에서는 원유 및 금의 시세 변화가 S&P 500 지수 내 종목들의 섹터별 주식 가격에 미치는 영향을 분석합니다. 프로젝트 배경금융 시장에서는 원유와 금 가격의 변화가 경제 전반에 영향을 미치며, 특히 섹터별로 그 영향의 정도가 다를 수 있습니다. 본 프로젝트의 목적은 원유와 금 시세가 특정 섹터에 속한 기업 주가에 얼마나 영향을 주는지 분석하는 것입니다.아키텍처Postgresql의 데이터를 Python에서 Producer를 개발하여 수집합니다. raw 데이터를 CloudStorage에 저장 후 Spark Streaming으로 데이터를 처리, 완료 된 데이터를 BigQuery와 CloudStorage에 저장합니다. 마지막으로 Look..
에러 내용psycopg2.OperationalError: connection to server at "localhost" (::1), port 5432 failed: fe_sendauth: no password suppliedpython에서 .env를 사용하여 postgresql에 연결하는 과정에서 위와같은 에러가 나왔다.from dotenv import load_dotenvclass Database(): def __init__(self): load_dotenv() print(os.getenv("DB_HOST")) 이런 식으로 print를 해봤을때 None이 프린트 되는 것으로 봐서 .env를 찾지 못하고 있는 것 같았다.해결 방법간단하게 해결했다. .env의 경로를 잡아주..

Event Streaming Platform이벤트 스트리밍이란? 이벤트 스트리밍이란 다양한 소스에서 발생하는 실시간 데이터를 이벤스 스트림 형태로 캡쳐하고 저장/처리하는 방법입니다. 증권거래소,은행 등의 결 제 정보 및 금융정보, 물류 산업에서 실시간 추적 및 모니터링과 같이 실시간 데이터 처리가 중요한 작업에 사용됩니다.이벤트 스트리밍의 필요성운영적 측면 : 일상의 많은 서비스가 온라인화 되면서 오프라인 서비스의 즉각적인 반응을 온라인에서도 얻길 원하는 사용자들이 많아지고 있습니다. 이에 따라 온라인에서도 오프라인과 같은 즉각적인 반응을 구현하기 위해 많이 사용됩니다.기술적 측면 : 전통적으로 널리 사용되던 배치처리 시스템은 실시간 반영이 어렵습니다. 예컨데 일단위 배치 처리 시스템이 있다고 가정한다..

DataWarehouse데이터 웨어하우스는 대표적인 데이터 아키텍처입니다. 조직 내 의사결정을 지원하는 정보 관리 시스템을 말하며, 조직 내 여러 데이터를 공통의 형식으로 한데 모아 관리하고 분석 등을 통해 의사결정에 활용합니다.1989년 빌 인먼이 처음 고안했고, '경영진의 의사결정을 지원하는 주제 지향적이고 통합적이며 비휘발성이고 시간 변형적인 데이터 모임' 이라는 정의를 내렸습니다.데이터 웨어하우스는 MPP 시스템이 등장하면서 눈부신 발전을 거듭합니다. SQL을 지원하지만, MPP의 등장으로 대량의 데이터를 병렬스캔할 수 있고 고성능 집계와 통계 계산을 수행할 수 있습니다. 여기에 더하여 대규모 데이터에 대한 쿼리를 위해 행 기반 데이터베이스에서 열 기반 데이터베이스로 전환 되는 추세입니다.ETL은..
멀티스레딩 환경의 Race Condition과 동기화 방법Race Condition이란?멀티스레딩 환경에서는 Race Condition(경쟁 상태)이 발생할 수 있습니다. 이는 여러 프로세스나 스레드가 동시에 같은 데이터를 조작할 때, 접근 순서나 타이밍에 따라 작업의 결과가 달라질 수 있는 현상을 말합니다.동기화(Synchronization)의 개념동기화는 여러 프로세스나 스레드가 동시에 실행되더라도 공유 데이터의 일관성을 유지하기 위한 작업입니다.임계 영역(Critical Section)데이터 일관성을 보장하기 위해 단 하나의 프로세스 또는 스레드만 진입해 실행 가능한 영역을 임계 영역(Critical Section)이라고 합니다. 임계 영역 진입을 위한 상호 배제(Mutual Exclusion)를 ..