Tools 42

Spark RDD 연산 주요 개념

RDD 연산 RDD는 두 종류의 연산을 지원합니다: Transformations: 원본 RDD를 변형하여 새로운 RDD를 생성하는 연산입니다. 예를 들어, map, filter, flatMap, union, distinct 등이 있습니다. Transformations는 지연 계산(lazy evaluation) 방식을 사용합니다. 즉, 실제 연산은 액션이 호출될 때까지 실행되지 않습니다. Actions: RDD에 저장된 데이터에 대해 연산을 수행하고 결과를 반환하는 연산입니다. 예를 들어, count, collect, reduce, take 등이 있습니다. 액션 연산은 즉시 실행되며, 결과는 Spark 드라이버 프로그램으로 반환됩니다. Lazy Evaluation Apache Spark의 "Lazy Eva..

Tools/Spark 2024.03.11

RDD의 생성과 데이터 처리

[ 목차 ] RDD(Resilient Distributed Dataset)는 Apache Spark의 핵심 개념 중 하나로, 불변성을 가지며 분산된 데이터 컬렉션을 나타냅니다. RDD는 데이터를 메모리에서 효율적으로 처리하고, 병렬로 연산을 수행할 수 있도록 설계되었습니다. 이는 Spark가 대규모 데이터를 빠르게 처리할 수 있는 주요 이유 중 하나입니다. RDD의 주요 특징 불변성(Immutability): 한 번 생성된 RDD는 변경될 수 없습니다. 데이터를 변형하려면, 변형 연산을 적용하여 새로운 RDD를 생성해야 합니다. 복원력(Resilience): RDD는 고장 내성을 가지고 있으며, 데이터 손실 시 원본 데이터로부터 자동으로 복구될 수 있습니다. 이는 RDD의 lineage(계보) 정보를 통..

Tools/Spark 2024.03.11

스파크 클러스터 동작방식

yarn에 대한 설명 : https://chalchichi.tistory.com/79 애플리케이션 컴포넌트 Application: Spark에서 구동되는 사용자 정의 프로그램으로, 데이터 처리를 위해 클러스터 상의 드라이버 프로그램과 실행기(Executors)로 구성됩니다. Driver program: 애플리케이션의 진입점으로, main() 함수를 실행하고 데이터 처리 작업을 관리하는 SparkContext를 생성합니다. Cluster manager: 클러스터 상에서 리소스(예: 메모리, CPU 등)를 관리하고 할당하는 역할을 하는 외부 서비스입니다. 예로는 Apache Mesos, Hadoop YARN, Kubernetes, Spark 자체의 독립 실행 모드(Standalone) 등이 있습니다. Dep..

Tools/Spark 2024.03.07

Spark 클러스터 환경 구성과 실행

스파크의 실행 모드 로컬 모드 (Local Mode) 설명: Spark 로컬 모드는 단일 기계에서 Spark 애플리케이션을 실행하기 위한 모드입니다. 개발이나 테스트 목적으로 주로 사용되며, 클러스터 환경이 필요 없습니다. 사용 케이스: 소규모 데이터셋 처리, 코드 테스트, 알고리즘 개발 등. 설정: Spark를 설치한 후, Spark 애플리케이션을 실행할 때 마스터 URL로 local 또는 local[*]을 사용하여 로컬 모드로 실행할 수 있습니다. 여기서 [*]는 사용 가능한 모든 코어를 사용하겠다는 의미입니다. # Spark Shell을 로컬 모드로 시작 $ ./bin/spark-shell --master local[4] 독립 실행형 모드 (Standalone Mode) 설명: Spark의 독립 실..

Tools/Spark 2024.02.19

빅데이터, 하둡 및 Spark 소개

하둡의 간단한 소개 하둡은 데이터 지역성이라는 개념에 바탕을 둔 데이터 저장 및 처리 플랫폼이다. 데이터 지역성은 요청한 데이터를 원격 처리 시스템이나 호스트로 보내 처리하는 기존의 방식 대신 데이터가 있는 곳으로 이동해서 계산하는 데이터 처리 방식을 말한다. 즉 클러스터를 구성하는 각 클러스터 노드에서 데이터를 보관 , 처리한 결과를 종합하여 원하는 결과를 취하는 방식이다. 하둡은 데이터를 분산 , 처리 하기 위하여 HDFS , YARN 이라는 아키텍쳐를 구성하고 있다. 하둡의 기본 구성요소 : https://chalchichi.tistory.com/77\ Hadoop 컴퓨팅과 클러스터 DFS 하둡의 분산 파일 시스템(Distributed File System, DFS)은 하둡 에코시스템의 핵심 구성 ..

Tools/Spark 2024.02.18

Apache Spark 설정 및 튜닝

