더북(TheBook)

6.1.6 스트리밍 계산 작업의 시작과 종료

 

드디어 노력의 열매를 수확할 때가 되었다. 다음 명령을 실행해 스트리밍 처리를 시작하자.

scala> ssc.start()

 

이것으로 스트리밍 컨텍스트를 시작했다. 스트리밍 컨텍스트는 지금까지 생성한 DStream들을 평가하고, 리시버를 시작한 후 DStream 연산을 수행한다. 스파크 셸에서는 이 명령만 실행해도 애플리케이션의 스트리밍 처리를 시작하며, 다른 명령은 필요하지 않다. 리시버는 별도의 스레드에서 구동하기 때문에 스트리밍 처리가 시작되며 여전히 스파크 셸에 다른 명령을 입력하고, 병렬로 실행할 수 있다.

Note

동일한 SparkContext 객체를 사용해 StreamingContext 인스턴스를 여러 개 생성할 수 있다. 하지만 동일 JVM에서는 StreamingContext를 한 번에 하나 이상 시작할 수 없다.

 

스파크 독립형 애플리케이션에서도 스파크 셸과 마찬가지로 StreamingContext.start 메서드를 호출해 스트리밍 컨텍스트와 리시버를 시작한다. 하지만 다음 코드를 이어서 호출하지 않으면 리시버 스레드를 시작해도 드라이버의 메인 스레드가 종료된다.

ssc.awaitTermination()

 

awaitTermination 메서드는 스파크 스트리밍의 계산 작업을 종료할 때까지 스파크 애플리케이션을 대기시킨다. 또는 awaitTerminationOrTimeout(<밀리초 단위의 제한 시간>) 메서드를 사용할 수도 있다. 이 메서드는 애플리케이션의 대기 시간을 지정된 값으로 제한한다. 스트리밍 계산이 제한 시간을 초과할 때는 false를 반환하며, 제한 시간 내에 계산을 완료할 때는 true를 반환한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.