본문 바로가기
일/spark

Spark #2 :: RDD

by blair2dev 2022. 2. 5.

1. RDD 
    1. 스파크에서 쓰는 기본 데이터 구조
    2. 스파크는 내부에서 처리하는 데이터 들을  모두 RDD 타입으로 한다.
    3. RDD 의 특징
        1. Immutable 변형 불가
            1. 변형 불가이기 때문에 생성과정을 되짚으면 데이터가 꺠져도 복구할 수 있다.
        2. 여러 노드에 분산됨
        3. 다수의 파티션으로 관리됨
            1. 효율적으로 클러스터 노드에 분산됨
    4. RDD 생성
        1. 외부 (s3, hdfs) 에서 데이터를 로딩할 때 
        2. 코드에서 생성되는 데이터를 저장할 때 
    5. RDD 연산 의 두가지 타입 
        1. Transformation
            1. RDD 에서 새로운 RDD 를 생성한다.
                1. filter
                2. map
        2. Action
            1. RDD에서 다른 타입의 데이터를 뽑아냄
                1. count()
                2. collect()
    6. RDD 의 분산 처리 
        1. RDD 는 파티션 으로 분산되어 클러스터 메모리에 저장된다. 
            1. 파티셔너
                1. Range
                2. Hash
                3. https://m.blog.naver.com/syung1104/221103154997
        2. dependancy

Dependancy


            1. narrow dependancy
                1. 부모 RDD 파티션과 자식 RDD 파티션이 1:1  매칭되고 셔플링이 거의 발생하지 않으므로 빠르다 
                2. 변환 후의 파티션이 하나의 파티션으로 매핑
                3. 해당 작업이 하나이 노드에서 처리
                4. 네트웍을 사용안함
                5. 파티션에 문제 생겨도 복원이 가능 함
            2. wide dependancy
                1. 부모 파티션이 자식 파티션과 N:1 로 대응, 여러 파티션들에서 데이터를 참조해야 하므로 느림
                2. 변환 후 파티션이 여러 파티션으로 매핑된다.
                3. 파티션에 문제가 생기면 복원비용이 크다 
                4. 셔플이 많이 일어난다. 
                5. 네트웍을 사용해야 한다. 
    7. Lineage

leneage 예시


        1. RDD 연산 순서를 기록하여 DAG(비순환 그래프)로 표현한것
        2. fault-tolerance 
            1. lineage 만 있으면 복구가능
            2. 일부 계산 비용이 큰 RDD 는 체크포인트를 만들어 두어 디스크에 저장한다. 
        3. Lazy Execution 
            1. Transfomation 연산에서는 단순히 lineage 만 생성하고 
            2. action 연산 때 lineage 를 실행한다. 

' > spark' 카테고리의 다른 글

Spark Streaming 성능 Tuning  (0) 2022.05.24
Spark Streaming Graceful Shut Down  (0) 2022.05.01
Spark streaming :: Kafka Dstream  (0) 2022.02.22
Spark #1 :: Spark 개념, 구조  (0) 2022.02.05