본문 바로가기

분류 전체보기135

자바 동기화 | Synchronized(Monitor), Atomic Type 동기화란 공유 리소스에 대해 여러 쓰레드의 액세스를 제어하는 기능이다. 상호배제란 하나의 프로세스가 공유 자원을 사용할 때 다른 프로세스가 동일한 공유자원에 접근할 수 없도록 통제하는 것이다. Java에서 제공하는 동기화 방법으로는 1) 개체에 Lock을 걸어 상호배제를 할 수 있는 Synchronized(Monitor)와 2) non-locking 방식인 Atomic Type이 있다. 1. Synchronized Mutex 여러 쓰레드를 실행하는 환경에서 자원에 대한 접근을 통제하기 위한 동기화 기법이다. - Boolean type의 Lock변수를 사용한다. 따라서 1개의 공유자원에 대한 접근을 제한한다. - 공유 자원을 사용중인 쓰레드가 있을 때, 다른 쓰레드가 공유 자원에 접근한다면 Blocking.. 2022. 8. 14.
함수형 프로그래밍이란? 특징? 함수형 프로그래밍 선택 이유 함수형 프로그래밍은 대부분을 순수 함수로 나누어 문제를 해결하는 기법으로 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 한다. 함수형 프로그래밍 언어를 사용하면 코드를 간결하게 작성할 수 있어 개발 시간을 단축할 수 있고, 함수형 프로그래밍 언어가 부작용(Side Effect)를 허용하지 않는 순수 함수(Pure Function)를 지향하여 동시에 여러 스레드에서 문제 없이 동작하는 프로그램을 쉽게 작성할 수 있다. 함수형 프로그래밍 언어의 이해 유명한 책인 클린 코드(Clean Code)의 저자 Robert C.Martin은 함수형 프로그래밍을 대입문이 없는 프로그래밍이라고 정의했다. * 대입문 : int a = 10; 함수형 프로그래밍은 대.. 2022. 8. 13.
Message Queue | Message Broker와 pubsub 차이 What is the message queue? 메시지 큐(Message Queue)는 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중의 하나로, 메시지 지향 미들웨어(Message Oriented Middleware:MOM)를 구현한 시스템을 의미한다. 메시지 지향 미들웨어란 비동기 메시지를 사용하는 응용 프로그램들 사이에서 데이터를 송수신하는 것을 의미한다. 메시지는 처리되고 삭제되기 전까지 대기열에 저장되며, 각 메시지는 하나의 소비자가 한 번만 처리한다. MessageQueue를 사용하면 서로 다른 시스템 간에 비동기식으로 작업을 처리할 수 있습니다. MQ는 메시지를 임시로 저장하는 간단한 버퍼를 제공하고, 메시지를 전송 및 수신하기 위해 소프트웨어 구성 요소가 대기열에 연.. 2022. 8. 13.
MapReduce vs Spark | 맵리듀스와 스파크의 차이점 위 그림에서 볼 수 있듯이 기존 MapReduce 엔진(왼쪽)에 비해 최신 처리 프레임워크(Tez, Impala 및 Spark)의 주요 특징은 HDFS에 중간 결과를 쓰지 않고 실행 그래프를 최적화한다는 것입니다. 또 실행 그래프 전체에 걸쳐 로컬 노드의 메모리에서 데이터를 처리/캐싱합니다.. 실제로 Hadoop MapReduce와 Spark의 주요 차이점은 처리 방식에 있습니다. Spark는 메모리 내에서 처리할 수 있지만 Hadoop MapReduce는 디스크에서 읽고 써야 합니다. 이에 따라 처리 속도가 크게 달라지며 Spark가 최대 100배 더 빠를 수 있습니다. 하지만 Hadoop MapReduce는 Spark보다 훨씬 큰 데이터셋을 작업할 수 있습니다. * 참고: Tez Apache Tez는.. 2022. 8. 13.
Spark RDD, DAG란? Apache Spark는 빅 데이터 워크로드에 주로 사용되는 오픈 소스 분산 처리 시스템이다. Apache Spark는 빠른 성능을 위해 인 메모리 캐싱과 최적화된 실행을 사용하며, 일반 배치 처리, 스트리밍 분석, 기계 학습, 그래프 데이터베이스 및 임시 쿼리를 지원한다. MapReduce는 데이터의 중간 과정을 HDFS에 저장하기 때문에 오버헤드가 발생한다. Spark는 이러한 문제점을 In-Memory 처리로 해결할 수 있다. 하지만 메모리 특성상 중간에 오류가 나면 데이터가 모두 사라지게되어 처음부터 다시 연산해야 하는 단점이 생긴다. Spark는 메모리에서 데이터가 유실되면 RDD의 Lineage 기록에 따라 유실되었던 RDD를 다시 생성한다. 이 내용은 뒤에서 다시 한번 언급된다. Apache.. 2022. 8. 12.
Data Lifecycle Management(DLM) 란? Data Lifecycle Management(DLM)는 데이터가 시작되는 시점부터 소멸(destruction)되는 시점까지 전체 수명 주기 동안 거치는 여러 단계로 정의할 수 있다. 데이터 수명 주기의 각 단계는 데이터 보호(data protection), 복원력(resiliency) 및 규정 준수(regulatory compliance)를 제어하는 다양한 정책 집합을 통해 제어된다. 데이터 생명 주기의 여러 단계 데이터는 수명 주기 동안 5가지 단계를 거친다. 각 단계는 데이터의 목적과 가치, 그리고 데이터가 누구에게 가치가 있는지를 중심으로 진행된다. 각 단계에 영향을 미치는 기타 요소에는 데이터 개인 정보 보호, 데이터 보안 및 데이터 규정 준수가 있다. 1. Generate & Collect (.. 2022. 8. 11.
반응형