2017-05-23 15 views
1

내 응용 프로그램 코드에 updateStateByKey()을 사용하고 있으며이 응용 프로그램을 다시 시작하더라도 상태를 저장하려고합니다.상태 손실없이 Spark 스트리밍 어플리케이션을 업그레이드하거나 다시 시작하는 방법은 무엇입니까?

이 작업은 모든 배치에 상태를 저장하여 수행 할 수 있지만 그 작업을 수행하는 데 많은 시간이 소요될 수 있습니다.

그래서 응용 프로그램이 중지되면 상태를 저장할 수있는 솔루션이 있는지 궁금합니다.

또는 현재 상태를 잃지 않고 응용 프로그램 코드를 업그레이드 할 수있는 다른 솔루션이 있습니까?

답변

0

현재 Spark 2.1.0부터는이 기능을 사용하기위한 해결책이 없으므로 업그레이드하려는 경우 데이터를 직접 저장해야합니다. 한 가지 가능성은 updateStateByKey 또는 mapWithState을 사용하지 않고 키 - 값 저장소에서와 같이 외부 어딘가에 상태를 저장하는 것입니다.

스파크 2.2는 HDFS를 기반으로 한 새로운 상태 저장을 제공 할 예정이지만 현재 검사 점 구현의 약점을 극복했는지 살펴볼 기회가 없습니다.

0

각 배치 동안 상태를 저장하는 옵션은 다양합니다. 나는 그 중 대다수를 this answer에 기재했습니다. 이것이 (네트워크, 시리얼 라이 제이션 등을 통해) 추가하는 대기 시간을 강조 했으므로, 나는 SnappyData을 지적하고자했습니다. SnappyData는 메모리 내 데이터베이스를 Spark과 깊이 통합하여 동일한 JVM 및 블록 관리자를 공유합니다. 이렇게하면 각 일괄 처리 중 직렬화 단계가 없어 지므로 상태를 기록 할 때 대기 시간이 향상됩니다. 또한 요청한대로 응용 프로그램이 중지 될 때 상태를 유지할 수 있습니다.

(면책 조항 : SnappyData의 직원)