전체 글 85

K8S Ingress & Egress Gateway

Isto Gateway Istio는 쿠버네티스와 같은 컨테이너 오케스트레이션 시스템 위에서 동작하는 오픈 소스 서비스 메시(service mesh) 솔루션입니다. 서비스 메시는 마이크로서비스 간의 통신을 관리하고, 제어하며, 보안을 강화하는 데 사용되는 인프라 계층입니다. Istio는 마이크로서비스 아키텍처 내에서 서비스 간의 통신을 쉽게 만들어주고, 트래픽 관리, 서비스 간의 인증과 인가 처리, 서비스 간의 데이터 모니터링과 같은 기능을 제공합니다. 기본 구성 요소 Istio는 다음과 같은 주요 구성 요소로 이루어져 있습니다: Envoy Proxy: 모든 서비스 인스턴스 옆에 배치되는 경량의 사이드카 프록시. Envoy는 Istio의 데이터 플레인을 구성하며, 모든 진입 및 진출 트래픽을 중재하고, 고..

Tools/K8S 2024.03.25

RxJS 파이프라인 연산자

pipe RxJS의 pipe 함수는 여러 개의 연산자를 함께 사용하여 복잡한 데이터 흐름을 쉽게 관리할 수 있도록 도와줍니다. pipe 함수는 Observable에 메서드 체인으로 연산자를 적용하고, 최종적으로 새로운 Observable을 반환합니다. 이 방법을 통해, 입력 Observable로부터 출력 Observable까지 데이터가 어떻게 변형되고 처리되는지 명확하게 볼 수 있습니다. import { interval } from 'rxjs'; import { filter, map, take } from 'rxjs/operators'; const observable = interval(1000).pipe( filter(value => value % 2 === 0), // 짝수만 통과 map(value ..

RxJS 설명과 Observable 예제

RxJS RxJS는 특히 비동기 이벤트를 처리할 때 강력하며, 복잡한 데이터 스트림을 다루어야 하는 상황에서 꼭 필요하다고 할 수 있습니다. 이러한 상황은 주로 실시간 데이터 처리, 사용자 입력 처리, HTTP 요청 처리 등에 해당됩니다. RxJS를 사용하면 이벤트 스트림을 쉽게 생성, 변환, 조합 및 구독할 수 있으며, 이는 복잡한 비동기 코드를 보다 선언적이고 관리하기 쉬운 형태로 만들어줍니다. 예제: 실시간 검색어 기능 구현 다음은 사용자가 입력 필드에 텍스트를 입력할 때마다 검색어를 실시간으로 서버에 쿼리하고 결과를 받아 표시하는 기능을 구현한 예제입니다. 이 예제는 사용자 입력 처리와 HTTP 요청을 동시에 다루는 방법을 보여줍니다. RxJS를 사용하면 이런 유형의 상호작용을 효과적으로 구현할 ..

Spark RDD 저장과 캐싱

RDD의 저장 RDD 저장에 대한 개념은 RDD가 메모리에 저장되거나 디스크에 저장될 수 있다는 것을 의미합니다. 저장 방법은 다음과 같이 세분화됩니다: RDD 스토리지 레벨 1. 메모리 저장 (In-Memory Storage) MEMORY_ONLY: RDD를 JVM(Java Virtual Machine)의 힙 메모리에만 저장합니다. 이 방식은 가장 빠른 읽기 속도를 제공하지만, 메모리 용량이 제한적이기 때문에 모든 데이터를 저장할 수 없을 경우 일부 데이터를 잃어버릴 수 있습니다. MEMORY_AND_DISK: RDD의 일부를 메모리에, 나머지를 디스크에 저장합니다. 메모리 용량을 초과할 경우, 초과하는 데이터는 디스크에 저장됩니다. 이 방법은 메모리 용량을 초과하는 데이터를 처리할 때 유용하지만, 디..

Tools/Spark 2024.03.21

타입스크립트 스프레드 연산자, 나머지 매개변수(...), 언더스코어(_)

TypeScript에서 .., ..., _ 같은 기호들은 각각 다른 용도로 사용됩니다. 여기서 ..는 TypeScript 문법에 직접적으로 해당하는 기호가 아니지만, ... (스프레드 연산자 또는 나머지 매개변수)와 _ (일반적으로 무시되는 변수 또는 속성을 나타내는 데 사용)는 TypeScript 및 JavaScript에서 중요한 역할을 합니다. ... (스프레드 연산자 또는 나머지 매개변수) 스프레드 연산자 (Spread Operator): 배열이나 객체의 모든 요소를 개별 요소로 확장하거나, 함수 호출 시 인자 리스트로 전개하는 데 사용됩니다. 배열 또는 객체 리터럴 내부에서 사용할 수 있습니다. let numbers = [1, 2, 3]; let moreNumbers = [...numbers, 4..

Spark 파니셔닝

Spark 파티셔닝 Apache Spark에서 RDD(Resilient Distributed Dataset) 파티셔닝은 데이터를 분산 처리하기 위해 데이터셋을 물리적으로 분할하는 방식입니다. 파티셔닝은 Spark의 병렬 처리와 직접적으로 관련이 있으며, 데이터를 여러 노드에 분산시켜 처리 속도와 효율성을 높입니다. RDD 파티셔닝의 주요 목적은 네트워크 통신 비용을 최소화하면서 데이터 처리 작업을 최적화하는 것입니다. spark 파티셔닝의 종류 - 해시 파티셔닝 (Hash Partitioning): 이 방법은 키를 기준으로 데이터를 파티션에 할당합니다. 각 키는 해시 함수를 통해 파티션 번호에 매핑되며, 이는 키가 동일한 데이터가 같은 파티션에 위치하도록 보장합니다. 이 방식은 키 기반의 집계나 조인 작..

카테고리 없음 2024.03.21

Spark 브로드캐스트 변수(Broadcast Variables)와 어큐뮬레이터(Accumulators)

브로드캐스트 변수(Broadcast Variables) 브로드캐스트 변수는 클러스터의 모든 노드에 큰 읽기 전용 값을 효율적으로 분산하기 위한 Spark의 메커니즘입니다. 이 변수들은 모든 작업 노드에서 접근할 수 있도록 메모리에 캐시되므로, 데이터를 각 노드에 복사하지 않고도 공유할 수 있습니다. 브로드캐스트 변수는 일반적으로 전체 작업에서 공통적으로 사용되는 대규모 데이터 세트(예: 참조 데이터, lookup 테이블)에 사용됩니다. val spark: SparkSession = ... val largeLookupTable = spark.sparkContext.broadcast(loadLargeLookupTable()) spark.sparkContext.parallelize(data).map { ite..

Tools/Spark 2024.03.21

Spark RDD 연산 예제 모음

TransFormation 연산 1. map map 함수는 RDD의 각 요소에 주어진 함수를 적용하고 결과로 새 RDD를 생성합니다. # RDD 생성 rdd = sc.parallelize([1, 2, 3, 4]) # 각 요소에 2를 곱함 result = rdd.map(lambda x: x*2) result.collect() # 결과: [2, 4, 6, 8] 2. filter filter 함수는 주어진 조건 함수에 따라 요소를 필터링합니다. 조건에 맞는 요소만 포함하는 새 RDD를 반환합니다. # RDD 생성 rdd = sc.parallelize([1, 2, 3, 4, 5]) # 짝수만 필터링 result = rdd.filter(lambda x: x % 2 == 0) result.collect() # 결과..

Tools/Spark 2024.03.13

Spark RDD 연산 주요 개념

RDD 연산 RDD는 두 종류의 연산을 지원합니다: Transformations: 원본 RDD를 변형하여 새로운 RDD를 생성하는 연산입니다. 예를 들어, map, filter, flatMap, union, distinct 등이 있습니다. Transformations는 지연 계산(lazy evaluation) 방식을 사용합니다. 즉, 실제 연산은 액션이 호출될 때까지 실행되지 않습니다. Actions: RDD에 저장된 데이터에 대해 연산을 수행하고 결과를 반환하는 연산입니다. 예를 들어, count, collect, reduce, take 등이 있습니다. 액션 연산은 즉시 실행되며, 결과는 Spark 드라이버 프로그램으로 반환됩니다. Lazy Evaluation Apache Spark의 "Lazy Eva..

Tools/Spark 2024.03.11

RDD의 생성과 데이터 처리

[ 목차 ] RDD(Resilient Distributed Dataset)는 Apache Spark의 핵심 개념 중 하나로, 불변성을 가지며 분산된 데이터 컬렉션을 나타냅니다. RDD는 데이터를 메모리에서 효율적으로 처리하고, 병렬로 연산을 수행할 수 있도록 설계되었습니다. 이는 Spark가 대규모 데이터를 빠르게 처리할 수 있는 주요 이유 중 하나입니다. RDD의 주요 특징 불변성(Immutability): 한 번 생성된 RDD는 변경될 수 없습니다. 데이터를 변형하려면, 변형 연산을 적용하여 새로운 RDD를 생성해야 합니다. 복원력(Resilience): RDD는 고장 내성을 가지고 있으며, 데이터 손실 시 원본 데이터로부터 자동으로 복구될 수 있습니다. 이는 RDD의 lineage(계보) 정보를 통..

Tools/Spark 2024.03.11