2017년/Spark

sparkR을 또 공부해보자

위지원 2017. 8. 18. 16:00

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

오늘은 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을 관리하는 기능을 가지고 있음