Les coulisses techniques de Twitter Big Data : un cluster Hadoop de plus de 4000 nœuds

Le Big Data est au cœur du business model de Twitter. Pour réaliser ses études, Twitter présente l'originalité de disposer à la fois d'un cluster Hadoop mais aussi d'une base de données classique Vertica dédiée aux analystes à partir de requêtes SQL. L'essentiel des traitements Big Data sont réalisés sur un vaste cluster Hadoop alimenté par les bases MySQL du service ainsi que par les logs générés par l'activité des utilisateurs. Twitter utilise notamment le logiciel Scribe, provenant de Facebook, pour collecter ces informations.

96 Po de données stockées sur Hadoop

En 2010, l'équipe analytique de Twitter se composait d'une centaine de personnes qui exploitaient un cluster Hadoop de 30 nœuds avec quatre Data Scientists. Aujourd'hui le cluster Hadoop est passé à plus de 4000 nœuds pour 96 Po de données stockées. Plus de 100 To sont injectés chaque jour dans cette architecture qui est exploitée par plusieurs dizaines d'équipes. Plus de 10 000 opérations de Map/Reduce sont réalisées chaque jour sur ce cluster.

processus technique de data pipeline.
Processus technique de Data Pipeline. © Twitter

Outre les analyses en mode batch, les Data Scientist disposent d'une plateforme interne baptisée TSAR (pour TimeSeries Aggregator) qui collecte les données de fonctionnement du service en temps réel. La plateforme délivre les tableaux de chaque utilisateur (voir analytics.twitter.com), mais aussi les tableaux de bord internes portant sur l'état du service. L'équipe de production, le "Twitter Command Center", peut ainsi visualiser les pics de trafic ou encore les anomalies pouvant affecter les utilisateurs. Ces données permettent en outre de planifier les capacités du service, etc. Par exemple, c'est la plateforme TSAR qui calcule le nombre d'impressions d'un tweet depuis le moment où il a été publié.

Toutes les donnée stockées dans le data lake de Twitter doivent se conformer à un schéma unique géré avec la solution Apache Thrift qui permet notamment d'accéder aux données quel que soit le langage de programmation utilisé.