Bonjour, Habr ! Actuellement, il y a une nouvelle session d'inscription pour le cours sur OTUS. à l'approche du lancement du cours, nous avons traditionnellement préparé pour vous la traduction d'un matériel intéressant.
Chaque jour, plus de cent millions de personnes se rendent sur Twitter pour découvrir ce qui se passe dans le monde et en discuter. Chaque tweet et toute autre action de l'utilisateur génÚrent un événement accessible pour l'analyse interne des données sur Twitter. Des centaines d'employés analysent et visualisent ces données, et améliorer leur expérience est la priorité principale pour l'équipe de la plateforme de données de Twitter.
Nous pensons que les utilisateurs ayant une large gamme de compétences techniques doivent pouvoir trouver des données et avoir accÚs à de bons outils d'analyse et de visualisation basés sur SQL. Cela permettrait à un tout nouveau groupe d'utilisateurs moins techniques, y compris les analystes de données et les chefs de produit, d'extraire des informations des données, leur permettant de mieux comprendre et utiliser les opportunités offertes par Twitter. Ainsi, nous démocratisons l'analyse des données sur Twitter.
à mesure que nos outils et capacités d'analyse interne des données s'améliorent, nous avons été témoins d'une amélioration du service Twitter. Cependant, il y a encore du chemin à parcourir. Les outils actuels, tels que Scalding, nécessitent des compétences en programmation. Les outils d'analyse basés sur SQL, tels que Presto et Vertica, rencontrent des problÚmes de performance à grande échelle. Nous avons également un problÚme de diffusion des données entre plusieurs systÚmes sans accÚs permanent à celles-ci.
L'année derniÚre, nous avons annoncé , dans le cadre de laquelle nous transférons une partie de notre sur Google Cloud Platform (GCP). Nous en sommes venus à la conclusion que les outils Google Cloud peuvent nous aider dans nos initiatives de démocratisation de l'analyse, de la visualisation et de l'apprentissage automatique sur Twitter :
- : un entrepÎt de données d'entreprise avec un moteur SQL basé sur , qui est réputé pour sa rapidité, sa simplicité et qui gÚre .
- un outil de visualisation de grandes données avec des fonctionnalités de collaboration, comme dans Google Docs.
Dans cet article, vous découvrirez notre expérience avec ces outils : ce que nous avons fait, ce que nous avons appris et ce que nous ferons ensuite. Nous nous concentrerons maintenant sur l'analyse par lots et interactive. L'analyse en temps réel sera abordée dans le prochain article.
L'histoire des entrepÎts de données sur Twitter
Avant d'approfondir BigQuery, il vaut la peine de résumer briÚvement l'histoire des entrepÎts de données chez Twitter. En 2011, l'analyse des données chez Twitter était réalisée avec Vertica et Hadoop. Pour créer des travaux MapReduce sous Hadoop, nous utilisions Pig. En 2012, nous avons remplacé Pig par Scalding, qui offrait une API Scala avec des avantages tels que la possibilité de créer des pipelines complexes et la simplicité des tests. Cependant, pour de nombreux analystes de données et chefs de produit, qui se sentaient plus à l'aise avec SQL, la courbe d'apprentissage était assez escarpée. Environ en 2016, nous avons commencé à utiliser Presto comme interface SQL pour les données Hadoop. Spark offrait une interface Python, ce qui en faisait un bon choix pour les recherches ad hoc et l'apprentissage automatique.
Depuis 2018, nous avons utilisé les outils suivants pour l'analyse et la visualisation des données :
- Scalding pour les pipelines de production
- Scalding et Spark pour l'analyse ad hoc des données et l'apprentissage automatique
- Vertica et Presto pour l'analyse SQL ad hoc et interactive
- Druid pour l'interaction légÚre, la recherche et l'accÚs à faible latence aux métriques de séries temporelles
- Tableau, Zeppelin et Pivot pour la visualisation des données
Nous avons découvert que, bien que ces outils offrent des fonctionnalités trÚs puissantes, nous rencontrions des difficultés à rendre ces capacités accessibles à un public plus large au sein de Twitter. En élargissant notre plateforme avec Google Cloud, nous nous concentrons sur la simplification de nos outils d'analyse pour l'ensemble de Twitter.
L'entrepÎt de données BigQuery de Google
Plusieurs équipes chez Twitter ont déjà intégré BigQuery dans certains de leurs pipelines de production. En utilisant leur expérience, nous avons commencé à évaluer les possibilités de BigQuery pour tous les cas d'utilisation de Twitter. Notre objectif était d'offrir BigQuery à l'ensemble de l'entreprise, ainsi que de le standardiser et de le soutenir dans le cadre de l'ensemble des outils de la plateforme de données. Cela s'est avéré difficile pour de nombreuses raisons. Nous devions développer une infrastructure pour recevoir de maniÚre fiable de grands volumes de données, prendre en charge la gestion des données à l'échelle de l'entreprise, garantir un contrÎle d'accÚs approprié et assurer la confidentialité des clients. Nous avons également dû créer des systÚmes pour la répartition des ressources, la surveillance et la facturation, afin que les équipes puissent utiliser efficacement BigQuery.
En novembre 2018, nous avons lancĂ© la version alpha de BigQuery et Data Studio pour toute l'entreprise. Nous avons proposĂ© Ă nos employĂ©s Twitter certains de nos tableaux les plus frĂ©quemment utilisĂ©s, contenant des donnĂ©es personnelles anonymisĂ©es. Plus de 250 utilisateurs de diffĂ©rentes Ă©quipes, y compris celles de l'ingĂ©nierie, des finances et du marketing, ont utilisĂ© BigQuery. Plus rĂ©cemment, ils ont effectuĂ© environ 8 000 requĂȘtes, traitant environ 100 Po de donnĂ©es par mois, sans compter les requĂȘtes planifiĂ©es. AprĂšs avoir reçu des retours trĂšs positifs, nous avons dĂ©cidĂ© d'aller de l'avant et de proposer BigQuery comme ressource principale pour l'interaction avec les donnĂ©es chez Twitter.
Voici un schéma de l'architecture de haut niveau de notre entrepÎt de données Google BigQuery.

