더북(TheBook)

6.1.2 스트리밍 컨텍스트 생성

 

이제 스파크 셸을 시작하고 예제를 실습해 보자. 예제 코드는 가상 머신의 로컬 클러스터에서 실행할 수 있다. 그 외 다른 스파크 클러스터 매니저가 있다면 사용해도 좋다. (스파크의 클러스터 매니저에는 스파크 자체 클러스터, YARN 클러스터, 메소스 클러스터가 있다. 자세한 내용은 10~12장을 참고하자.) 하지만 어떤 클러스터를 사용하든 반드시 코어를 두 개 이상 실행자에 할당해야 한다. 스파크 스트리밍의 각 리시버가 입력 데이터 스트림을 처리하려면 코어(엄밀히 말하면 스레드(thread))를 각각 한 개씩 사용해야 하며, 별도로 최소 코어 한 개 이상이 프로그램 연산을 수행하는 데 필요하다.

예를 들어 로컬 클러스터를 사용할 때는 다음 명령으로 스파크 셸을 시작할 수 있다.

$ spark-shell --master local[4]

 

스파크 셸을 준비했다면 가장 먼저 StreamingContext의 인스턴스를 생성해야 한다. 스파크 셸에서 SparkContext 객체(sc 변수로 제공)와 Duration 객체를 사용해 StreamingContext를 초기화할 수 있다. Duration 객체는 입력 데이터 스트림을 나누고 미니배치 RDD를 생성할 시간 간격을 지정하는 데 사용한다. 최적의 미니배치 간격은 활용 사례(즉, 최신 데이터를 얼마나 빨리 조회해야 할지), 성능 요구 사항, 클러스터 용량에 따라 다르다. 미니배치 간격은 이후에 더 자세히 다룬다. 일단 지금은 간격을 5초로 설정하고 StreamingContext를 생성하자.

scala> import org.apache.spark._
scala> import org.apache.spark.streaming._
scala> val ssc = new StreamingContext(sc, Seconds(5))
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.