⭐ Programming 40

ZGC: Z Garbage Collector

ZGC란?: JVM 에서 사용하는 최신 GC 중 하나로, Java 11에서 처음 도입 + JDK 15부터 환경 적용 주요 특징초저지연(Very Low Latency)GC로 인한 애플리케이션 정지 시간(Stop-The-World pause)을 1~10ms 미만으로 굉장히 짧게 유지대용량 힙 지원테라바이트 단위의 대규모 힙 메모리도 효율적으로 관리할 수 있음Auto-tuning복잡한 GC 파라미터를 자동으로 최적화해 개발자가 별도 튜닝 없이도 안정적인 성능을 얻을 수 있음메모리 Compaction 동시 지원메모리 단편화를 방지하기 위해 객체를 이동동시/병렬 처리(Concurrent/Parallel)여러 스레드가 병렬로 처리하며, 거의 모든 GC 단계를 애플리케이션 스레드와 동시에 수행Colored Point..

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..

Chapter 3. Flink Architecture

분산 시스템 구성분산 데이터 스트림 처리에 중점클러스터 리소스 관리자와 통합되어 작동하거나 독립된 클러스터로 실행분산 스토리지를 제공하지 않고, HDFS나 객체 저장소 등의 외부 저장소를 활용작업 제어, 리소스 관리, 작업 실행 등의 역할이 분담되어 작동 구성 요소JVM에서 실행잡매니저마스터 프로세스 -> 단일 애플리케이션 실행을 제어ExecutionGraph(JobGraph를 병롤로 실행할 수 있는 작업으로 구성된 물리적 데이터 흐름 그래프)로 변환TaskManager Slot(리소스)를 리소스 매니저에게 요청 -> 충분하게 slot을 받으면 실행 그래프 실행하는 잡매니저에게 배포실행 중: 체크포인트 조정 등 중앙 조정 작업 담당 리소스 매니저다른 환경과 리소 공급자를 위함(YARN, Kubernete..

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분 길..

가상화 종류(하이퍼바이저, 호스트, 컨테이너)

1. 하이퍼바이저 VMM (Virtual Machine Manager) 가상화 머신 매니저, 가상화 머신 모니터 Host Computer 위에 여러 대의 가상머신을 올려 Guest OS를 동시 실행하는 논리적 플랫폼 EX) XEN, KVM 등 1-1. 전가상화 하드웨어 위에 OS가 아닌 하이퍼바이저가 있는 구조로 이루어지는 가상화 하이퍼바이저가 직접 하드웨어를 제어할 수 있어 오버헤드가 적음 1-2. 반가상화 OS 위에 하이퍼바이저를 설치한 가상화 OS위에 하이퍼바이저가 구동되고 있기 때문에 오버헤드가 큼 VM들이 하드웨어의 일부 자원을 사용할 수 있음 Guest OS의 커널 일부분을 수정해줘야 함 2. 호스트 기반 가상화 Host OS 위에 가상화 소프트웨어를 통해 Guest OS가 구동되는 방식 OS..