Il est important de savoir que dans une architecture big data, la distribution est un élément clé. Avant, nous étions dans un système de scalabilité verticale, c’est-à-dire que l’on rajoutait de la RAM, du CPU, etc… pour résoudre tous problèmes liés au stockage ou à la puissance de calcul des ordinateurs. Le problème était que cela est très cher et que l’on utilisait des hardwares qui étaient voués à être jetés. Depuis l’émergence du big data, nous sommes passés à une architecture de scalabilité horizontale pour résoudre ce problème. Cela signifie que l’on privilégie d’ajouter des ordinateurs dans une architecture pour résoudre les problèmes de big data. Cette architecture présente des avantages. Tout d’abord, il faut savoir que toutes les données sont répliquées à un certain facteur de réplication et partitionnées sur les différentes machines. Cela permet d’avoir une sécurité accrue au niveau des données. De plus, puisque nous utilisons différentes machines, les calculs sont parallélisables dans une architecture distribuée donc nous gagnons de la rapidité de calcul et la puissance de calcul est accrue. Enfin, le passage à l’échelle est plus facile. Imaginons que nous n'ayons plus de stockage dans nos machines, au lieu de changer d’ordinateur contre un ordinateur plus puissant (scalabilité verticale), nous pouvons rajouter une machine à notre architecture, ce qui permet de résoudre le problème de stockage. Plus particulièrement, en Data Science, pour réussir à effectuer des calculs avec une architecture distribuée et à gérer le stockage entre les différents nœuds de cette architecture distribuée, on utilise principalement Hadoop. Ce framework est composé de trois sous-frameworks : HDFS, MapReduce et YARN. HDFS est le gestionnaire de stockage dans Hadoop. Il permet de stocker les différents blocs de partitions sur les différents nœuds de l’architecture distribuée. MapReduce est le système de calcul dans une architecture distribuée. Il effectue des calculs en parallèle sur les différents nœuds de l'architecture pour en ressortir un résultat final. Il fonctionne sous forme de clé/valeur comportant différentes étapes. La première est la phase de mapping qui va agréger la requête demandée en fonction d’une clé sur tous les blocs de notre document. Ensuite, il y a la phase de shuffle qui va trier les résultats des différentes agrégations en fonction de cette clé. Puis, il y a la phase de reducing qui va appliquer la requête (par exemple une somme) à nos différentes clés triées. Enfin, il y a la phase finale, qui va consister à faire une nouvelle agrégation en un seul nœud de nos reducing différents.