전체 글
-
[Nginx] Worker Connections 알아보기Nginx 2024. 2. 4. 07:53
- 목차 들어가며.이번 글에서 Nginx 의 Worker Connections 에 대해서 알아보려고 합니다.Nginx 의 Worker Connections 는 Master Process 와 Worker Process 의 차이점과 역할에 대한 배경 지식이 필요합니다.아래 링크의 컨텐츠를 참고하시면 도움이 될 것 같네요. https://westlife0615.tistory.com/337 [Nginx] Worker Processes 알아보기- 목차 들어가며.Nginx 는 고성능의 Network IO 를 처리하기 위해서 Worker Process 를 사용합니다.구체적으로는 Master Process 와 Worker Process 들로 구성되어 클라이언트의 네트워크 요청을 처리하는데요.Maswestlife0615..
-
[Kafka] Kafka Rebalance Protocol 알아보기 ( JoinGroup, LeaveGroup )Kafka 2024. 2. 4. 07:53
- 목차 Rebalance 란 무엇일까요?먼저 Rabalance 를 어휘적으로 살펴볼려고 합니다.Rebalance 는 Unbalance 인 상태를 해결하는 행위입니다.Partition 과 Consumer 사이의 관계가 Unbalance 상태가 될 수 있습니다.Unbalance 의 원인 제공이 Partition 일 수도 있고, Consumer 일 수도 있겠죠 ?Partition 의 갯수가 늘어나거나, 어떤 Consumer 가 먹통이 될 수 있죠.이러한 경우에 Partition 과 Consumer 사이의 적절한 매칭 관계에 문제가 발생하고 이러한 상태가 Unbalance 상태입니다.그리고 Kafka Broker ( 특히, Group Coordinator ) 는 Unbalance 를 감지하여 Rebalance..
-
[Hadoop] MapReduce Configuration 알아보기Hadoop 2024. 2. 3. 11:32
- 목차 들어가며. 이번 글에서는 Configuration File 을 JVM 데이터로 Deserialization 하는 내용에 대해서 다루어보려고 합니다. 여타 Java Application 은 Resources 하위의 Configuration 파일 내용을 Application 내부에서 사용하곤 합니다. Hadoop 의 MapReduce 에서 org.apache.hadoop.conf.Configuration 의 여러 사용법에 대해서 다루어보도록 하겠습니다. Deserialize Configuration. 먼저 configuration.xml 파일을 작성해보겠습니다. User 데이터를 표현하는 XML 을 구성하였구요. name, age, gender, full-desc 4개의 key-value 로 구성됩..
-
[KinD] KinD Cluster 로 Docker Image 업로드하기 (kind load docker-image)Kubernetes 2024. 2. 3. 09:12
- 목차 들어가며.이번 글에서는 KinD 로 생성된 k8s Cluster 내부로 Docker Image 를 Upload 하는 방법에 대해서 알아보도록 하겠습니다.KinD Cluster 는 Docker Hub 나 Harbor, ECR 등의 원격 이미지 레지스트리가 아닌 로컬에서 테스트 중인 도커이미지를 취급하는 경우가 존재합니다.이 과정에서 KinD 의 image Upload 명령어를 통해서 로컬의 도커 이미지를 KinD Cluster 내부로 업로드할 수 있습니다. KinD Cluster 생성하기.아래 링크는 KinD 로 k8s Cluster 를 실행시키는 방법에 대한 전반적인 설명을 다룹니다.https://westlife0615.tistory.com/407 KinD 알아보기.- 목차 소개. KinD 는 ..
-
[Java NIO] NIO 는 어떻게 동작할까 ? (DMA, Kernel Space)Java/NIO 2024. 1. 31. 06:11
- 목차 들어가며.이번 글에서는 Java NIO 가 어떻게 동작하는지 깊이있게 다루어보려고 합니다.앞으로 Java NIO 와 관련된 글들을 이어서 작성할 예정입니다. DMA Controller.먼저 DMA Controller 에 대해서 알아보도록 하겠습니다.컴퓨터를 아주 단순히 표현하면 아래 그림과 같이 표현될 수 있습니다.CPU 와 Memory 그리고 Disk 로 표현될 수 있습니다.좀 더 나아가서 NIC 같은 네트워크 인터페이스가 추가될 수 있죠. 그래서 Disk 에 존재하는 실행파일은 메모리로 옮겨지고,CPU 는 Memory 로 적재된 실행파일의 코드를 한줄 한줄 실행하며 컴퓨터는 동작합니다.또한 Network Card 를 통해서 유입되는 데이터를 읽어들이고, 다시 데이터를 전송하며 Network ..
-
[Kafka] API Version 알아보기 ( Protocol )Kafka 2024. 1. 31. 06:11
- 목차 들어가며.이번 글에서는 Kafka 에서 클라이언트와 브로커가 통신을 수행하기 위해서 사용되는 API Version 에 대해서 알아보려고 합니다.일반적으로 Broker 의 버전과 API Version 은 동일하게 사용하는 것이 권장됩니다.하지만 API Version 을 명시하지 않아도 Kafka Wire Protocol 상에서 적절한 API Version 을 추론할 수 있습니다.그래서 Kafka Client 모듈을 사용할 때에 API Version 을 명시하지 않아도 Consumer 와 Producer 를 쉽게 사용할 수 있죠. Confluent Version & Kafka Version.아래 페이지는 Confluent 의 버전과 카프카 버전에 대한 정보를 제공합니다.https:..
-
[Hadoop] Secondary NameNode 알아보기Hadoop 2024. 1. 30. 08:08
- 목차 들어가며. 이번 글에서는 Secondary NameNode 에 대해서 알아보는 시간을 가지겠습니다. Hadoop 은 크게 NameNode 와 DataNode 로 구성됩니다. 하나의 파일을 Hadoop 에 저장하게 되면, 파일은 여러 블록들로 나뉘어져 저장됩니다. 이러한 나누어진 블록들은 분산된 DataNode 들에 저장됩니다. 하나의 온전한 파일이 여러 Block 들로 분리되고, 분리된 Block 들은 분산된 DataNode 로 저장됩니다. 이 상황에서 NameNode 는 분산된 Block 들이 어떤 DataNode 에 저장되어 있는지, 파일과 블록의 크기는 어떤지에 대한 메타데이터를 관리하게 됩니다. 그래서 클라이어트가 어떤 파일을 요청하게 되면 NameNode 는 파일의 블록들의 위치 정보를..
-
[RabbitMQ] Exchange 알아보기RabbitMQ 2024. 1. 28. 12:24
- 목차 들어가며.이번 글에서는 RabbitMQ 의 구성요소인 Exchange 에 대해서 알아보려고 합니다.Exchange 는 RabbitMQ Publisher 가 메시지를 전달할 때에 메시지를 적절한 Queue 로 라우팅하는 역할을 담당합니다.우선 RabbitMQ 와 Client 사이의 관계를 간단하게 살펴보도록 하겠습니다.아래 이미지를 보시면 Publisher 와 Broker 사이의 관계가 표현됩니다.Publisher 는 메시지를 RabbitMQ Broker 에게 전달합니다.메지시가 RabbitMQ Broker 로 전달되면, 이제 RabbitMQ Broker 의 내부를 살펴봐야합니다. Broker 내부에는 Message Delivery 를 위한 구성요소인 Exchange, Queue 가 존재합니다..
-
[Spark] Logical Plan 알아보기 1 (Catalyst Optimizer)Spark 2024. 1. 28. 10:32
- 목차 들어가며. 이번 글에서는 SparkSQL API 로 구성된 SQL 쿼리와 DataFrame 의 Transformation 들이 어떠한 방식으로 최적화되는지를 살펴보려고 합니다. SparkSQL API 로 구성한 일련의 코드들은 Action 에 의해서 실행이 될때에 아래와 같은 단계를 거쳐 최적화됩니다. 이 과정에서 큰 역할을 수행하는 구성요소가 바로 Catalyst Optimizer 이구요. Unresolved Logical Plan 부터 Physical Plans 를 생성하는 과정에 관여합니다. 이번 글에서는 Logical Plan 과 관련된 용어들과 최적화 과정에 대해서 이야기해보려고 합니다. JSON, Parquet 파일 생성하기. 먼저 Data Source 로 사용할 JSON, Parqu..
-
[Spark] JDBC DataFrameReader 알아보기 (MySQL)Spark 2024. 1. 28. 07:39
- 목차 들어가며. JDBC Connector 를 활용한 DataFrameReader 에 대한 글을 작성하려고 합니다. Docker 로 MySQL 실행하기. 먼저 Docker 를 활용하여 MySQL 컨테이너를 실행해보도록 하겠습니다. 간단한 실행만으로 실습에 필요한 데이터를 생성할 수 있도록 Command 위주로 작성하겠습니다. Docker Run MySQL. docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0 Docker Exec MySQL Container. docker exec -it mysql sh Create Table. mysql -uroot -p1234; use mysql; create table user..