분류 전체보기 88

Spark RDD 연산 예제 모음

TransFormation 연산 1. map map 함수는 RDD의 각 요소에 주어진 함수를 적용하고 결과로 새 RDD를 생성합니다. # RDD 생성 rdd = sc.parallelize([1, 2, 3, 4]) # 각 요소에 2를 곱함 result = rdd.map(lambda x: x*2) result.collect() # 결과: [2, 4, 6, 8] 2. filter filter 함수는 주어진 조건 함수에 따라 요소를 필터링합니다. 조건에 맞는 요소만 포함하는 새 RDD를 반환합니다. # RDD 생성 rdd = sc.parallelize([1, 2, 3, 4, 5]) # 짝수만 필터링 result = rdd.filter(lambda x: x % 2 == 0) result.collect() # 결과..

Tools/Spark 2024.03.13

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

HTTP 쿠키와 web storage에 대하여

기본 동작 및 설명 Cookie는 웹 브라우저와 웹 서버 간에 정보를 교환하는 작은 데이터 조각입니다. 이 정보는 클라이언트 측에서 관리되며, 주로 세션 상태를 유지하거나 사용자 개인화에 사용됩니다. 1. 서버는 쿠키가 필요하다고 판단하면 set-Cookie : user ~~ response 헤더를 만들어서 넣어준다. 2. 클라이언트는 쿠키를 쿠키저장소에 저장하고 다음부터 모든 request에 쿠키를 자동으로 보내도록 한다. 3. 언제나 다 보낼 수도 없고 보안도 문제가 있다. 따라서 아래와 같이 제약사항을 설정해야 한다. Set-Cookie: user_id=123; Expires=Sat, 01 Jan 2023 00:00:00 GMT; Max-Age=604800; Path=/; Secure; HttpOn..

C.S/WEB 2023.12.09

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