전체 글 1383

[AWS RDS MySQL] RDS MySQL와 Aurora MySQL 차이점

[AWS RDS MySQL] RDS MySQL와 Aurora MySQL 차이점 l Version : AWS에서 관리형 관계형 데이터베이스를 보면 RDS MySQL과 Aurora MySQL이 있다. 이 두 서비스의 차이점은 무엇일까? 결론부터 말하면 기존의 MySQL 소스를 기반으로 AWS 에서 커스터마이징 하여 만든 것이 Aurora이며 두 서비스는 스토리지 메커니즘이 다르다. AWS RDS MySQL RDS 플랫폼은 기존 데이터베이스 아키텍처를 중심으로 완전히 관리되는 추상화 계층을 제공한다. RDS 내에서 데이터베이스 플랫폼은 EC2에서 수동으로 수행하는 것처럼 구축된다. EC2인스턴스는 적절한 Amazon Machine Image (AMI)에서 프로비저닝 되고, EBS(Elastic Block St..

AWS 2022.03.18

[AWS RDS MySQL] InnoDB cache warming

[AWS RDS MySQL] InnoDB cache warming - 버퍼풀 정보를 저장하고 시작시 로드하여 워밍업 단계 생략하기 l Version : AWS RDS MySQL 5.6 later InnoDB cache warming(캐시워밍)은 DB 인스턴스가 종료될 때 버퍼 풀의 현재 상태를 저장한 다음 DB 인스턴스가 시작될 때 저장된 버퍼 풀 정보를 다시 로드하여 MySQL DB 인스턴스에 대한 성능 향상을 제공할 수 있다. 이 뜻은 정상적인 데이터베이스 사용에서 버퍼풀의 워밍업 할 필요를 무시하고 대신 알려진 공통 쿼리에 대한 페이지로 버퍼풀을 미리 로드한다. 버퍼풀 정보를 저장하는 파일은 페이지 자체가 아니라 버퍼풀에 있는 페이지에 대한 메타데이터만 저장한다. 따라서 결과적으로 파일에 많은 저장..

AWS 2022.03.17

Hive 데이터 입력시 노드당 처리 파티션 개수 초과 오류

Hive 데이터 입력시 노드당 처리 파티션 개수 초과 오류 · Version : Hive 파티셔닝된Hive 테이블에 데이터 입력시 아래와 같은 오류가 발생하였다. 오류 메시지를 살펴보면 노드당 최대 동적 파티션 개수보다 더 많은 수의 동적 파티션이 생성되어 발생한 오류이다. Error: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {“col_1”:25513237,“col_2”:8104666,“col_3”:3808,“col_4”:6705,“col_4”:“2016-01-21 08:31:33",“col_6”:42,“col_7”:“471.00”,“..

Kubernetes 장점

Kubernetes 장점 · Version : 쿠버네티스(Kubernetes) 환경에서는 컨테이너에 애플리케이션에 필요한 모든 항목이 포함되어 있기 때문에 시스템 관리자가 애플리케이션을 실행하기 위해 아무것도 설치할 필요가 없다. · 애플리케이션 배포 단순화 : 쿠버네티스는 모든 워커 노드를 단일 플랫폼으로 제공하므로 애플리케이션 개발자는 자체적으로 배포할 수 있으며 클러스터를 구성하는 서버에 대해서 알 필요가 없다. 특히 특정 컨테이너가 SSD에서만 실행되거나 또는 HDD에서만 실행되어야 하는 경우처럼 특정 리소스가 필요한 경우 쿠버네티스 노드에서 필요한 리소스가 있는 노드를 선택해서 배포할 수 있다. · 효율적인 하드웨어 활용 : 쿠버네티스환경에서 애플리케이션을 배포,실행하면 애플리케이션 리소스 요구..

Kubernetes 마스터 노드, 워커 노드

Kubernetes 마스터 노드, 워커 노드 · Version : 쿠버네티스(Kubernetes) 클러스터에서 마스터 노드는 전체 쿠버네티스 시스템을 관리하고 통제하는 쿠버네티스 컨트롤 플레인을 관장한다. 워커 노드는 실제 배포하고자 하는 애플리케이션 실행을 담당한다. 마스터 노드(컨트롤 플레인)에서는 클러스터를 관리하고 클러스터의 기능을 실행한다. 단일 마스터 노드에서 실행하거나 여러 노드로 분할 및 복제되어 고가용성을 보장할 수 있는 여러 구성요소로 구성 될 수 있다. · API Server : 사용자와 컨트롤 플레인과 통신하는 쿠버네티스 API · Scheduler : 애플리케이션을 예약하는 스케줄러로, 배포 가능한 각 구성 요서에 워커 노드 할당을 담당 · Control Manager : 구성 요..

MySQL Master DB를 백업하여 Replication Slave DB 구성하기

MySQL Master DB를 백업하여 Replication Slave DB 구성하기 · Version : MySQL 5.7.5 Later MySQL DB를 처음 구축할때 마스터DB와 슬레이브DB를 구성하는것이 아니라면 반드시 마스터 DB의 데이터를 백업하여 슬레이브DB를 구성 하여야 한다. 이때 특정 시점까지 (Point in Time)의 마스터 DB를 백업하면, 백업파일에는 백업이 완료된 시점의 바이너리 로그파일과 포지션 정보가 기록된다. 슬레이브DB에서는 마스터DB 백업 파일 이후로 발생된 데이터 변경사항을 전달받아 레플리케이션 한다. InnoDB 스토리지 엔진은 트랜잭션을 지원하므로 특정 시점까지 백업한 후 백업 시점의 마지막 바이너리 로그 파일과 로그 포지션 정보로 마스터 DB와 슬레이브 DB를..

MySQL, MariaDB 2021.05.29

Split Brain

Split Brain 스플릿 브레인 (Split Brain)은 클러스터로 구성된 두 시스템간의 네트워크가 일시적으로 동시에 단절되거나 기타 시스템상의 이유로, 클러스터 상의 모든 노드들이 각자 자신이 Primary라고 인식하게 되는 상황을 뜻한다. 관제 시스템에 의해 하트비트(Heartbeat)등으로 Alive 유무가 체크되는 서비스가 있다고 가정했을때, 하트비트 통신이 단절되어 서비스 클러스터가 장애 상태라고 인식하고 서비스를 동시에 구동하는 경우, 또는 독립적인 두 개의 시스템이 비정상적으로 구성되어 서로가 Primary라고 믿게되는 현상을 모두 포함한다. 스플릿 브레인 현상이 발생하면, 각 노드가 동시에 Primary가 되면서 이중 가동 현상이 발생한다. 이렇게 이중으로 가동되면서 각 노드들은 동시..

B-tree vs Log-Structured Merge-Tree

B-tree vs Log-Structured Merge-Tree 데이터베이스에서 일반적으로 많이 사용되는 데이터 구조는 B-Tree와 LSM(Log-Structured Merged-Tree)이다. B-Tree B-Tree는 데이터베이스에 널리사용되며, B-Tree 인덱싱 구조를 사용하면 데이터가 고정 크기 페이지 세그먼트로 디스크에 기록된다. 이러한 페이지 세그먼트의 크기느 약4KB (DMBS마다 다를 수 있음) 이며 키별로 정렬된 Key-Value를 가지고 있다. 단일 B-Tree노드는 페이지 범위에 대한 참조가 있는 배열과 같다. 배열의 최대 참조 수를 “branching factor” 한다. 각 페이지 범위는 다른 페이지 범위를 참조하는 또 다른 B-Tree 노드이다. 결국 리프수준에서 단일 페이지..

Python Multiprocessing(Process)을 사용한 데이터 처리 속도 개선

Python Multiprocessing(Process)을 사용한 데이터 처리 속도 개선 · Version : MAC OS, Python 3.X, PIP3 대용량 데이터를 효율적으로 처리하기 위해서는 병렬 처리를 활용하는것이 좋다. 파이썬에서 병렬처리를 제공하는 대표적인 라이브러리는 Threading과 Multiprocessing 모듈이다. Threading 모들은 파이썬의 GIL(Global Interpreter Lock)라는불리우는 잠금 모델을 사용하기 때문에I/O 작업이 아닌 CPU 작업이 많을 경우 오히려 성능이 저하된다. 이 방식은 Lock을 풀고 스레드를 교환하고 다시 Lock을 거는 형태의 멀티스레드이기 떄문이다. 파이썬에서는 Multiprocessing 를 권장하고 있으며, 이 모듈에는 대..

Python Multiprocessing(Pool)을 사용한 데이터 처리 속도 개선

Python Multiprocessing(Pool)을 사용한 데이터 처리 속도 개선 · Version : MAC OS, Python 3.X, PIP3 대용량 데이터를 효율적으로 처리하기 위해서는 병렬 처리를 활용하는것이 좋다. 대부분의 머신러닝/딥러닝에 사용되는 프레임워크들은 함수 내부에서 병렬처리가 가능하도록 설계되어 있기 때문에 시스템의 자원을 효율적으로 사용하지만, 일반적으로 많이 사용되는 데이터 가공 모듈인 pandas와 같은 모듈은 병렬처리를 기본적으로 제공하지 않기 떄분에 별도의 병렬처리가 가능하도록 코딩을 해야한다. 파이썬에서 병렬처리를 제공하는 대표적인 라이브러리는 Threading과 Multiprocessing 모듈이다. Threading 모들은 파이썬의 GIL(Global Interpr..