Alors, un article de blog très conjectural, sans trop donner de fait, mais pour parler de talend big data comme complément de spark, ou l'inverse.

Présentation

Talend Big Data est un ETL qui contient des composants big data. Vous prenez des composants déjà écrits, et vous les reliez entre eux comme ça :

Comme Talend a déjà pensé à tout, vous pouvez personnaliser en fonction des environnements (notion de contexte) et vous pouvez écrire du Java dans des composants (tjava). Pour un composant JDBC, par exemple, vous précisez la requête et les méta données (les colonnes et les types) et vous avez un composant source qui va lire de la donnée. Voici un exemple coté GUI de ce qu'on va vous demander de mettre comme information pour lire une table en Hive (à commencer bien sûr par le nom de la table). Vous avez le contexte qui est une sorte de variable statique par job.

Comme vous avez des composants de transformation (des maps) et des composants d'écriture (par exemple dans un fichier). Développer devient donc essentiellement déplacer des cases sur une palette, personnaliser les éléments du composant (par exemple le path d'un composant tfileinput qui lit un fichier) et les relier avec des flêches. C'est ludique comme tout, et si mon client a fait ce choix, c'est pour deux raisons :

  • c'est tellement simple à apprendre qu'une personne est opérationnelle en peu de temps
  • la plupart de ses jobs sont des déplacements de données faibles en volumes, avec des transformations somme toute triviales (dégager des guillemets, petits calculs pas violents)

Donc, pour mon client, ça permet de se concentrer sur la valeur métier. Et ça, le métier aime. Pour le déployer, c'est un clic droit (ou gauche), deux éléments à cliquer, et vous avez un énorme zip qui contient du code java, les jars nécessaires à l'exécution, la configuration, etc. L'administration se fait via une TAC (Talend Administration Console) qui vous permet de voir le statut des jobs, éventuellement de les ordonnancer, et surtout de voir les logs ou erreurs. Attention à un aspect primordial et contre intuitif : un job talend utilise le cluster pour des traitements big data mais ne va pas lui même tourner sur le cluster. Il est lancé en tant que JVM indépendante, potentiellement sur une machine qui a accès au cluster mais qui n'est pas du cluster. 

Avantages et inconvénients

Les avantages sont les suivants, à mon avis :

  • vous développez à toute vitesse. Une nouvelle personne dans l'équipe rentre dans le code en deux temps trois mouvements, et elle est souvent séduite par la partie visuelle.
  • les tarifs sont abordables, mais je ne peux pas m'étendre sur le sujet (confidentialité client)
  • Les performances sont bonnes pour des petits jobs, ce qui est le cas de mon client

Les inconvénients sont :

  • La mise en place de tests unitaires est particulièrement laborieuse : jobs à part ? Contexte à part ?
  • Le code généré est celui qui va s'exécuter, donc pour faire le lien entre un composant et la ligne 17823 qui sort une null pointer exception, ce n'est pas facile. Le code généré est lisible avec de l'expérience, mais pas non plus agréable. En fait, c'est un peu ce qui rend pénible le debug.
  • C'est lassant. C'est un vrai problème pour l'équipe qui connait un très fort turn over. Mais prendre des bacs + 5 expérimentés pour leur faire déplacer des cases et des flèches toute la journée, c'est du gâchis. Et avec la demande sur les profils expérimentés big data, les voilà tou-te-s parti-e-s se régaler à faire du spark ailleurs. Si vous voulez vendre une mission avec du talend, il faudra viser du très junior.

Talend vs Spark ?

Et en toute logique, se pose la question de savoir quoi préférer : Talend ou Spark ? Mon client et moi sommes d'accord pour dire : Spark avec parcimonie pour ne pas tuer le cluster sous le poids de jobs hyper gourmands, et les jobs les plus simples en talend. Spark et sa vitesse, mais qui a la mauvaise habitude de prendre une RAM absolument colossale, est utile pour les gros volumes. Par gros volumes, je veux dire ce qui ne rentre pas sur une seule VM, ce qui est le défaut majeur de talend pour le big data. Pour les petits jobs, Talend a l'avantage d'avoir sur le cluster une empreinte minime, ce qui est tout à son avantage.

 

Comments are closed.

Set your Twitter account name in your settings to use the TwitterBar Section.