Le parcours d’un ingénieur de données / Blogs / Perficient

Dans la ville animée de Tech Ville, où les données circulent comme des rivières et où les entreprises prospèrent grâce aux informations, vivait une ingénieure de données dédiée nommée Tara. Avec plus de cinq ans d’expérience à son actif, Tara avait navigué dans le vaste océan de l’ingénierie des données, apprenant constamment et évoluant au gré des marées.
Par un matin frais, Tara a été convoquée à une réunion avec l’équipe d’analyse de l’entreprise pour laquelle elle travaillait. L’équipe était confrontée à des retards importants dans le traitement de ses énormes ensembles de données, ce qui entravait sa capacité à générer des informations en temps opportun. La mission de Tara était claire : optimiser les performances de leurs tâches Apache Spark pour garantir un traitement des données plus rapide et plus efficace.
L’analyse
Tara a commencé sa quête en plongeant profondément dans les emplois Spark existants. Elle savait que pour optimiser les performances, elle devait d’abord comprendre où se trouvaient les goulots d’étranglement. elle a commencé par les étapes suivantes :
1. Examen de l’interface utilisateur Spark: Tara a minutieusement analysé l’interface utilisateur Spark pour les tâches en cours, en se concentrant sur les étapes et les tâches qui prenaient le plus de temps à s’exécuter. elle a remarqué que certaines étapes comportaient des tâches avec des temps d’exécution élevés et des remaniements fréquents.
2. Examen des ressources du cluster: elle a vérifié l’utilisation des ressources du cluster. Les graphiques d’utilisation du processeur et de la mémoire ont indiqué que certains nœuds d’exécution étaient sous-utilisés tandis que d’autres étaient débordés, ce qui suggère un déséquilibre dans l’allocation des ressources.
La stratégie d’optimisation
Forte de ces connaissances, Tara a formulé une stratégie d’optimisation à multiples facettes :
1. Sérialisation des données: elle a décidé de passer de la sérialisation Java par défaut à la sérialisation Kryo, qui est plus rapide et plus efficace.
conf = SparkConf().set(« spark.serializer », « org.apache.spark.serializer.KryoSerializer »)
2. Réglage du parallélisme: Tara a ajusté le niveau de parallélisme pour mieux correspondre aux ressources du cluster. En définissant « spark.default.parallelism » et « spark.sql.shuffle.partitions » sur une valeur plus élevée, elle visait à réduire la durée des opérations de lecture aléatoire.
conf = conf.set(« spark.default.parallelism », « 200 »)
conf = conf.set(« spark.sql.shuffle.partitions », « 200 »)
3. Optimiser les jointures: elle a optimisé les opérations de jointure en tirant parti des jointures de diffusion pour des ensembles de données plus petits. Cela a réduit la quantité de données mélangées sur le réseau.
small_df = spark.read.parquet(« hdfs://path/to/small_dataset »)
large_df = spark.read.parquet(« hdfs://path/to/large_dataset »)
small_df_broadcast = diffusion (small_df)
result_df = large_df.join(small_df_broadcast, « join_key »)
4. Mise en cache et persistance: Tara a identifié les DataFrames fréquemment consultés et les a mis en cache pour éviter les calculs redondants.
df = spark.read.parquet(« hdfs://path/to/important_dataset »).cache()
df.count() – Déclenchement de l’action du cache
5. Allocation des ressources: elle a reconfiguré l’allocation des ressources du cluster, assurant une répartition plus équilibrée des ressources CPU et mémoire entre les nœuds exécuteurs.
conf = conf.set(« spark.executor.memory », « 4g »)
conf = conf.set(« spark.executor.cores », « 2 »)
conf = conf.set(« spark.executor.instances », « 10 »)
La mise en oeuvre
Avec les optimisations prévues, Tara a mis en œuvre les changements et a suivi de près leur impact. elle a lancé une série de tests, comparant soigneusement les mesures de performances avant et après les optimisations. Les résultats étaient prometteurs :
– Le temps global d’exécution des travaux réduit de 40%.
– L’utilisation des ressources dans le cluster était plus équilibrée.
– Les temps de lecture et d’écriture aléatoires ont considérablement diminué.
– La stabilité des tâches s’est améliorée, avec moins de tentatives et d’échecs.
La victoire
Tara a présenté les résultats à l’équipe d’analyse et à la direction. Les améliorations ont non seulement accéléré leurs pipelines de traitement de données, mais ont également permis à l’équipe d’exécuter des analyses plus complexes sans se soucier des goulots d’étranglement en termes de performances. Les informations étaient désormais fournies plus rapidement, permettant une meilleure prise de décision et stimulant la croissance de l’entreprise.
Le voyage continu
Même si Tara avait franchi une étape importante, elle savait que le monde de l’ingénierie des données est en constante évolution. elle est restée déterminée à apprendre et à s’adapter, prête à relever de nouveaux défis et à optimiser davantage à mesure que le paysage des données continue de croître.
Ainsi, dans la ville dynamique de Tech Ville, le parcours de Tara en tant qu’ingénieur de données s’est poursuivi, naviguant dans le vaste océan de données avec compétence, connaissances et une soif inextinguible d’amélioration.
Source link