Hadoop en quelques questions – avec Juvénal CHOKOGOUE

Le livre « Hadoop – Devenez opérationnel dans le monde du Big Data » est sorti en avril dernier.
Il a pour but d’aider les lecteurs à monter en compétence sur les technologies du Big Data et à les préparer à bénéficier des opportunités offertes par la nouvelle économie Numérique. En substance, l’ouvrage explique les nouvelles approches de traitement des données à large échelle, le stockage distribué des données, l’exécution du SQL sur Hadoop, les approches de traitement des données en streaming et temps réel, et enfin les caractéristiques de l’ère Numérique et les actions à mener pour saisir ses opportunités.

L’auteur, Juvénal CHOKOGOUE, a accepté de répondre à nos questions.

1) Bonjour Juvénal, vous êtes l’auteur du livre « Hadoop – Devenez opérationnel dans le monde du Big Data » sorti en avril dernier. Ce livre s’adresse à un public très large. Pouvez-vous décrire, en vous basant sur votre expérience, comment se passe un projet Hadoop et quels talents sont mobilisés ?

Bonjour David, bien sûr ! Hadoop est utilisé dans les projets qualifiés de « Big Data » pour aider les entreprises à traiter leurs volumes massifs de données.
A ce jour, il n’y a pas de consensus arrêté pour caractériser ce qu’est un projet « Big Data », mais en général ce sont des projets de traitement et de valorisation de données pour la détection de nouvelles opportunités pour l’entreprise.

Ce type de projet requiert plusieurs types de talents, spécialement :

  • les managers, qui définissent l’orientation du projet et mettent à disposition le budget nécessaire pour conduire le projet
  • les chefs de projet, pour superviser l’exécution du projet et sa livraison dans les délais impartis
  • les chargés de MOA pour la définition des uses cases métiers à implémenter et la vérification de la conformité des applications développées aux exigences métiers
  • les data engineers, pour le développement des applications de d’intégration et de traitement de données
  • les data scientists pour le développement de modèles statistiques et de machine Learning qui font parler les données
  • les architectes et les administrateurs pour l’administration de la plateforme Hadoop

Notez que toutes ces compétences ne sont pas nécessairement requises pour tous les projets Big Data, tout dépend des objectifs de l’entreprise, de son budget et de son management. Dans certains projets, Hadoop est juste utilisé pour développer des PoC, auquel cas il n’est pas nécessaire de mobiliser toutes ces compétences.

2) Hadoop est-il synonyme de grande équipe ? En matière de sécurité, quels droits pour chacune des personnes impliquées ?

Pas nécessairement. Comme nous l’avons souligné en filigrane dans le point précédent, tout dépend du niveau de maturité de l’entreprise vis-à-vis de la façon dont elle peut utiliser les données pour améliorer sa performance, détecter et saisir de nouvelles opportunités.

Par rapport à cela, on note deux grandes tendances : d’une part les entreprises qui pour le moment utilisent Hadoop pour tester des hypothèses, c’est ici qu’on retrouve des PoC (Proof of Concept).
Dans ce cas, il n’y a pas besoin d’une grande équipe. Et d’autre part, il y a  les entreprises  qui sont résolument tournées vers le futur, les entreprises qui ont réalisé que les données pouvaient être un levier d’amélioration de leur business.
Dans ce cas de figure, les projets Hadoop sont mis en production et des équipes multidisciplinaires de grande taille sont nécessaires pour faire fonctionner Hadoop à large échelle.

En matière de sécurité, les politiques restent globalement les mêmes que celles qui sont utilisées traditionnellement : les utilisateurs sont regroupés selon leurs fonction et des droits leur sont affectés par rapport à la plateforme Hadoop. Vous aurez des droits différents selon que vous soyez administrateur, Data Scientist ou chargé de MOA.  Après, Hadoop possède son propre mécanisme de sécurité : l’authenfication Kerberos, qui permet de crypter les transferts de données entre les nœuds du cluster.

3) On parle beaucoup de Data Science mais Hadoop semble complexe à mettre en place, monitorer, sécuriser, …    Quels sont les profils qui sont indispensables quand on a un cluster Hadoop ?

