2016-07-06 2 views

답변

4

Apache Spark Streaming의 Streamsets Data Collector (SDC)에서 들어오는 데이터를 처리하는 가장 좋은 방법은 데이터를 Kafka 항목에 쓰고 거기에서 데이터를 읽는 것입니다. 이렇게하면 SDC에서 Spark Streaming을 분리 할 수 ​​있으므로 둘 다 자체 처리 속도로 진행할 수 있습니다.

스파크 스트리밍 마이크로 배치가 시간에 따라 지시되는 동안 SDC 마이크로 배치가 레코드 수로 정의됩니다. 즉, 각 SDC 배치는 Spark Streaming 배치에 해당하지 않을 수 있습니다 (대부분 Spark Streaming 배치에는 여러 SDC 배치의 데이터가있을 가능성이 큽니다). SDC는 일단 목적지로 보내지면 각 배치를 "커밋"합니다 - Spark Streaming에 쓰여진 배치는 데이터 손실을 피하기 위해 각 SDC 배치가 Spark Streaming 배치와 일치해야합니다. Spark Streaming은 처리 또는 노드 오류로 인해 이미 커밋 된 배치를 "다시 처리"할 수도 있습니다. SDC는 커밋 된 배치를 다시 처리 할 수 ​​없습니다. 이와 같은 상황에서 복구하려면 배치를 다시 처리 할 수있는 Kafka와 같은 것을 작성해야합니다. 따라서 SDC에서 Spark Streaming으로 직접 연결하는 커넥터는 복잡하고 데이터 손실 문제가 발생할 가능성이 큽니다.

요약하면 가장 좋은 옵션은 SDC -> Kafka -> Spark Streaming입니다.

관련 문제