Nous copions des données depuis des clusters Hadoop locaux vers Google Cloud Storage (GCS) en utilisant notre outil interne Cloud Replicator. Nous utilisons ensuite Apache Airflow pour créer des pipelines qui utilisent «» pour charger des données depuis GCS vers BigQuery. Nous utilisons Presto pour interroger des ensembles de données Parquet ou Thrift-LZO dans GCS. BQ Blaster est un outil interne de Scalding pour charger des ensembles de données HDFS Vertica et Thrift-LZO dans BigQuery.
Dans les sections suivantes, nous discuterons de notre approche et de nos connaissances en matiÚre de facilité d'utilisation, de performance, de gestion des données, de disponibilité du systÚme et de coût.
Simplicité d'utilisation
Nous avons constatĂ© qu'il Ă©tait facile pour les utilisateurs de commencer avec BigQuery, car il ne nĂ©cessitait pas d'installation de logiciel et les utilisateurs pouvaient y accĂ©der via une interface web intuitive. Cependant, les utilisateurs devaient se familiariser avec certaines fonctionnalitĂ©s de GCP et ses concepts, y compris des ressources telles que les projets, les ensembles de donnĂ©es et les tables. Nous avons dĂ©veloppĂ© des supports de formation et des tutoriels pour aider les utilisateurs Ă dĂ©marrer. Avec une comprĂ©hension de base acquise, les utilisateurs ont trouvĂ© facile de naviguer dans les ensembles de donnĂ©es, d'examiner le schĂ©ma et les donnĂ©es des tables, d'exĂ©cuter des requĂȘtes simples et de visualiser les rĂ©sultats dans Data Studio.
Notre objectif concernant l'importation de donnĂ©es dans BigQuery Ă©tait de permettre le chargement fluide d'ensembles de donnĂ©es HDFS ou GCS en un clic. Nous avons envisagĂ© (Airflow gĂ©rĂ©), mais nous n'avons pas pu l'utiliser en raison de notre modĂšle de sĂ©curitĂ© «Partage Restreint au Domaine» (plus de dĂ©tails dans la section «Gestion des donnĂ©es» ci-dessous). Nous avons expĂ©rimentĂ© l'utilisation de Google Data Transfer Service (DTS) pour organiser des tĂąches de charge dans BigQuery. Bien que DTS soit rapide Ă configurer, il n'Ă©tait pas flexible pour construire des pipelines avec des dĂ©pendances. Pour notre version alpha, nous avons créé notre propre environnement Apache Airflow dans GCE et nous le prĂ©parons Ă ĂȘtre opĂ©rationnel en production et capable de prendre en charge davantage de sources de donnĂ©es, comme Vertica.
Pour transformer des donnĂ©es dans BigQuery, les utilisateurs crĂ©ent de simples pipelines de donnĂ©es SQL, en utilisant des requĂȘtes planifiĂ©es. Pour des pipelines complexes avec des dĂ©pendances, nous prĂ©voyons d'utiliser soit notre propre infrastructure Airflow, soit Cloud Composer avec .
Performance
BigQuery est conçu pour des requĂȘtes SQL gĂ©nĂ©rales qui traitent de grands volumes de donnĂ©es. Il n'est pas destinĂ© Ă des requĂȘtes Ă faible latence, Ă haute bande passante, nĂ©cessaires pour une base de donnĂ©es transactionnelle, ou pour l'analyse de sĂ©ries temporelles Ă faible latence, rĂ©alisĂ©e par . Pour des requĂȘtes d'analyse interactive, nos utilisateurs s'attendent Ă un temps de rĂ©ponse de moins d'une minute. Nous devions concevoir l'utilisation de BigQuery de maniĂšre Ă satisfaire ces attentes. Pour garantir des performances prĂ©visibles pour nos utilisateurs, nous avons utilisĂ© les fonctionnalitĂ©s de BigQuery disponibles pour les clients sur un paiement fixe, qui permettent aux propriĂ©taires de projets de rĂ©server des slots minimum pour leurs requĂȘtes. BigQuery est une unitĂ© de puissance de calcul nĂ©cessaire pour l'exĂ©cution de requĂȘtes SQL.
Nous avons analysĂ© plus de 800 requĂȘtes traitant environ 1 To de donnĂ©es chacune et avons constatĂ© que le temps d'exĂ©cution moyen Ă©tait de 30 secondes. Nous avons Ă©galement dĂ©couvert que la performance dĂ©pendait fortement de l'utilisation de notre crĂ©neau dans divers projets et tĂąches. Nous devions clairement diffĂ©rencier nos rĂ©serves de crĂ©neaux de production et ad hoc pour maintenir la performance dans les scĂ©narios d'utilisation en production et l'analyse interactive. Cela a eu un impact important sur notre conception de la rĂ©servation de crĂ©neaux et de la hiĂ©rarchie des projets.
Nous aborderons la gestion des donnĂ©es, les fonctionnalitĂ©s et les coĂ»ts des systĂšmes dans les prochains jours lors de la deuxiĂšme partie de la traduction, mais pour l'instant, nous invitons tous les intĂ©ressĂ©s Ă participer Ă , au cours duquel vous pourrez en apprendre davantage sur le cours et poser des questions Ă notre expert â Egor Mateshuk (Senior Data Engineer, MaximaTelecom).
Lire aussi :
Source : habr.com