Avant de répondre à cette question, je voudrais faire une petite remarque : Hadoop n’est pas nécessairement complexe à mettre en place, monitorer et sécuriser. Tout dépend de la stratégie que l’entreprise adopte.
Comme nous l’avons mentionné dans l’ouvrage, effectivement Hadoop a été conçu à la base pour les développeurs, mais la fondation Apache s’est très vite rendu compte que l’adoption à grande échelle d’Hadoop ne dépend pas des développeurs, mais des métiers.
C’est pourquoi elle a mis à disposition du grand public un ensemble d’outils destinés à faciliter l’adoption d’Hadoop : l’écosystème Hadoop.
Au-delà de l’écosystème Hadoop, une entreprise peut très bien passer par une distribution Hadoop comme CDH de Cloudera, HDP d’Hortonworks ou CDP de MapR pour s’épargner de toute la complexité de la mise en œuvre d’Hadoop.
Maintenant pour revenir à votre question, 2 types de profils travaillent sur Hadoop.

On a en amont :

  • les profils architectes/administrateurs ; ce sont ceux-ci qui s’assurent que Hadoop est aligné avec les autres outils du système informatique de l’entreprise (les architectes) et administrent le cluster Hadoop (gestion des droits, réapprovisionnement des nœuds du cluster, monitoring, etc.)
  • les administrateurs.

Et en aval :

  • les « exploitants de la données ». Ce sont tous ceux qui utilisent Hadoop et son écosystème technologique pour développer des applications d’intégration de données, de nettoyage, de transformation de données et de valorisation des données. C’est ici qu’on retrouve principalement les data Scientists et les data Engineers.

4) Un projet Hadoop, forcément un seul langage ? Ou est-il possible  d’avoir plusieurs jobs dans des langages différents ?

Comme nous l’avons dit plus haut, Apache a mis à disposition du marché l’écosystème Hadoop, un ensemble d’outils qui facilitent l’utilisation d’Hadoop. Dans cet écosystème, vous retrouvez des outils comme HiveQL, Pig, HBase, Sqoop, Oozie et plein d’autres outils.
Ces outils fonctionnent avec des langages différents.
Ainsi, vous pouvez avoir plusieurs jobs dans des langages différents.

 

5) Hadoop, combien de tâches massives est-il possible de gérer en parallèle ?

Dans la version 1 d’Hadoop, le nombre de tâches massives maximum qu’il était possible de gérer en parallèle était de 4000.
Aujourd’hui, avec la version 2 d’Hadoop et l’apparition du YARN, le nombre de tâches qui peut s’exécuter en parallèle est théoriquement illimité et dépend uniquement du nombre de nœuds de votre cluster Hadoop et des ressources (quantité de RAM, vitesse de CPU, stockage du disque dur, I/O, etc.) de chacun de ses nœuds.

 

6) Business Intelligence et Hadoop, est-ce le même monde ? Une personne spécialisée en BI sera-t-elle perdue dans un monde Big Data ?

On va dire que c’est le même but, mais ce n’est pas la même approche.

En business Intelligence, on cherche à améliorer la performance selon le schéma classique :

 

Avec Hadoop, on est dans une approche massivement parallèle où Hadoop fait office aussi bien de socle de stockage que de moteur de traitement. Une personne spécialisée en BI en fonction de sa préférence (ETL, OLAP, Reporting) aura plus ou moins de mal à monter en compétence en Big Data. Après, tout dépend. Il est tout à fait possible de transférer sa préférence de la BI au Big Data. Par exemple, si en BI vous étiez spécialisé sur l’écriture des requêtes, il vous sera facile  de vous spécialiser sur l’écriture des requêtes SQL en Hadoop.
En fait, l’apprentissage en Big Data se fait selon un profil métier. Il vous faut juste choisir le profil métier qui vous convient et suivre les recommandations que nous donnons pour développer vos compétences.
Dans notre ouvrage, nous présentons ces profils métiers (il y’en a 6) et nous donnons les instructions nécessaires pour faire la transition vers le Big Data.

 

7) Pour vous, Hadoop est-il quelque chose qu’on peut utiliser pour un besoin ponctuel ? C’est à dire en mode cloud qui nous permet d’utiliser un nombre de machines important seulement le temps du projet ?

Ma réponse est oui ! Le cloud est aujourd’hui une solution mature et vous pouvez tout à fait utiliser Hadoop en souscrivant à un abonnement Cloud chez un fournisseur comme Microsoft avec son offre Azure HDInsights ou Amazon EMR.
Dans notre second ouvrage qui va bientôt paraître, nous vous indiquons justement les 7 critères sur lesquels vous devez vous appuyez pour sélectionner votre offre Hadoop en Cloud. Nous y analysons très succinctement les offres Azure HDInsights et Amazon EMR.

 

8) Quand peut-on dire qu’on est sur un projet Hadoop ? Combien de machines au minimum pour un projet Hadoop ?

