복붙노트

[HADOOP] 다른 배치 기간으로 여러 Spark Streaming 작업을 어떻게 설정합니까?

HADOOP

다른 배치 기간으로 여러 Spark Streaming 작업을 어떻게 설정합니까?

우리는 대기업의 현재 데이터 아키텍처를 변형하는 초기 단계에 있으며 현재 모든 소스를 목적지에 연결할 수있는 Spark Streaming ETL 프레임 워크를 구축 중입니다 (소스 / 대상은 Kafka 주제, Flume, HDFS, 등) 변환을 통해. 이것은 다음과 같습니다.

SparkStreamingEtlManager.addEtl (Source, Transformation *, Destination) SparkStreamingEtlManager.streamEtl () streamingContext.start ()

우리는 하나의 SparkContext 만 가져야하므로 모든 ETL 파이프 라인을 하나의 응용 프로그램 / jar에 배포한다는 가정이 있습니다.

이것의 문제점은 batchDuration이 컨텍스트 자체의 속성이지 ReceiverInputDStream이 아니라는 것입니다 (이유는 무엇입니까?). 그러므로 우리는 여러 개의 Spark Cluster를 가질 필요가 있습니까, 아니면 여러 SparkContext를 허용하고 여러 개의 응용 프로그램을 배포 할 필요가 있습니까? 리시버 당 배치 지속 시간을 제어하는 ​​다른 방법이 있습니까?

내 가정이 순진하거나 구술을해야 할 필요가있는 경우 알려주십시오. 감사!

해결법

  1. ==============================

    1.내 경험상 서로 다른 스트림에는 다른 튜닝 요구 사항이 있습니다. 처리량, 지연 시간, 수신 측 용량, 존중받는 SLA 등

    내 경험상 서로 다른 스트림에는 다른 튜닝 요구 사항이 있습니다. 처리량, 지연 시간, 수신 측 용량, 존중받는 SLA 등

    그 다양성을 보호하기 위해, 우리는 상기 특이성을 다루기 위해 각 Spark Streaming 작업을 구성해야합니다. 따라서 배치 간격뿐 아니라 메모리 및 CPU, 데이터 파티셔닝, 실행 노드 수 (로드가 네트워크에 연결될 때)와 같은 리소스가 필요합니다.

    따라서 각 Spark Streaming 작업은 Spark Cluster에서 별도의 작업 배포가됩니다. 이는 또한 개별 파이프 라인을 서로 독립적으로 모니터링하고 관리 할 수있게하며 프로세스의 미세 조정에 도움을줍니다.

    우리의 경우에는 Mesos + Marathon을 사용하여 3600x24x7을 실행하는 Spark Streaming 작업 세트를 관리합니다.

  2. from https://stackoverflow.com/questions/29612726/how-do-you-setup-multiple-spark-streaming-jobs-with-different-batch-durations by cc-by-sa and MIT license