7 votes

Comment spark (2.3 ou nouvelle version) détermine le nombre de tâches pour lire les fichiers de tables de ruches dans gs bucket ou hdfs ?

Données d'entrée :

  • une table de ruche (T) avec 35 fichiers (~1.5GB chacun, SequenceFile)
  • les fichiers sont dans un seau gs
  • par défaut fs.gs.block.size=~128MB
  • tous les autres paramètres sont par défaut

Expérience 1 :

  • créer un dataproc avec 2 workers (4 core par worker)
  • run select count(*) from T ;

Résultat de l'expérience 1 :

  • ~650 tâches créées pour lire les fichiers de la table de ruche
  • chaque tâche lit ~85MB de données

Expérience 2 :

  • créer une dataproc avec 64 workers (4 core par worker)
  • run select count(*) from T ;

Résultat de l'expérience 2 :

  • ~24 480 tâches créées pour lire les fichiers de la table de ruche
  • chaque tâche lit ~2.5MB de données (il me semble qu'une tâche lisant 2,5MB de données n'est pas une bonne idée car le temps d'ouverture du fichier serait probablement plus long que la lecture de 2,5MB).

Q1 : Une idée de la façon dont spark détermine le nombre de tâches pour lire les fichiers de données des tables de ruche ? J'ai répété les mêmes expériences en mettant les mêmes données dans hdfs et j'ai obtenu des résultats similaires.

Si je comprends bien, le nombre de tâches pour lire les fichiers de la table de ruche devrait être le même que le nombre de blocs dans hdfs. Q2 : Est-ce exact ? Q3 : Est-ce également correct lorsque les données sont dans le seau gs (au lieu de hdfs) ?

Merci d'avance !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X