Spark 메모리 사용 예시 매개변수설명 spark.memory.fraction (기본값 0.75) 실행 및 저장에 사용되는 힙 공간의 비율입니다. 이 값이 낮을수록 유출 및 캐시된 데이터 제거가 더 자주 발생합니다. 이 구성의 목적은 내부 메타데이터, 사용자 데이터 구조 및 희소하고 비정상적으로 큰 레코드의 경우 부정확한 크기 추정을 위한 메모리를 따로 확보하는 것입니다. spark.memory.storageFraction (기본값 0.5) spark.memory.fraction 에 의해 따로 설정된 공간 내 저장 영역의 크기입니다 . 캐시된 데이터는 총 스토리지가 이 영역을 초과하는 경우에만 제거될 수 있습니다. 1. spark.excutor.memory 프로퍼티에 4GB 설정된 상황(4096) 2...

Tools/Spark 2023.10.17

하둡 클러스터와 리소스 할당

- 특정 상황에서 데이터 분석가들에게 대부분의 리소스가 할당되어 SLA(서비스 수준 협약)을 준수 하지 못하는 경우가 있다. - 데이터 엔지니어링 측면에서 중요한 잡들이 동작함과 동시에 데이터 분석에 필요한 리소스를 제공할 수있어야 한다. Capacity 스케줄러 - https://blog.cloudera.com/yarn-capacity-scheduler/ capacity 및 계층적 설계 YARN은 현재 메모리 및/또는 코어에 대해 예약하는 리소스에 대한 최소 할당과 최대 할당을 정의합니다. YARN용 작업자를 실행하는 각 서버에는 예약에 사용할 수 있는 메모리 및/또는 코어가 될 수 있는 리소스 할당을 제공하는 NodeManager가 있습니다. 모든 노드 관리자의 리소스 집합은 capacity 스케줄러..

Tools/Hadoop 2023.09.26

하둡 네임노드와 HDFS

네임노드와 HDFS의 관계 네임노드와 데이터 노드 등록: 데이터 노드가 클러스터에 가입하려면 네임노드에 자신의 존재를 등록해야 합니다. 데이터 노드는 주기적으로 네임노드에 하트비트 신호를 보내어 자신의 상태를 알립니다. 블록 리포트: 데이터 노드는 자신이 저장하고 있는 데이터 블록의 목록을 네임노드에 보고합니다. 이 정보는 네임노드의 메모리에 저장되어 파일 시스템의 메타데이터를 관리하는 데 사용됩니다. 블록 읽기 및 쓰기 요청: 클라이언트가 데이터를 읽거나 쓰려면 먼저 네임노드에게 해당 데이터 블록의 위치 정보를 요청합니다. 네임노드는 클라이언트에게 데이터 블록의 데이터 노드 위치 정보를 제공합니다. 데이터 노드 간 직접 통신: 클라이언트가 데이터를 읽거나 쓸 때, 실제 데이터는 데이터 노드 간 직접 통..

Tools/Hadoop 2023.09.11

Spark와 RDD

RDD, DataFrame,DataSet Resilient Distributed Dataset (RDD)는 Apache Spark에서 데이터 처리를 위한 기본 추상화입니다. Spark는 대규모 데이터 처리를 위한 분산 컴퓨팅 프레임워크로, RDD는 이를 구성하는 핵심 개념 중 하나입니다. RDD는 데이터의 불변성과 분할 가능성을 결합하여 데이터 처리를 효율적으로 수행할 수 있도록 돕습니다. 다음은 RDD에 대한 주요 특징과 개념입니다: 불변성 (Immutability): RDD는 한 번 생성되면 변경할 수 없습니다. 즉, 데이터는 읽기 전용이며 수정이 불가능합니다. 이로써 데이터의 안정성과 일관성을 보장합니다. 분할 가능성 (Partitioning): RDD는 논리적으로 분할된 여러 개의 파티션으로 구성..

Tools/Spark 2023.08.18

Kubernetes PV & PVC

볼륨 (Volume): Kubernetes에서 볼륨은 컨테이너 내부와 외부 간의 데이터를 공유하기 위한 방법입니다. 볼륨은 컨테이너의 파일 시스템과 독립적으로 존재하며, 컨테이너가 종료되더라도 데이터가 보존됩니다. 예를 들어, 컨테이너 내부에서 생성한 데이터를 다른 컨테이너에서 사용하거나 호스트 시스템의 파일 시스템에 접근할 때 볼륨을 사용할 수 있습니다. 볼륨은 컨테이너에 지속적인 데이터 저장을 제공하지만, 볼륨 자체는 별도의 수명 주기나 관리를 가지지 않습니다. - 호스트 볼륨/nfs/iSCI/Ceph - 컨테이너와 별개의 리소스 영역 , 노드의 스토리지 영역 영구 볼륨 (Persistent Volume): 영구 볼륨은 클러스터 내에서 생성되고 관리되는 스토리지 리소스입니다. 이러한 볼륨은 클러스터 ..

Tools/K8S 2023.08.12