시간 X에 스트림이 수신되었다고 가정합니다. 내 일괄 처리 시간이 1 분이라고 가정합니다. 이제 집행자가 첫 번째 배치를 처리하고 있습니다. 그러나이 실행은 X + 3까지 3 분이 걸립니다. 그러나 X + 1과 X + 2에서 우리는 다른 두 개의 배치를받습니다. X + 1에서 첫 번째 배치가 손실된다는 의미입니까? 아니면 내 기억에 저장되어 여전히 처리되고 있습니까?Spark DStream Batch에 대한 내결함성 허용
0
A
답변
1
스파크 스트리밍에서 처리하는 동안 데이터가 손실되지 않습니다. Spark은 들어오는 모든 데이터를 메모리에 저장합니다 (내결함성을 위해 다른 노드에도 복제합니다). 각 일} 처리 간격 후 실행 프 N 그 %이 저장된 데이터 (마이크로 일} 처리)를 처리하기위한 새 작 업을 스케줄합니다. 이 작업이 실행 중일 때 다른 데이터가 향후 처리를 위해 메모리에 저장됩니다.
어쨌든 예제가 잘못되었습니다. Spark documentation
안정적인 클러스터에서 실행되는 Spark Streaming 응용 프로그램의 경우 시스템은 수신되는 데이터를 가능한 빨리 처리 할 수 있어야합니다. 즉, 데이터 일괄 처리가 생성되는 즉시 처리되어야합니다.
3 분 안에 1 분 분량의 데이터 조각을 처리하면 평신도의 관점에서 보았을 때 장기적으로 효과가 있음을 기대할 수 없습니다. 들어오는 데이터를 저장하기위한 메모리 사용으로 인해 앱이 갑자기 폭발합니다.