• RDD(Resilient Distribured DataSet)란?

    2017. 7. 12. 22:59

    by. 위지원



    RDD란?

    -기본적인 데이터 구조

    -객체의 불변 분산 컬렉션

    -각 데이터 세트는 클러스터의 다른 노드에 계산 될 수 있는 파티션으로 나뉨

    -자용자 정의클래스,python,java,scala객체를 포함할 수 있음

    -공식적으론 rdd는 읽기전용의 분할 된 레코드 모음


    RDD의 생성

    -드라이버 프로그램에서 기존 컬렉션을 병렬처리 

    -외부 스토리지 시스템에서 데이터 세트를 참조


    RDD의 계산

    -Tranceformation : 데이터의 흐름생성

    -action : 데이터를 처리하여 결과 생성


    스파크는 빠르고 효율적인 맵-리듀스 작업을 위해 rdd개념을 사용하는 것!



    맵리듀스의 내용은 예전에 한번 다룬 적 있다 http://weejw.tistory.com/35


    이 문서에서 맵리듀스에 대해 한번 더 언급하고 있으니 한번 더 알아보자


    map reduce의 단점!


    1.map reduce는 데이터 공유가 느리다

    맵 리듀싱을 할때 대부분의 프레임 워크에서 계산간에 데이터 재사용을 hdfs 같은 스토리지 시스템을 이용한다. 복제,직렬화,디스크 io때무에 데이터 공유가 느려진다. 하둡프로그램의 hdfs 읽기 쓰기 작업을 수행하는데 90% 이상을 소모할 정도라고 한다..


    2.map reduce의 반복연산

    단계마다 중간 결과를 재사용 한다. 이로 인해서 데이터 복제,디스크 i/o 직렬화로 인한 오버헤드 발생으로 시스템 속도가 느려진다(아래 사진 참고)



    3. map reduce의 대화형 작업

    쿼리를 실행할때 마다 파일에서 디스크 i/o를 수행하여 시간을 잡아먹음 (아래 그림 참고)





    자.. 이를 spark RDD로 변경한다면?!


    sparkRDD로의 변경..!


    1.rdd를 사용한 데이터 공유    

    -in memory)메모리 내에서 처리 계산을 지원하는) 방식의 연산은 데이터 공유를 네트워크,디스크보다 10~100배 빠르게 한다.

    -작업 전반에 걸쳐 객체로서의 메모리 상태를 저장하여 객체는 해당 해당 작업간에 공유가 가능


    2.rdd를 사용한 반복 연산

    disk가 아닌 memory에 중간 결과를 저장함 (아래 사진 참고)



    3.rdd를 사용한 대화형 작업

    hdfs에 접근하는게 아닌 memory에 보관하여 실행시간을 줄여줌




    출처 url

    https://www.tutorialspoint.com/apache_spark/apache_spark_rdd.htm


    '2017년 > Spark' 카테고리의 다른 글

    버츄어박스에 coreOs+Dockerswarm+spark 를 깔아보자  (0) 2017.07.21
    도커에서 spark를 설치해 보자  (0) 2017.07.13
    spark를 설치해보자  (0) 2017.07.11
    맵 리듀스란?  (0) 2017.07.08
    spark란?  (0) 2017.06.25

    대화의 장 💬