[spark 2] 4-1. 개발환경소개_colab설정

data_hamster·2023년 7월 28일
0

어떤 환경에서 개발하고 실습할지 알아보자

자기 컴퓨터, 리눅스 서버.
로컬 스탠드 얼론을 설치함.

스파크, 스파크 쉘을 이용해 인터렉션.
주피터 노트북, 아나콘다 노트북을 설치해서 사용.
파이참, vs 스튜디오 설치

데이터브릭스 - 지금 잘되는지는 모르겠음

구글 콜랩을 기본 환경으로 사용. 구글 콜랩 서버 사양이 나쁘지 않음. 인터넷 연결만 되면 브라우저를 통해 사용이 가능.
스탠드 얼론을 설치를 하고 그 위에 스파크 쉘, IDE를 올리면 편하긴 한데, 윈도우즈, 맥이냐에 따라 다양한 소프트웨어가 있고, 복잡해서. 일관된 환경에서 같이 공부하기 힘든 점이 있음.

콜랩 상에서 어떻게 셋업하는건 후술.
기본 아이디어. 파이스파크 모듈설치, 로컬 스탠드얼론 설치, 스파크 클러스터를 파이썬에서 엑세스. (파이와이 for j? 별도 모듈 설치) 그 이후 파이스파크 프로그래밍.
물론 스파크 클러스터 용량이 작기 때문, 처리 데이터는 작음.
별도로, 스파크 서밋, CLI 잡 실행 가능. 구글 콜랩에서 사용하기 힘듦. 굉장히 번거로움.
맥북 위에 로컬 스탠드얼론 설치. 스파크 위에 스파크 서밋으로 코드를 실행. 스파크 웹 UI를 엑세스 해볼 수 있음. 내가 실행한 잡들이 옵티마이즈 됐는지 확인. 결과를 봄으로써 코드 최적화에 대한 아이디어 제공. 나중에 최적화 시간에 다룸. (스파크 고급 프로그래밍)

요약. 구글 콜랩. 가끔 로컬 스탠드얼론을 맥 상에서 써봄. 규모의 스파크를 스파크 서밋으로 실행 시켜볼 예정.


로컬이라는 모드에 대해 설명했음.
로컬 스탠드얼론을 쓸 때. master라는 옵션에 얀을 지정. 스파크 리소스 매니저가 얀이 됨. 만일 local n이라고 하면 지금 컴퓨터가 됨. 컴퓨터는 1대짜리. 리소스는 작지만 프로그래밍 배우는데 지장은 없음.

local. 엑시큐터 하나 쓰레드 하나
local * . 그 숫자만큼의 쓰레드가 엑시큐터 안에 생성.

로컬 스탠드얼론 스파크는 드라이버 하나, 엑시큐터 하나를 JVM에 만들어줌. 이 엑시큐터 안에 쓰레드의 수는 local n의 숫자에 의해 결정. 3이라고 하면 엑시큐터 안에 쓰레드가 3개 생김. 한번에 태스크 3개를 돌릴 수 있음. 개발, 테스트용.
드라이버, 엑시큐터가 하나의 JVM에서 돌아감. 엑시큐터 안에 쓰레드 수 설정 가능.
만일 CPU 코어 숫자만큼 쓰고 싶다면 *를 써주면 된다.

굉장히 기능이 제약된 스파크 클러스터지만, 개발, 학습용으론 ㅇㅋ

구글 콜랩 예제

https://colab.research.google.com/drive/1Bjq5l544fnqpc71few0Sms3SMBJ2kAgJ#scrollTo=f8gMf2J1VLqn

두개의 모듈을 설치한다
여기서 생성된, 웹UI는 엑세스할 수 없음. 해당 포트넘버가 막혀있음 ngrok을 쓰면 억지로 열수 있으나 비추천.
우분투에 로그인해서 로컬 스탠드얼론을 설치하는 예를 보임. 스파크 웹 UI 엑세스에 문제 없음.

Py4J는 JVM 내에 있는 자바 객체를 사용가능하게 해준다

간단하게 코드를 작성해보도록 한다.
구글 콜랩에서 파이스파크를 설치해본다.

앞으로의 주 개발환경이 될 것임.

!pip install pyspark==3.3.1 py4j==0.10.9.5

동시에 로컬스탠드얼론이 설치가 됨.
하나의 드라이버, 엑시큐터
태스크의 수는 스파크세션 객체 만들 때 지정될 것임.

from pyspark.sql import SparkSession

spark = SparkSession.builder\
		.master("local[*]")\
        .appName("PySpark Tutorial")\
        .getOrCreate()

저 스파크세션 오브젝트를 통해 통신을 함. 엔트리포인트
local 모든 cpu의 쓰레드를 엑시큐터의 태스크로 할당
getOrCreate -
스파크세션은 싱클톤. 딱 하나만 만들 수 있음. 여러개를 만들지 않음.

스파크라는 싱글톤 오브젝트 생성. 글로벌 오브젝트라 생각하면 됨.
spark를 찍어보면.

스파크 세션 만들어졌고,
노트북이 아니라면 포트 4040에 UI가 뜸. 상황, 디버깅, 최적화를 할 수 있음. 그러나 노트북에선 엑세스가 불가능함. 다만 앞의 슬라이드에 구글 콜랩에서 특정 포트에 뜨고 있는 프로그램을 어떻게 밖으로 노출할 수 있는지 링크를 올렸었음. 브라우저를 통해 엑세스할 수 있지만 여기서 진행은 안함.

스파크 버전
어떤 리소스를 쓰고 있는지 - 로컬 머신 사용 중


사양을 볼 수 있다
CPU가 2개가 있음을 확인
로컬 스타로 마스터를 지정했을 때, 스파크 클러스터의 엑시큐터는 2개의 태스크 수행 가능.

메모리도 명령어로 확인할 수 있는데 13Gb가 있는 것을 확인.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글