2016-07-12 6 views
1

Spark에서 알고리즘을 작성했다고 가정하고 로컬 모드에서 실행중인 N 크기의 데이터 세트에 1 .. X 코어를 사용하여 성능을 평가할 수 있습니다. 런타임 Y 노드와 데이터 크기 M >> N가있는 클러스터에서 실행되는 어떤클러스터에서 Spark 성능/확장 성 예측?

  • : 당신은 어떻게이 같은 질문을 접근하는 것?
  • 임의의 수의 노드를 사용하여 크기가 M >> N 인 데이터 세트의 최소 런타임은 얼마입니까?

분명히 이것은 수많은 요소의 영향을받으며 정확한 예측은 거의 불가능합니다. 그러나 당신은 어떻게 교육 된 추측을 생각해 낼 수 있습니까? 로컬 모드에서 실행하면 주로 CPU 사용량을 측정 할 수 있습니다. 셔플의 디스크 + 네트워크로드를 고려한 경험 법칙이 있습니까? 클러스터의 성능을 시뮬레이션하는 방법조차 있습니까?

답변

2

데이터로드는 O (n)으로 추정 할 수 있습니다.

각 단계마다 알고리즘을 추정 할 수 있습니다. 전체 알고리즘은 모든 단계의 누적입니다. 각 스테이지는 다른 양의 데이터를 가지며, 첫 번째 입력 데이터와 관계가 있음에 유의하십시오.

  • 전체 알고리즘에 O (n)가 있으면 O (n)입니다.
  • 전체 알고리즘에 O (n log n)이 있으면 O (n log n)입니다. 전체 알고리즘 O있는 경우
  • 는 (N 2)는 다음 알고리즘을 가정 M >> N.에게

맞게 향상시킬 필요

  • 더 큰 셔플/네트워크가 없다 충분히 빠름
  • 각 노드는 동일한 구성을 갖습니다.
  • 단일 노드에서 데이터 크기 N에 소요되는 총 시간은 T입니다. 알고리즘 O는 (N) 알고리즘이 O 인 경우 T * M/N/X

    나서 시간 (N 로그 N) 인 경우 노드

  • 번호 다음에 시간 X

이다 T * M/N/X * log(M/N)

편집

큰 셔플이 있다면 대역폭에 대한 O (n)입니다. 추가 된 시간은 dataSize(M)/bandwidth입니다.

큰 셔플이 많은 경우 알고리즘을 개선하는 것이 좋습니다.

+0

그건 완벽하게 유효하지만, 나는 디스크 + 네트워크를 완전히 무시하는 데 더 관심이있었습니다. 커다란 셔플이 있다는 것을 알고 클러스터의 대역폭도 알고 있다면 어떻게 될까요? 병렬화 오버 헤드를 무시하면 병렬 실행의 한계를 예측할 수 없습니다. – bluenote10

+0

디스크가 무시되지 않았습니다. 셔플이있는 경우 M/대역폭으로 추정됩니다. 누적되어 결과로 나타납니다. 전체 데이터 세트를 한 번 더 셔플해야 할 경우 알고리즘을 개선하는 것이 좋습니다. –