• sparkR을 또 공부해보자

    2017. 8. 18. 16:00

    by. 위지원

    왜이렇게 자꾸 햇갈리는지 모르겠다. 

    오늘은 https://www.slideshare.net/databricks/enabling-exploratory-data-science-with-spark-and-r 이것을 보고 공부를 해봤다.


    sparkR이 무엇인가?

    -spark에 R 프론트엔드를 제공함

    -R의 단점인 데규모 데이터셋에대한 메모리관리를 spark가 커버쳐줌 (그래서 로컬 메모리 필요x) ( spark의 분산처리를 r이 쓸수있도록함)

    -R과 spark 데이터프레임사이에 편리한 상호작용을 제공



    아키텍쳐

    드라이버

    -2가지의 구성요소 ( 드라이버,워커 )

    -분산된 데이터 자체는 jvm에 있음!!!!!

    -R에서 jvm에 바인딩되어(묶이다라는 뜻으로 R에서 jvm의 함수를 호출할 수 있도록 하는.. )

     즉 sparkR이라면 R에서 jvm에 바인딩 되어 spark의 함수를 사용할 수 있도록 하는것

    -sparkR의 api



    -바인딩은 socket기반 sparkR 내장 api를 가지고 한다.  ( java 객체를 참조하는 R의 class 'jobj'를 이용함!!! )



    워커

    - 초기에는 R함수를 실행할때마다 fork하는 방식이였는데, 이는 필요 입력을 전송시 고정된 오버헤드가 발생하여 비용이 큼

    -R연산 수행을 파이프라인으로 실행함 

    -파이프라인 : 프로세서로 가는 명령어들의 움직임, 명령어를 수행하기 위해 취해진 산술적인 단계가 연속/중복

    -파이프라인을 쓴다! 라는것은 연산을 수행할때 메모리에서 연산수행에 관련된 명령어를 프로세서가 연산을 수행하는동안 미리 가져와서 근처 버퍼에 가져다놓는것임!! ( 파이프라인을 안쓰면 연산이 다~끝나야 명령어를 가져오고..) 그래서 주어진 시간동안 수행 될 수 있는 명령어의 수가 증가됨

    -데몬 R프로세스를 만듬

    -데몬 R프로세스는 worker에서 R이 spark를 사용하여 작업을 수행하는동안 worker R을 관리하는 기능을 가지고 있음 




    대화의 장 💬