On peut dire qu’on est sur un projet Hadoop lorsqu’on utilise Hadoop pour développer des applications qui valorisent les données de l’entreprise !
Il n’y a pas de normes en matière de nombre de machines, tout dépend du besoin métier et du budget de l’entreprise.
Yahoo! possède un cluster de plus de 4000 machines, tandis que j’ai eu à travailler sur des projets où le client avait un cluster de moins de dix machines. Donc, le nombre de nœuds ou machines n’est qu’une considération de performance et n’est absolument pas un prérequis pour utiliser Hadoop. Vous pouvez même vous créer un cluster de 3 machines !

 

9) Hadoop et développement… Quelles sont les bonnes pratiques quand on met en place un job Hadoop ? Comment être certain que le job fait bien  ce qu’on pense ?    Fait-on des tests unitaires dans un projet Hadoop ?

Un job Hadoop est la plus petite unité de tâche qui peut être exécutée sur Hadoop.
Généralement, il s’agit d’une tâche qui s’exécute sur un cluster Hadoop, par exemple un programme MapReduce, un script Hive, etc.
Tout job consiste en trois choses :

  • le ficher de données à traiter
  • le programme en question
  • les informations de configuration

Les bonnes pratiques dans l’exécution d’un Job Hadoop consiste à bien définir :

  • le facteur de réplication (le nombre de fois que les données sont répliquées sur le cluster, 3 par défaut)
  • la taille de blocs des fichiers (64 Mo par défaut)
  • le nombre de processus démarrés sur les nœuds de calcul pour exécuter le programme du job (les tasktrackers)

Pour être certain que le job fait bien ce qu’on pense, il faut  tester le script en développement avant de le mettre en production.
Oui, des tests unitaires se font en Hadoop. Avant de mettre un programme en production, on teste son fonctionnement dans un cluster de développement.
Ce cluster de développement est généralement un ensemble de machines virtuelles.
Après, il faut savoir aussi que comme nous sommes dans un contexte distribué, la précision des tests unitaires dépend du caractère idempotent ou pas du programme.
Certains programmes (comme les fonctions MapReduce) renvoient toujours le même résultat qu’ils soient exécutés une ou plusieurs fois, auquel cas ils sont qualifiés d’idempotents.
Pour ce type de programme, les tests unitaires sont fiables. Mais pour d’autres programmes, le temps peut influer sur leurs résultats et même leur fonctionnement, auquel cas ils doivent être suivis continuellement même après avoir été mis en production. C’est cela qui nous a poussé à consacrer tout un chapitre au streaming et temps réel dans l’ouvrage (le chapitre 8). Dans ce chapitre, vous comprendrez plus en profondeur l’impact de l’idempotence dans les résultats des tests unitaires et dans les traitement distribués en général.

 

10) Comment monitorer un job Hadoop ? Qui est alerté en cas d’erreur ? Combien de temps pour réagir en cas de plantage ?

Alors, ce qu’il faut savoir c’est qu’il existe des outils de monitoring d’un cluster comme Ambari qui permettent de suivre le fonctionnement du cluster en temps réel et de détecter des anomalies qui surviennent.
Il est donc tout à fait possible d’utiliser Ambari pour suivre Hadoop de manière générale.
En ce qui concerne la gestion des jobs, vous devez savoir qu’Hadoop possède 2 mécanismes inhérents et automatiques pour gérer les erreurs (les pannes) : le mécanisme d’heartbeat call et le mécanisme d’exécution spéculative.
Vous trouvez plus de détails à ce propos dans le chapitre 4 de l’ouvrage.
Globalement, grâce  à l’heartbeat call (des ping réseau), Hadoop est capable de détecter les nœuds de calcul qui sont tombés en panne pendant l’exécution de leur tâche, ce qui lui permet de replanifier automatiquement l’exécution de leur tâche sur d’autres nœuds.
Grâce à l’exécution spéculative, Hadoop est capable d’identifier les tâches retardataires  qui empêchent le job de se terminer et les relancer.
Ces deux mécanismes font d’Hadoop un système automatiquement tolérant aux pannes et font qu’on n’a pas nécessairement besoin d’une intervention humaine s’il y a un problème. Après, si l’erreur provient du code (par exemple, erreur de syntaxe dans le script), alors la console de suivi des jobs de HUE, l’outil graphique d’utilisation d’Hadoop permet de les détecter et de les corriger facilement.

 

11) Pensez-vous qu’Hadoop pourra être totalement délaissé dans le futur ?

