⭐ Programming 35

ThreadPool TaskExecutor와 Async TaskExecutor

리팩토링하던 중 Async를 남발하고 있던 걸 발견.아래 코드는 기존에 ThreadPoolTaskExecutor이 아닌 AsyncTaskExecutor를 사용하고 있었다.@EnableAsyncpublic class ExecutorConfig { @Bean(name = "consumerThreadPool") public ThreadPoolTaskExecutor consumerThreadPool() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(2); executor.setMaxPoolSize(2); executor.setQueueC..

Chpater 6. 클러스터에서 애플리케이션 실행하기 - 스파크 프레임워크

1. 스파크 프레임워크 오픈 소스 프로세싱 프레임워크 일반 서버를 사용해 대용량 데이터 처리 및 분석(맵리듀스) 하둡 클러스터에서 스파크와 맵리듀스는 병행해서 사용 가능 -> 맵리듀스는 배치 프로세싱 담당/스파크는 반복 처리 담당 얀으로 2개 프로세싱 프레임워크 관리 및 맵리듀스를 실행하는 노드에서 스파크를 실행할 수 있음 맵리듀스와의 차이점 데이터 스토리지로 메모리 사용 -> 애플리케이션이 동작하는 동안 계산과 데이터 스토리지를 위해 메모리를 사용(맵리듀스는 계산하는 데 메모리 사용) 잡을 여러 단계가 있는 DAG로 변환시킴 -> DAG가 복잡할 수록 실행 능력이 더 좋음 잡을 두 단계로 제한하지 않음 -> 여러 잡들로 나누고 여러 단계로 나눠 실행 가능(최적화 가능) 스파크 인메모리 계산: 디스크에서..

Apache Flink DataStream API를 사용한 사기 탐지

상태 저장 스트리밍 애플리케이션을 위한 API FraudDetectionJob.java 데이터 흐름을 정의 package spendreport; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.walkthrough.common.sink.AlertSink; import org.apache.flink.walkthrough.common.entity.Alert; import org.apache.flink.walkthrough.common.entity.Transaction;..

분산 클러스터를 위한 하둡 시스템

클러스터를 위한 주요 서비스 리소스 매니저 리소스를 많이 사용하는 서비스 매우 작은 클러스터가 아닐면 전용 노드에서 리소스 매니저 서비스를 실행 네임노드 서비스 네임노드 전용 노드에서 실행 전용서버가 필수 저널 노드 네임노드나 리소스매니저와 같은 하둡 마스터 서비스가 실행되는 서버에서 실행 잡히스토리서버 마스터 노드가 실행되는 노드에서 실행 데이터노드와 노드매니저 서비스 모든 데이터노드에서 실행 주키퍼 서비스를 같은 노드에 위치시킬 때, 노드매니저에 할당하는 메모리를 최소화시켜야 함 데이터노드 데몬은 모든 데이터 노드마다 실행 MySQL DB 리소스를 많이 사용해 클러스터 노드 이외 곳에 설치하는 것도 고려 주키퍼 네임노드의 고가용성을 위해 최소 3개의 인스턴스에 홀수 개의 주키퍼 서비스를 실행해야 함 ..

Apache Flink란?

Apache Flink란? 분산 처리를 위한 오픈 소스 데이터 스트림 및 배치 처리 프레임워크 모든 일반 클러스터 환경에서 실행되고 인메모리 속도와 모든 스케일에서 계산을 수행할 수 있도록 설계됨 Architecture 데이터 처리 데이터는 이벤트의 스트림으로 처리 제한되지 않은 스트림 시작점은 있으나 종료시점은 존재하지 않음 스트림은 종료되지 않고 데이터가 생성될 때마다 데이터를 제공 입력이 무제한이기 때문에 어느 시점에서도 입력이 완전하지 않아 종료되지 않은 데이터를 특정 순서로 처리해야 함 이벤트가 발생한 순서대로 이벤트를 수집해야 결과의 완전성을 처리할 수 있 제한된 스트림 시작점과 종료시점이 정해져 있음 모든 계산을 수행하기 전에 모든 데이터를 수집함으로써 처리 정렬된 입력이 필요하지 않음 ->..

TimeWindow란

TimeWindow 데이터를 처리하고 분석하는 데 사용되는 시간 범위 일련의 데이터를 지정된 시간 간격으로 그룹화하거나 분할하여 특정 기간 동안의 데이터 통계, 집계 또는 분석을 수행하는데 사용 스트리밍 데이터나 시계열 데이터와 같이 시간에 따라 변화하는 데이터를 다룰 떄 유용 실시간 스트림 데이터에서 5분 동안의 트랜잭션 통계를 계산하거나, 웹 로그 데이터에서 1시간마다 페이지 뷰의 변화를 분석하는 등 적용 가능 Fixed Window 고정된 길이를 가짐 일정한 시간 간격으로 데이터를 그룹화하는 방식 예로, 1분 단위로 데이터를 그룹화하여 1분 동안의 통계를 계산하거나 집계할 수 있음 Sliding Window 이동하면서 변하는 길이를 가 이동하는 시간 창구로 데이터를 그룹화하는 방식 예로, 10분 길..

컨테이너, 도커, 쿠버네티스

컨테이너 어플리케이션이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술 동작방식: OS 커널을 공유하는 가상화 컨테이너 런타임 컨테이너를 다루는 도구 컨테이너를 쉽게 내려받거나 공유하고 구동할 수 있게 하는 도구 도커 컨테이너를 다루는 도구 중 유명한 것 쿠버네티스 컨테이너 런타임을 통해 컨테이너를 오케스트레이션하는 도구 오케스트레이션: 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위 k3s 경량화 쿠버네티스 배포판 장점: 설치가 쉽고, 시스템 리소스 사용이 적으며 높은 호환성을 가지고 있음 단점: 구조가 단순하여 높은 성능과 안정성을 요구하는 시스템에는 적합하지 않음 랜처 대규모 및 기업용 환경에서도 활용 가능한 다목적 쿠버네티스 관리 플랫폼 장점: 기본적으로 포함되어 있는..

Stream(collect, filter, map)

Stream java에서 데이터 요소들의 시퀀스를 나타내는 인터페이스 함수형 프로그래밍 개념을 기반 데이터를 다루는 작업을 간결하고 효율적으로 표현 collection의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 하는 반복자 병렬 처리(내부 반복자), 순차 처리가 가능함 최종 처리(집계 처리: 반복, 카운팅, 평균, 총합) & 중간 처리(매핑, 필터링, 정렬) * Stream API : 컬렉션, 배열 또는 I/O 자원과 같은 데이터 소스에서 데이터를 처리하고 조작하는 기능 제공 1. collect Stream의 요소들을 수집하여 새로운 컬렉션이나 값으로 변환하는 작업을 수행 collectors 클래스의 정적 메소드들을 사용하여 다양한 종류의 컬렉션을 생성하고 데이터를 수집 ex) toLis..