1. Hadoop의 개념과 아키텍쳐 [ Hadoop이란? ] Hadoop은 Reliable, Scalable하게 분산 처리를 하기 위한 오픈 소스 소프트웨어이다. Hadoop은 Map-Reduce라는 단순한 데이터 처리 모델을 사용함으로써 여러 대의 컴퓨터를 통해 손쉽게 대규모 데이터를 처리하고자 한다. 하둡은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장하여 처리한다. (이러한 방식은 Disk I/O에 의해 성능 저하를 유발하며, 추후에 In-Memory 방식으로 처리하는 Spark가 등장하게 되었다.) [ Multi-Layer 구조 ] Hadoop에서 수행하는 역할은 크게 HDFS에 파일을 저장하는 역할과 데이터를 처리하는 역할로 나누어진다. 그..
1. Apache Spark의 개념과 등장 배경 [ Apache Spark의 등장 배경 ] Spark는 MapReduce 형태의 클러스터 컴퓨팅 패러다임의 한계를 극복하고자 등장하게 되었다. MapReduce는 Disk로부터 데이터를 읽은 후, Map을 통해 흩어져 있는 데이터를 Key-Value 형태로 연관성 있는 데이터끼리 묶은 후에, Reduce를 하여 중복된 데이터를 제거하고, 원하는 데이터로 가공하여 다시 Disk에 저장한다. 하지만 이러한 파일 기반의 Disk I/O는 성능이 좋지 못했고, In-memory의 연산을 통해 처리 성능을 향상시키고자 Spark가 등장하게 되었다. [ Apache Spark란? ] Apache Spark는 오픈소스이며, 범용적인 목적을 지닌 분산 클러스터 컴퓨팅 프..
1. Hadoop 1.0의 구조와 YARN의 등장 이유 [ Hadoop 1.0의 구조와 YARN의 등장 ] Hadoop 1.0의 MRV1(MapReduce Version1)는 작업의 처리와 자원의 관리를 한번에 관리하였다. 즉, Single-Master 노드에 해당하는 job Tracker는 자원을 할당하고, 스케줄링 작업도 수행하며 처리중인 작업까지 모니터링을 하였다. 그리고 하위 노드에 해당하는 Task Tracker에 Map and Reduce 작업을 부여하였고, 하위 노드들은 주기적으로 그들의 진행상황을 Job Tracker에 보고하였다. 이러한 MRV1구조는 Task의 규모가 커짐에 따라, 하나 뿐인 Job Tracker에 부하가 걸리며 bottleneck이 발생할 뿐만 아니라 컴퓨터의 자원이 ..
1. 빈(Bean)의 라이프사이클(Life-Cycle) 제어 개발을 진행하면서 애플리케이션을 구동할 때 Service 계층에서 Arcus 캐시로 접근해야 하는 상황이 발생하였다. Arcus 문서에는 서버 종료 시에 shutdown() 함수를 반드시 호출하라고 명시되어 있었다. 이러한 상황에서 어떻게 Bean의 소멸을 처리할 것인지 문제가 발생하였는데, 이를 위해 다음과 같은 가상의 CacheClient를 통해 Bean의 라이프사이클을 제어하는 방법에 대해 알아보고자 한다. @RequiredArgsConstructor public class CacheClient { private final String url; // 생성자 이후 호출되어야 함 public void connect() { System.out...
Spring 프레임워크의 핵심 기술 중 하나가 바로 DI(Dependency Injection, 의존성 주입)이다. Spring 프레임워크와 같은 DI 프레임워크를 이용하면 다양한 의존성 주입을 이용하는 방법이 있는데, 각각의 방법에 대해 알아보도록 하자. 1. 다양한 의존성 주입 방법 [ 1. 생성자 주입(Constructor Injection) ] 생성자 주입(Constructor Injection)은 생성자를 통해 의존 관계를 주입하는 방법이다. @Service public class UserService { private UserRepository userRepository; private MemberService memberService; @Autowired public UserService(U..