Vous savez, un contemporain a dit une fois que l’art de la prédiction est extrêmement difficile surtout en ce qui concerne la technologie, ce qui est vrai. Toutefois, nous avons la certitude qu’Hadoop va devenir la plateforme standard de traitement de données un peu comme Excel l’est devenu dans les années 90. Pourquoi ? Tout simplement parce que l’expérience a montré à maintes reprises et continue de montrer que l’adoption à large échelle d’une technologie dépend des métiers, et non des développeurs.
C’est sûrement guidé par ce constat que Bob Metcalfe a énoncé sa fameuse loi qui porte son nom : « la valeur d’une technologie est proportionnelle au carré du nombre de personnes qui l’utilise ». Ainsi, pour reconnaître les technologies  du futur, il faut juste voir si elles remplissent les conditions pour être adoptées à grande échelle par les utilisateurs métiers.
La condition sinéquanone d’adoption d’un technologie à large échelle est la transparence à l’utilisateur. En d’autres termes, pour qu’une technologie soit adoptée à large échelle, il ne faut pas qu’elle requiert à l’utilisateur plus de compétences qu’il n’en possède.
Aujourd’hui, le SQL est un langage très transparent et très utilisé par les métiers. Ainsi, pour qu’une technologie de données les séduisent, il faut absolument qu’elle leur donne la possibilité d’utiliser le SQL. En plus d’être mature et stable,  Hadoop est l’une des rares technologies du Big Data complètement intégrée au SQL, ce qui fait qu’elle ne risque pas d’être délaissée d’aussitôt !

 

12) On dit que Spark permet de traiter les données au moins dix fois plus vite qu’en utilisant Hadoop et ce avec un certain niveau d’abstraction.  Utiliser Hadoop et devoir implémenter les tâches Map-Reduce est-il toujours nécessaire / actuel ?

Oui Spark est très rapide, les statistiques des tests font état d’une rapidité 10 fois supérieure à un job MapReduce classique.
Par contre,  que cette rapidité ne vous leurre pas ! Spark et le MapReduce n’ont pas été créés pour le même besoin.
Le MapReduce a été conçu pour l’exécution des travaux batch, c’est-à-dire les travaux qui s’exécutent sur disque, tandis que Spark a été conçu pour l’exécution des travaux interactifs (les travaux qui s’exécutent en mémoire).
Lorsqu’on exécute des travaux en batch, c’est en général pour faire des prétraitements qui seront utilisés ultérieurement (un peu comme les ETL qui pré-traitent et chargent les données dans le Data Warehouse à certaines périodes de la soirée). Lorsqu’on exécute des travaux en interactif, c’est pour des traitements qui seront consommés de suite. L’horizon temporel des 2 modèles n’est donc nativement pas le même. A moins que les entreprises n’aient plus besoin de faire des prétraitements utilisés ultérieurement (ce qui m’étonnerait beaucoup compte tenu de la volumétrie des données collectée chaque jour), il y a de forte chance que  le MapReduce soit encore nécessaire.

 

13) Que conseillez-vous à une personne débutante dans cet univers ?

La première chose que je conseillerais à quelqu’un qui veut se lancer dans le Big Data c’est de se procurer l’ouvrage « Hadoop – Devenez opérationnel dans le monde du Big Data » J

Sinon, plus sérieusement, si vous voulez monter en compétence dans l’univers d’Hadoop et le Big Data, nous vous recommandons de choisir votre profil métier et de développer les compétences exigées par ce profil métier. Cela vous permettra de ne pas disperser vos efforts et d’être spécialisé sur un métier du Big Data bien précis.
A titre de rappel, les 6 profils métiers que vous retrouverez d’ailleurs dans notre ouvrage sont les suivants :

  • Data Engineer
  • Data Scientist
  • Développeur
  • Architecte
  • Administrateur
  • Growth Hacker

Dans l’ouvrage, nous présentons ces profils métiers donnons les recommandations nécessaires (formations, certifications, aptitude, orientation, demande sur le marché, exigences, etc.)  pour faire la transition vers ces profils.  Sinon, j’ai rédigé un billet sur le Parisien Etudiant et le MagIT qui traite en détail ces 6 profils métiers. Consultez-le si vous souhaitez décider de votre profil métier.

On remercie Juvénal CHOKOGOUE pour le temps qu’il nous a accordé et ses réponses détaillées.
N’hésitez pas à vous procurer son livre : « Hadoop – Devenez opérationnel dans le monde du Big Data ».

@ Bientôt sur DataSciencePost