분류 전체보기 131

DB - partition 수평/수직 분할

데이터베이스 분할(Partitioning)? 데이터베이스 분할은 데이터를 여러 개의 작은 조각으로 나누는 작업으로 이렇게 분할된 데이터들은 데이터 관리 용이성, 성능, 가용성 등의 향상을 위해 사용되며 분할된 각 부분을 '파티션'이라고 부른다.  분할기법 종류 수평 분할 (Horizontal Partitioning)수평 분할은 데이터베이스의 테이블을 행(Row) 단위로 나누는 것을 의미한다.예를 들어, 가상의 "고객 정보"라는 테이블에 각 고객의 이름, 나이, 주소, 이메일 등이 저장되어 있고, 이 "고객 정보" 테이블을 수평 분할하려고 하는 경우지역별로 분할: 고객 정보를 한 지역에 사는 고객들과 다른 지역에 사는 고객들로 나눈다. 예를 들어, 한 테이블은 미국 고객의 정보만을 포함하고, 다른 테이블은..

DB/Postgresql 2024.05.22

Kafka

Kafka ?데이터 인모션 플랫폼움직이는 데이터를 처리하는 플랫폼이벤트 스트리밍 플랫폼Write에 최적화된 시스템 이벤트?비지니스에서 일어나는 모든 데이터(BigData)Spark, Flink, Storm, Hadoop등과 연동하여 사용ex)웹사이트에서의 클릭은행 송금택시의 GPS좌표Realtime Event Stream Processig Fraud Detection,이상 감지 등DB동기화 (MSA 기반의 분리된 DB간 동기화)실시간 ETL kafka 특징이벤트 스트림을 안전하게 전송 publish & Subscribe이벤트 스트림을 디스크에 저장 Write to Disk이벤트 스트림을 분석 및 처리 Processing & Ananlysis 저렴한 장비6대로 초당 2백만 Writes가 가능하다. Kafk..

Kafka 2024.05.21

Linux - TOP command

TOP 명령어top 명령어는 현재 OS의 상태를 나타내주는 CLI 어플리케이션입니다. 메모리 사용량, CPU 사용량 등을 나타내주며 top를 실행하는 동안에는 주기적인 업데이트로 실시간에 근접한 내용을 보여줍니다. 리눅스에서 top 명령어를 실행하면 아래와 깉이 노출됩니다. 위에는 전체의 요약이 있으며 아래에는 각 프로세스마다 구체적인 내용을 포함하고 있습니다.요약 영역요약 영역은 top에서 상단에 위치하고 있습니다. 이 요약영역은 전체 프로세스가 OS에 대해서 리소스를 어느정도 차지하고 있는지를 알려줍니다. 요약 영역에 나타나는 대표적인 값은 시간, 유저, 로드 에버리지(Load Average), 테스크(Tasks), CPU, 메모리(memory)로 아래의 이미지를 보시면 각 영역에 대해 나태내느 값이..

Linux 2024.05.21

Hadoop - HDFS, 네임노드, 데이터 노드, NFS

- 블록 Block한 번에 읽고 쓸 수 있는 데이터의 최대량.기본적으로 128MB블록 크기보다 작은 데이터일 경우, 전체 블록 크기에 해당하는 하위 디스크를 모두 점유하지는 않는다.ex) 1MB크기의 파일을 저장한다면 128MB의 디스크를 사용하는 것이 아니라 1MB의 디스크만 사용한다. - 블록이 큰 이유?탐색 비용을 최소화 하기 위해서이다. 블록이 크면 블록을 탐색하는데 걸리는 시간을 줄일 수 있고 데이터를 전송하는데 더 많은 시간을 할애할 수 있다.디스크에서 한 블록을 읽는데 걸리는 시간은 Seek time + Transfer time(데이터의 시작점을 찾는 시간 + 블록의 크기) 여기서 transfer rate는 디스크의 물리적인 한계가 있으므로 더 빠르게 만들기는 어려우니 블록의 크기를 크게 만..

Hadoop 2024.05.21

Hive , Impala

Hive와 Impala모두 Sql On Hadoop으로 하둡에 저장되어 있는 데이터를 sql를 활용하여 데이터를 분석할 수 있다. ●Hive => 변하지 않는 데이터의 매우 큰 데이터 집합에 대한 배치처리에 적합- Hadoop에 저장된 메타 데이터를 Table Schema 정보와 함께 메타스터오에 등록하여 RDBMS에서와 같이 SQL을 활용하여 사용할 수 있다.- 기존 hadoop의 map-reduce를 활용해 사용하던 방식을 SQL문을 활용 할 수 있도록  facebook에서 개발 후 오픈소스화 함.- Map-Reduce의 모든 기능 지원- Hive Query -> Map-Reduce로 변환되어 실행됨.- Query 파싱, 실행계획 수립, 최적화 과정을 거쳐 map-reduce로 변환하여 처리하므로 응..

Hadoop 2024.05.17

Spark - 데이터 구조 - DataFrame

Spark의 데이터 구조RDD (Resillient Distributed Data)DataframeDatasetDataFrame의 등장DataFrame은 테이블과 유사한 행,열로 구성된 데이터 분산 컬렉션이다.(관계형 데이터 베이스 구조) RDD의 성능이슈- RDD는 메모리나 디스크에 저장 공간이 충분하지 않으면 동작하지 않는다.- RDD는 스키마(DB구조) 개념이 없다.(구조화된 데이터와  비구조화 데이터를 함께 저장하여 효율성↓)- RDD는 기본적으로 직렬화와 Garbage Collection(사용하지 않는 객체를 자동으로 메모리에서 해제)을 사용한다.이는 메모리 오버헤드를 증가시킴.- RDD는 별도의 내장된 최적화(Optimize) 엔진이 없다. 사용자가 각 RDD를 최적화 해야한다. 이러한 RDD..

Spark 2024.05.14

Spark - 데이터 구조 - RDD

Spark의 데이터 구조RDD (Resillient Distributed Data)DataframeDatasetRDD란?Resillient(회복력) : 메모리 내부에 데이터 손실이 있을 경우 파티션을 재연산해 복구함.Distributed(분산) : Spark cluster를 통하여 메모리에 분산되어 저장Data : 파일, 정보즉, 회복력 있는 분산 데이터. RDD는 위 그림과 같은 Lineage(혈통)를 가진다.RDD는 불변의 특성 Read Only을 가지는데,그렇기 때문에 특정 동작을 위해서는 기존 RDD를 변형한 새로운 RDD가 생성될 수 밖에 없다.그래서 위 그림과 같은 수 많은 RDD들이 생성되게 된다.이때 생성되는 연산 순서가 Lineage이다. 특정 동작에 의해 생성되는 RDD Lineage는..

Spark 2024.05.14

Spark 구조

1. Spark application - 실제 작업을 수행하는 역할Dirver - 한 개의 노드에서 실행, 스파크 전체의 main 함수 실행, 어플리케이션 정보의 유지 관리, 익스큐터의 실행 및 실행 분석,배포. 사용자 프로그램(JOB)을 task 단위로 Executor로 전달.Executer - 다수의 worker 노드에서 실행되는 프로세스, Driver가 할당한 task를 수행한다. 블록 매니저를 통해 cahe하는 RDD저장.1개의 Spark application에는 1개의 Driver와 N개의 Executor가 존재한다.Executor는 Cluster Manager에 의하여 해당 어플리케이션에 할당된다.** 서로 다른 스파크 어플리케이션 간의 직접적인 데이터 공유 불가 (별도의 JVM프로세스에서 동..

Spark 2024.05.14