기술 탐구

개요 Redis는 메모리 기반의 키-값 저장소로 유명하며, 뛰어난 성능을 자랑한다. 이러한 높은 성능의 비결 중 하나는 I/O 멀티플렉싱(IO Multiplexing)을 활용한 싱글 스레드 이벤트 루프 구조에 있다. 특히 리눅스에서 Redis는 epoll이라는 고성능 I/O 이벤트 통지 메커니즘을 사용해 수많은 클라이언트 연결을 효율적으로 다룬다. epoll은 기존의 select(2)나 poll(2) 호출과 달리 커널 내부에서 관심있는 파일 디스크립터들을 관리하며, 이를 위해 레드-블랙 트리(Red-Black Tree) 기반의 자료 구조를 활용한다. 본 글에서는 커널 레벨에서 epoll이 어떻게 동작하고 select/poll 대비 무엇이 다른지, epoll 구현에 쓰이는 레드-블랙 트리가 I/O 성능에 ..
개요Docker에서 네트워크는 컨테이너 간 통신과 외부 서비스 연동에 매우 중요한 역할을 한다. 컨테이너 기술은 프로세스를 격리하여 실행하지만, 대부분의 실제 애플리케이션은 데이터베이스나 웹 등 다른 서비스와 통신해야 한다. 따라서 Docker에서 네트워킹을 잘 이해하면 컨테이너끼리 연결하고, 호스트 또는 외부와 안전하게 소통하며, 필요한 경우 특정 네트워크 환경을 구성할 수 있다.이 글에서는 Docker의 네트워크 관련 핵심 개념들을 정리해보자. 먼저 컨테이너를 실행할 때 설정할 수 있는 네 가지 네트워크 모드인 bridge, host, none, container: 모드를 알아보고 각각 언제 사용하는지 살펴볼 것이다. 이어서 Docker 네트워크를 사용자가 정의해서 만드는 방법과 종류(예: bridg..
개요스파크 동작의 원리를 Jupyter Notebook 환경에서 실습하고, Spark UI를 통해 내부 처리 과정을 살펴보는 방법을 정리한다.  Jupyter Notebook 환경에서 Spark 설정하기 Spark 설치로컬 환경 혹은 도커 환경에서 Spark를 설치한다.설치 후, spark-submit, pyspark 등의 명령이 정상 동작하는지 확인한다.Jupyter Notebook 설치 및 실행pip install jupyter (또는 pip3 install jupyter)터미널에서 jupyter notebook 명령 실행브라우저가 자동으로 열리거나, http://localhost:8888 주소로 접속한다.PySpark를 Notebook에서 사용노트북 셀에서 from pyspark.sql import..
개요스파크는 대규모 데이터를 빠르게 처리하기 위해 분산 처리 메커니즘을 갖춘 프레임워크이다. 스파크가 동작하는 원리를 이해하려면 Driver, Executor, Cluster Manager, 그리고 RDD, DAG, Job, Stage, Task 등 핵심 요소들을 살펴보아야 한다. 내용전체적인 아키텍처(Driver, Executor, Cluster Manager)Driver(드라이버) 는 사용자가 작성한 코드를 해석하고, 분산 작업을 지시·관리하는 주체이다.Executor(실행기) 는 Driver로부터 전달받은 작업을 실제로 수행하는 프로세스이며, 각 노드(Worker)마다 여러 Executor가 존재한다.Cluster Manager(클러스터 매니저) 는 Spark Standalone, YARN, Mes..
지혜와 본질을 추구하는 자
'기술 탐구' 카테고리의 글 목록