Note de lecture : Big Data, par Nathan Marz avec James Warren

Note : 4 ; Un apprentissage un peu rugueux de la Lambda architecture inventée par l’auteur.

Ce livre était assez attendu, car il faut dire que Nathan Marz est une figure du monde du Big Data, il est l’architecte du framework Storm (entre autre) et l’une des figures de l’architecture de Twitter où il a pu développer le concept de la Lambda Architecture. C’est d’ailleurs ainsi qu’aurait dû s’appeler le livre : Lambda Architecture ! Car il est exclusivement question de cela, le texte était découpé de manière à refléter la progression dans les couches de l’architecture. Les éléments importants de celle-ci ?

  • Requête = fonction (toutes les données) ; Ce point de vue, l’auteur ne cesse de le marteler au fil des pages.
  • Un système Big Data doit être immutable, c’est le seul moyen de le rendre résistant aux erreurs humaines et aux erreurs de traitement. Un système immutable permet de retraiter les données.
  • Le system Big Data est composé d’une « batch layer » qui donne des données juste, mais avec un temps de latence important, et d’une « speed layer » rapide mais donnant potentiellement des informations moins justes.

Le livre en lui-même est composé de 3 parties qui totalisent 18 chapitres couvrant 300 pages. Le découpage en parties reflète les couches de la Lambda architecture. Seul le 1er chapitre est hors de ces parties, ses 23 pages décrivent dans les grandes lignes la Lambda Architecture. Ce chapitre permet de se faire une idée de la structure de l’architecture, mais pas de la manière dont cela fonctionne, les principes exposés restent de trop haut niveau.

La 1ère partie couvre la « batch layer ». Avec 175 pages (donc plus de la moitié du livre) et 8 chapitres, c’est évidemment la partie la plus importante du livre. Cette partie commence par les concepts du modèle de données au chapitre 2, couvrant 20 pages. Si on n’y trouve rien de très complique, j’ai un peu de mal à voir où l’auteur veut en venir car le propos est réellement abstrait. Une tendance qui ne fera hélas que se confirmer au fil des chapitres « concept ». Le chapitre 3 fait le pendant de celui-ci en proposant une implémentation du concept exposé à l’aide de structures Thrift. Certes le chapitre ne compte que 6 pages, mais on est descendu de 5 étages dans les abstractions !

Après la modélisation, le stockage, c’est l’objet du chapitre 4 qui évoque sur une douzaine de pages le concept de système de fichiers distribué. Un chapitre assez plaisant. Comme il se doit, le chapitre suivant évoque l’implémentation de la chose avec HDFS, ce qui était prévisible, mais surtout avec Pail, ce qui l’était moins ! Cette abstraction au-dessus de HDFS a été créé par Nathan Marz, ceci explique cela… Mais le chapitre en lui-même est ardu et austère !

Le chapitre 6 qui traite du cœur de la batch layer est l’un des plus important du livre. Il compte 30 pages et tourne bien sûr autour du map-reduce et des problématiques qui lui sont connexes, comme la scalabilité. Un chapitre assez bien fait et relativement clair en prenant en compte l’aspect toujours un peu rugueux du propos de l’auteur ! On y introduit entre autre les « pipe diagrams » qui seront utile au long du livre et qui font ressembler le Big Data aux problématiques ETL. Un éclairage intéressant. Le chapitre 7 qui illustre cela est presque aussi long et propose une implémentation avec JCascalog (autre framework écrit par l’auteur). L’implémentation du pipe diagramme avec des prédicats est assez élégante, au contraire du propos de l’auteur qui est assez confus.

Le chapitre 8 est dans la lignée de ce volet traitement, avec un aspect algorithme. C’est assez catastrophique, les explications sont compliquées, même embrouillées peu aidées par des diagrammes inadapté. L’un des point intéressant de ce chapitre est l’algorithme HyperLogLog qui ne bénéficie d’absolument aucune explication ni illustration ! Une quinzaine de pages très pénibles, la vingtaine du chapitre 9 qui suit ne l’est pas moins !

La seconde partie traite de la « serving layer ». C’est la plus courte avec 2 chapitres et 25 pages. Le chapitre 10, comme il est maintenant de coutume adresse la partie théorique. L’objectif est un peu flou : on y évoque la dénormalisation et HyperLogLog (toujours sans la moindre once d’explication). Une quinzaine de pages pas déplaisantes si ce n’est que je n’ai pas compris ce que l’auteur essayait de me dire ! La dizaine de pages du chapitre 11 qui cherche à illustrer la serving layer tourne autour de l’illustration avec ElephantDB. Je vous laisse deviner qui en est l’auteur…

Ce sont 6 chapitres sur 80 pages qui sont accordées à la « speed layer ». Les principes de bases de la Real-Time view sont exposés au sein des chapitres 12 et 13 (je ne sais pas pourquoi l’auteur les a séparés). Comme d’habitude cela reste assez stratosphérique.

Au chapitre 14 on rentre dans le dur avec le « Stream Processing ». Si ce chapitre se veut théorique, il calque tellement Storm que faire la différence avec le chapitre 15 qui propose l’implémentation est presque sans objet. Finalement, les deux chapitres offrent un traitement de Storm un peu au-dessus du standard de l’auteur, mais moins bon que le « Storm Applied » ! Les chapitres 16 et 17 qui totalisent à eux deux une trentaine de pages pour aborder le micro-batching avec Spark sont bien moins claires. La comparaison « stream versus micro-batching » me laisse dans l’expectative.

Le livre se referme sur le chapitre 18 qui nous propose des considérations de scaling pour la Lambda Architecture. Nathan Marz aborde le sujet sus l’angle mathématique (probablement pour éviter tout sentiment de facilité) mais met en lumière grâce à cela quelques éléments d’effet de levier plutôt intéressant.

Au final le livre est une déception. L’auteur échoue à donner de la clarté à son propos et s’enfonce top souvent sur des complexités locales d’implémentation. Il ne parvient pas non plus à conceptualiser correctement la Lambda architecture. Le texte n’est pas non plus sans intérêt car Nathan Marz n’est pas n’importe qui. On peut picorer des bribes d’information au fil des pages.

Big Data, par Nathan Marz

Référence complète : Big Data – Nathan Marz & James Warren – Manning 2015 – ISBN : 978 1 617290 34 3

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s