Ardemius / big-data-resources

Repo to store all my Data ressources : "big" ones, data pipelines, data management, all of them 😉
3 stars 2 forks source link

Programmation fonctionnelle et Hadoop #1

Closed opportus closed 2 years ago

opportus commented 2 years ago

Salut! Merci pour le partage. ;)

Sur la page:

https://github.com/Ardemius/big-data-resources/blob/master/big-data-main-roles.adoc#developers...

Il est écrit:

Les langages de programmation généralement utilisés sont Java, Scala et Python. Connaître les bases de la programmation fonctionnelle est un plus indéniable pour un bon développeur Hadoop.

Si tu veux parler du paradigme progrmmation fonctionnelle, alors je ne vois pas le rapport entre ce paradigme et le développement Hadoop.

Sinon, tu dois vouloir parler de développeur connaissant l'aspect métier, le domaine pour lequel il développe une solution... Là, je verrais bien plus le rapport. Mais alors dans ce cas, je te suggère de rectifier la forme car ça porte à confusion!

Ardemius commented 2 years ago

Et pourtant, je parlais bien du paradigme de programmation fonctionnelle 😉

Voici une explication plus détaillée : Quand la "Big Data" faisait le buzz dans les années 2015, c'était surtout en référence au fameux "data lake", on premise à l'époque, sur stack / distro Hadoop. Or Hadoop est composé de 4 briques principales que sont :

Très tôt, MapReduce a été challengé par l'arrivée sur marché du framework Spark, qui promettait des performances bien meilleures car travaillant beaucoup plus en mémoire (le fameux "on va10x plus vite que MapReduce") Or Spark a été initialement écrit en Scala, qui dans ces années était en train d'exploser. Pour rappel, en 2013, Martin Odersky publiait pour la 1ere fois son cours de Scala sur Coursera, et ce dernier allait connaître un grand succès (on peut même dire que c'est CE cours sur Coursera qui a fait décoller le concept de"MOOC"). Or Odersky est prof à l'UPFL et son cours de Scala est en même temps un cours de programmation fonctionnelle (Scala est un langage de programmation fonctionnelle, et je ne débattrai pas ici de son "niveau de pureté fonctionnelle" 😉) A ce moment, on a vu du Scala fonctionnel un peu partout (et donc dans Spark), buzz qui est un peu retombé depuis.

Mais dans l'absolu, pour "manipuler de la Data", l'usage de la programmation fonctionnelle n'est pas le fait d'un seul "buzz", mais est en fait parfaitement justifié. A cette époque les coûts en termes d'I/O étaient très pénalisants (c'est moins le cas maintenant que nous avons davantage de "gros tuyaux" partout...), aussi, plutôt que de faire transiter des Objets (objet = état PLUS comportement, donc pour simplifier un "gros" truc, "lourd à transporter"), il était plus performant de faire uniquement transiter de la data. Et pour cela, la programmation fonctionnelle est très adaptée, car plutôt que des objets, on va beaucoup plus parler de Data (immutable) et de Fonctions (cf Odersky "functions in a FP language are first-class citizens"). On ne va donc plus transporter QUE de la Data, et traiter à la réception (via Functions).

Donc, lors de ce passage à la "BIg Data", nous avons effectivement switcher de paradigme, passant de l'Objet à la Programmation Fonctionnelle 🙂 Je suis dispo pour en débattre sur Teams si cela t'intéresse 🙂

Ardemius commented 2 years ago

Sinon, petite remarque complémentaire, j'ai écrit cette page "big-data-main-roles.adoc" il y a maintenant un bon moment. Pour une description à jour des "rôles de la Data", il faut regarder le doc d'acculturation à la data de 2022 : https://github.com/Ardemius/big-data-resources/blob/master/2022_data-acculturation.adoc#les-acteurs-de-la-data 😉

opportus commented 2 years ago

Hey,

Alors oui, développé comme ça, je comprends mieux ou tu veux en venir.

Je ne débattrai pas l'intérêt de la programmation fonctionnelle en soi, aussi bien dans un contexte Hadoop qu'ailleurs...

Je ne jugerais pas néanmoins un "développeur Hadoop" "bon" sur le base de sa connaissance basique de ce paradigme. Comme tu t'en rends bien compte toi-même, bien plus que ça fait la qualité d'un développeur...

Donc voilà, pour finir de chipoter sur la forme. :smile:

Sinon, petite remarque complémentaire, j'ai écrit cette page "big-data-main-roles.adoc" il y a maintenant un bon moment. Pour une description à jour des "rôles de la Data", il faut regarder le doc d'acculturation à la data de 2022 : https://github.com/Ardemius/big-data-resources/blob/master/2022_data-acculturation.adoc#les-acteurs-de-la-data

Bien-sûr, et j'en ai déjà lu une partie. Merci encore pour ces resources utiles! :+1: