2017-11-09 7 views
0

데이터 스트림 당 여러 개의 데이터 스트림과 여러 연산자를 처리 할 때 Flink의 런타임 측면을 이해하려고합니다.아파치에서 데이터 스트림/연산자와 스레드 사이의 상관 관계 flink

사용 사례 : 단일 플립 크 작업 (각각의 데이터 스트림은 서로 다른 시간 대기 시간을 갖는 하나의 장치를 나타내는 각각의 데이터 스트림)에서 N 개의 데이터 스트림으로 구성되며 각각의 데이터 스트림은 두 개의 스트림으로 분할됩니다.이 중 하나는 CEP 연산자 및 프로세스 함수로 변환합니다.

질문 : 런타임시

  1. 는, 엔진이 데이터 스트림 당 하나 개의 스레드를 만들 것인가? 또는 연산자 당 하나의 스레드?
  2. 작업이 시작될 때 런타임에 동적으로 데이터 스트림을 만들 수 있습니까? (예 : 작업이 시작될 때 파일에서 N을 읽고 해당 N 스트림을 작성해야하는 경우)
  3. N 파티션과 달리 많은 스트림 (N ~ 10000)이 작성되면 특정 성능에 영향이 있습니까? 단일 스트림 내에서?

답변

0

질문 # 1 : 런타임시 엔진이 데이터 스트림 당 하나의 스레드를 생성합니까? 또는 연산자 당 하나의 스레드?

제 생각에는 스트림과 운영자 간에는 직접적인 관계가 없습니다. 스트림이 운영자에게 연결되는 방식을 얻으려면 execution plans을 살펴 봐야합니다. 또한 병렬 처리에 따라 달라집니다. various types of parallelisms in flink

질문 # 2 : 작업이 시작될 때 런타임에 동적으로 데이터 스트림을 만들 수 있습니까?

예, 가능합니다. 간단한 방법은 RichParallelSourceFunction 함수를 구현하고 일부 속도로 스트림을 보내는 스트림 생성기를 만드는 것입니다.

질문 # 3 : 단일 스트림 내 N 개의 파티션과 달리 다수의 스트림 (N ~ 10000)이 생성되면 특정 성능에 영향이 있습니까?

예 성능상의 영향이 있습니다. 여러 스트림을 생성 한 다음 처리 대기 시간을 비교하여이를 확인할 수 있습니다.