본문 바로가기
반응형

Server-side 개발 & 트러블 슈팅69

[ZooKeeper] 주키퍼 기반 리더 선출 알고리즘 구현 Zookeeper 기반 리더 선출 알고리즘 구현이번 글에서는 Zookeeper를 활용한 리더 선출 알고리즘 구현, Jar 패키징 후 실행 할 예정이고,다음 실습에서  장애 감지 및 군집 효과(Herd Effect) 대응 전략과 재선출 알고리즘을 설명하겠습니다.리더 선출 알고리즘 구현Zookeeper는 분산 시스템의 코디네이터 역할을 수행할 수 있도록 강력한 API를 제공합니다. 그 중 하나가 리더 선출 메커니즘입니다. 핵심은 다음과 같습니다:각 클러스터 노드는 Zookeeper에 /election이라는 부모 노드 아래에 EPHEMERAL_SEQUENTIAL 모드의 자식 노드를 등록합니다.Zookeeper는 이 자식 노드들에 대해 고유한 순번을 부여합니다.노드 중 가장 작은 번호를 가진 노드가 리더가 됩니.. 2025. 4. 12.
[ZooKeeper] 주키퍼 클라이언트 스레딩 모델과 Java API 연결하기 이번 글에서는 Zookeeper의 클라이언트 스레딩 모델에 대해 자세히 알아보고, Java API를 활용하여 Zookeeper와 연결하는 방법까지 단계별로 소개하겠습니다. 이 글을 읽는 독자는 Gradle 기반 프로젝트를 기준으로 따라 할 수 있습니다.Zookeeper 클라이언트 스레딩 모델Zookeeper 클라이언트를 생성하면 내부적으로 2개의 추가 스레드가 자동 생성됩니다.1. IO 스레드네트워크 통신 처리 담당Zookeeper 서버와의 세션 유지, 요청 및 응답 처리, 세션 타임아웃 관리 등 수행사용자 코드와 직접 상호작용하지 않음2. 이벤트 스레드서버와의 연결 및 해제 등 상태 변화 이벤트 처리사용자가 등록한 Watcher 트리거 관리이벤트는 발생 순서대로 하나씩 처리됨즉, Zookeeper는 이.. 2025. 4. 12.
[ZooKeeper] 주키퍼 설치 및 설정 가이드 (Mac OS, Windows, Linux) ZooKeeper 설치 및 설정 가이드 분산 시스템을 설계하고 실습하기 위해 Apache ZooKeeper를 로컬에 설치하는 방법을 운영체제별로 정리했습니다.ZooKeeper는 리더 선출 알고리즘을 포함한 다양한 분산 알고리즘을 실습하는 데 핵심적인 도구입니다. 필자는 Mac OS 환경에서 설치했습니다.  ZooKeeper란? ZooKeeper는 분산 시스템에서 노드 간의 일관성과 조율을 담당하는 오픈소스 분산 코디네이터이다. Apache Kafka, Hadoop, HBase 등의 프로젝트에서 기본적으로 사용된다. ZooKeeper는 다음과 같은 기능을 제공한다: 리더 선출서비스 레지스트리 및 디스커버리상태 감시 및 고장 감지분산 락(Distributed Lock)파일 시스템처럼 동작하는 트리형 데이터 .. 2025. 4. 12.
[ZooKeeper] 코디네이터(Coordinator)개념과 주키퍼 소개 분산 시스템의 조율자, 코디네이터와 주키퍼(ZooKeeper) 대규모 데이터를 처리하거나 복잡한 연산을 요구하는 시스템에서는 하나의 서버로 모든 작업을 처리하는 것이 비효율적이다. 이를 해결하기 위해 분산 시스템이 사용된다. 여러 대의 서버가 협업해 작업을 처리하며, 그 안에서 역할을 배분하고 상태를 감지하며, 실패가 발생했을 때 적절히 대응하는 기능이 중요해진다. 이 모든 작업을 조율하는 역할을 맡는 것이 바로 코디네이터(Coordinator)이다.  코디네이터란? 코디네이터는 분산된 여러 노드 간의 상태를 관리하고, 특정 노드를 리더로 선출하거나, 노드 간 통신을 중재하는 핵심적인 역할을 담당한다. 이를 통해 노드들이 충돌 없이 하나의 시스템처럼 동작할 수 있게 만든다. 하지만 직접 이러한 코디네이터.. 2025. 4. 12.
[Hadoop] 하둡 MapReduce 1.0 아키텍처와 동작 원리와 MapReduce 2.0의 개선 구조 Hadoop 1.0에서 2.0으로의 진화: 구조, 한계, 그리고 개선 전략Hadoop은 대규모 데이터를 효율적으로 저장하고 처리할 수 있는 분산 시스템의 대표적인 오픈소스 프레임워크다. 그 중 Hadoop MapReduce 1.0은 단순하고 일관된 구조를 바탕으로 초기 빅데이터 생태계를 선도했지만, 대규모 클러스터 환경에서의 확장성과 안정성의 한계를 드러냈다.이 글에서는 먼저 Hadoop 1.0의 아키텍처와 내부 구성요소, 전체 동작 흐름을 세부적으로 살펴본다. 이후 1.0의 근본적인 약점을 어떻게 파악하고 해결하고자 했는지, 그리고 Hadoop 2.0(YARN 기반)으로의 전환이 어떤 배경에서 이루어졌는지를 구조적 비교와 전략적 전환 관점에서 분석한다. 이 글의 구성Hadoop 1.0 아키텍처 해부Jo.. 2025. 4. 9.
[Hadoop] 하둡 MapReduce 동작 원리 MapReduce 프로그래밍 모델 상세 설명하둡의 MapReduce 프로그래밍 모델은 대용량 데이터를 병렬 처리하기 위한 함수 기반 처리 구조를 따르며, 두 가지 핵심 함수로 구성된다.1. Map FunctionInput: (Key, Value) 형태로 입력을 받음예: (Line Number, 문장 내용)Output: List of (Key, Value) 형태로 출력예: "the quick brown fox" → ("the", 1), ("quick", 1), ("brown", 1), ("fox", 1) Map 함수는 주어진 데이터를 원하는 형태로 전처리하는 역할을 한다.2. Reduce FunctionInput: (Key, List) 형태로 입력을 받음예: ("the", [1,1,1,1])Output: .. 2025. 4. 9.
[minikube] 쿠버네티스 서비스(Service) 구조와 실행 Kubernetes에서 Service란? – Pod를 외부로 노출하는 방법앞선 강의에서는 Kubernetes 클러스터 안에 첫 번째 Pod를 만들어보고, 그 안에 웹 애플리케이션 컨테이너를 배포했습니다. 하지만 그 상태에서는 웹 브라우저로 아무리 접근해도 연결되지 않았습니다. 왜 그럴까요?그 이유는 Pod는 기본적으로 외부에서 접근할 수 없도록 설계되어 있기 때문입니다. 이 제한을 해결하기 위해 Kubernetes는 Service라는 리소스를 제공합니다.왜 Service가 필요한가?Kubernetes에서 Pod는 수명이 짧고 가볍게 쓰고 버리는 존재입니다. 특정 Pod가 중단되면, Kubernetes는 새롭게 동일한 Pod를 생성합니다. 이 과정에서 IP 주소도 바뀌게 됩니다. 이렇게 계속 바뀌는 Pod.. 2025. 4. 8.