Outils de traitement des requĂȘtes OLAP pour le Big Data





introduction



Cet article est une compilation d' un autre article . Dans ce document, j'ai l'intention de me concentrer sur les outils de travail avec le Big data axés sur l'analyse des données.



Donc, disons que vous avez acceptĂ© les donnĂ©es brutes, les avez traitĂ©es et qu'elles sont maintenant prĂȘtes pour une utilisation ultĂ©rieure.



Il existe de nombreux outils utilisĂ©s pour manipuler les donnĂ©es, chacun ayant ses propres avantages et inconvĂ©nients. La plupart d'entre eux sont orientĂ©s OLAP, mais certains sont Ă©galement optimisĂ©s OLTP. Certains d'entre eux utilisent des formats standards et se concentrent uniquement sur l'exĂ©cution des requĂȘtes, d'autres utilisent leur propre format ou stockage pour transfĂ©rer les donnĂ©es traitĂ©es vers la source afin d'amĂ©liorer les performances. Certains sont optimisĂ©s pour stocker des donnĂ©es Ă  l'aide de certains schĂ©mas, tels que des Ă©toiles ou des flocons de neige, mais d'autres sont plus flexibles. En rĂ©sumĂ©, nous avons les oppositions suivantes:



  • EntrepĂŽt de donnĂ©es et lac
  • Hadoop vs stockage hors ligne
  • OLAP contre OLTP
  • Moteur de requĂȘte et mĂ©canismes OLAP




Nous examinerons Ă©galement les outils de traitement des donnĂ©es avec la possibilitĂ© d'exĂ©cuter des requĂȘtes.





Outils de traitement de données



La plupart des outils mentionnĂ©s peuvent se connecter Ă  un serveur de mĂ©tadonnĂ©es comme Hive et exĂ©cuter des requĂȘtes, crĂ©er des vues, etc. Ceci est souvent utilisĂ© pour crĂ©er des niveaux de rapport supplĂ©mentaires (amĂ©liorĂ©s).



Spark SQL fournit un moyen de mĂ©langer de maniĂšre transparente des requĂȘtes SQL avec des programmes Spark, afin que vous puissiez mĂ©langer l'API DataFrame avec SQL. Il dispose d'une intĂ©gration Hive et d'une connexion JDBC ou ODBC standard, ce qui vous permet de connecter Tableau, Looker ou tout autre outil de BI Ă  vos donnĂ©es via Spark.







Apache Flinkfournit Ă©galement l'API SQL. Le support SQL de Flink est basĂ© sur Apache Calcite, qui implĂ©mente le standard SQL. Il s'intĂšgre Ă©galement Ă  Hive via HiveCatalog. Par exemple, les utilisateurs peuvent stocker leurs tables Kafka ou ElasticSearch dans Hive Metastore Ă  l'aide de HiveCatalog et les rĂ©utiliser ultĂ©rieurement dans les requĂȘtes SQL.



Kafka fournit également des fonctionnalités SQL. En général, la plupart des outils de traitement de données fournissent des interfaces SQL.



Outils de requĂȘte



Ce type d'outil est axĂ© sur une requĂȘte unifiĂ©e vers diffĂ©rentes sources de donnĂ©es dans diffĂ©rents formats. L'idĂ©e est d'acheminer les requĂȘtes vers votre lac de donnĂ©es Ă  l'aide de SQL comme s'il s'agissait d'une base de donnĂ©es relationnelle rĂ©guliĂšre, bien qu'elle prĂ©sente certaines limitations. Certains de ces outils peuvent Ă©galement interroger des bases de donnĂ©es NoSQL et bien plus encore. Ces outils fournissent une interface JDBC Ă  des outils externes tels que Tableau ou Looker pour se connecter en toute sĂ©curitĂ© Ă  votre lac de donnĂ©es. Les outils de requĂȘte sont l'option la plus lente, mais offrent la plus grande flexibilitĂ©.



Apache Pig: l'un des premiers outils aux cĂŽtĂ©s de Hive. PossĂšde son propre langage autre que SQL. Une caractĂ©ristique distinctive des programmes crĂ©Ă©s par Pig est que leur structure se prĂȘte Ă  une parallĂ©lisation importante, qui, Ă  son tour, leur permet de traiter de trĂšs grands ensembles de donnĂ©es. Pour cette raison, il n'est toujours pas obsolĂšte par rapport aux systĂšmes SQL modernes.



Presto: Une plateforme open source de Facebook. Il s'agit d'un moteur de requĂȘte SQL distribuĂ© permettant d'effectuer des requĂȘtes analytiques interactives sur des sources de donnĂ©es de toute taille. Presto vous permet d'interroger des donnĂ©es oĂč qu'elles se trouvent, y compris Hive, Cassandra, des bases de donnĂ©es relationnelles et des systĂšmes de fichiers. Il peut interroger de grands ensembles de donnĂ©es en quelques secondes. Presto est indĂ©pendant de Hadoop, mais s'intĂšgre Ă  la plupart de ses outils, en particulier Hive, pour exĂ©cuter des requĂȘtes SQL.



Forage Apache: Fournit un moteur de requĂȘte SQL sans schĂ©ma pour Hadoop, NoSQL et mĂȘme le stockage dans le cloud. Cela ne dĂ©pend pas de Hadoop, mais il a de nombreuses intĂ©grations avec des outils d'Ă©cosystĂšme comme Hive. Une seule requĂȘte peut combiner les donnĂ©es de plusieurs stockages, en effectuant des optimisations spĂ©cifiques Ă  chacun d'entre eux. C'est trĂšs bien car permet aux analystes de traiter toutes les donnĂ©es comme un tableau, mĂȘme s'ils lisent rĂ©ellement le fichier. Drill prend entiĂšrement en charge le SQL standard. Les utilisateurs mĂ©tier, les analystes et les data scientists peuvent utiliser des outils de Business Intelligence standard tels que Tableau, Qlik et Excel pour interagir avec des magasins de donnĂ©es non relationnelles Ă  l'aide des pilotes Drill JDBC et ODBC. Outre,Les dĂ©veloppeurs peuvent utiliser la simple exploration de l'API REST dans leurs applications personnalisĂ©es pour crĂ©er de superbes visualisations.



Bases de données OLTP



Bien que Hadoop soit optimisĂ© pour OLAP, il existe toujours des situations dans lesquelles vous souhaitez exĂ©cuter des requĂȘtes OLTP sur une application interactive.



HBase a des propriĂ©tĂ©s ACID trĂšs limitĂ©es de par sa conception car il a Ă©tĂ© conçu pour Ă©voluer et ne fournit pas de capacitĂ©s ACID prĂȘtes Ă  l'emploi, mais il peut ĂȘtre utilisĂ© pour certains scĂ©narios OLTP.



Apache Phoenix est construit sur HBase et fournit un moyen d'effectuer des requĂȘtes OTLP dans l'Ă©cosystĂšme Hadoop. Apache Phoenix est entiĂšrement intĂ©grĂ© Ă  d'autres produits Hadoop tels que Spark, Hive, Pig, Flume et Map Reduce. Il peut Ă©galement stocker des mĂ©tadonnĂ©es, prendre en charge la crĂ©ation de tables et les modifications de version incrĂ©mentielles Ă  l'aide de commandes DDL. Cela fonctionne assez rapidement, plus rapidement que d'utiliser Drill ou autre

mĂ©canisme de requĂȘtes.



Vous pouvez utiliser n'importe quelle base de données à grande échelle en dehors de l'écosystÚme Hadoop comme Cassandra, YugaByteDB, ScyllaDB pour OTLP.



Enfin, il est trĂšs courant que les bases de donnĂ©es rapides de tout type, telles que MongoDB ou MySQL, aient un sous-ensemble de donnĂ©es plus lent, gĂ©nĂ©ralement le plus rĂ©cent. Les mĂ©canismes de requĂȘte mentionnĂ©s ci-dessus peuvent combiner des donnĂ©es entre un stockage lent et rapide dans une seule requĂȘte.



Indexation distribuée



Ces outils fournissent des moyens de stocker et de rĂ©cupĂ©rer des donnĂ©es textuelles non structurĂ©es, et ils vivent en dehors de l'Ă©cosystĂšme Hadoop car ils nĂ©cessitent des structures spĂ©ciales pour stocker les donnĂ©es. L'idĂ©e est d'utiliser un index inversĂ© pour effectuer des recherches rapides. En plus de la recherche de texte, cette technologie peut ĂȘtre utilisĂ©e Ă  diverses fins, telles que le stockage de journaux, d'Ă©vĂ©nements, etc. Il existe deux options principales:



Solr: Il s'agit d'une plate-forme de recherche d'entreprise open source populaire et trĂšs rapide, basĂ©e sur Apache Lucene. Solr est un outil robuste, Ă©volutif et rĂ©silient, fournissant une indexation distribuĂ©e, une rĂ©plication et des requĂȘtes Ă  charge Ă©quilibrĂ©e, un basculement et une restauration automatiques, un provisionnement centralisĂ©, etc. C'est idĂ©al pour la recherche de texte, mais ses cas d'utilisation sont limitĂ©s par rapport Ă  ElasticSearch.



ElasticSearch: Il s'agit également d'un index distribué trÚs populaire, mais qui est devenu un écosystÚme à part entiÚre qui couvre de nombreux cas d'utilisation tels que l'APM, la recherche, le stockage de texte, l'analyse, les tableaux de bord, l'apprentissage automatique, etc. C'est certainement un outil à avoir dans votre boßte à outils pour DevOps ou pour le pipeline de données car il est trÚs polyvalent. Il peut également stocker et rechercher des vidéos et des images.



ElasticSearchpeut ĂȘtre utilisĂ© comme couche de stockage rapide pour votre lac de donnĂ©es pour une fonctionnalitĂ© de recherche avancĂ©e. Si vous stockez vos donnĂ©es dans une grande base de donnĂ©es de valeurs-clĂ©s comme HBase ou Cassandra, qui offrent des capacitĂ©s de recherche trĂšs limitĂ©es en raison d'un manque de connexions, vous pouvez placer ElasticSearch devant eux pour exĂ©cuter des requĂȘtes, renvoyer des ID, puis effectuez une recherche rapide dans votre base de donnĂ©es.



Il peut Ă©galement ĂȘtre utilisĂ© pour l'analyse. Vous pouvez exporter vos donnĂ©es, les indexer, puis les interroger Ă  l'aide de KibanaEn crĂ©ant des tableaux de bord, des rapports et plus encore, vous pouvez ajouter des histogrammes, des agrĂ©gations complexes et mĂȘme exĂ©cuter des algorithmes d'apprentissage automatique en plus de vos donnĂ©es. L'Ă©cosystĂšme ElasticSearch est Ă©norme et mĂ©rite d'ĂȘtre explorĂ©.



Bases de données OLAP



Ici, nous examinons les bases de donnĂ©es qui peuvent Ă©galement fournir un magasin de mĂ©tadonnĂ©es pour les schĂ©mas de requĂȘte. Par rapport aux systĂšmes d'exĂ©cution de requĂȘtes, ces outils fournissent Ă©galement le stockage de donnĂ©es et peuvent ĂȘtre appliquĂ©s Ă  des schĂ©mas de stockage spĂ©cifiques (schĂ©ma en Ă©toile). Ces outils utilisent la syntaxe SQL. Spark ou d'autres plates-formes peuvent interagir avec eux.



Ruche Apache: Nous avons dĂ©jĂ  discutĂ© de Hive en tant que rĂ©fĂ©rentiel de schĂ©mas central pour Spark et d'autres outils afin qu'ils puissent utiliser SQL, mais Hive peut Ă©galement stocker des donnĂ©es afin que vous puissiez les utiliser comme rĂ©fĂ©rentiel. Il peut accĂ©der Ă  HDFS ou HBase. À la demande de Hive, il utilise Apache Tez, Apache Spark ou MapReduce, Ă©tant beaucoup plus rapide que Tez ou Spark. Il dispose Ă©galement d'un langage procĂ©dural appelĂ© HPL-SQL. Hive est un magasin de mĂ©tadonnĂ©es extrĂȘmement populaire pour Spark SQL.



Apache Impala: Il s'agit d'une base de donnĂ©es analytique native pour Hadoop que vous pouvez utiliser pour stocker des donnĂ©es et les interroger efficacement. Elle peut se connecter Ă  Hive pour obtenir des mĂ©tadonnĂ©es Ă  l'aide d'Hcatalog. Impala fournit une faible latence et une haute concurrence pour les requĂȘtes de business intelligence et d'analyse dans Hadoop (qui n'est pas fournie par les plates-formes packagĂ©es telles qu'Apache Hive). Impala Ă©volue Ă©galement de maniĂšre linĂ©aire, mĂȘme dans les environnements multi-utilisateurs, ce qui est une meilleure alternative aux requĂȘtes que Hive. Impala est intĂ©grĂ© Ă  la sĂ©curitĂ© propriĂ©taire Hadoop et Kerberos pour l'authentification, ce qui vous permet de gĂ©rer en toute sĂ©curitĂ© l'accĂšs aux donnĂ©es. Il utilise HBase et HDFS pour le stockage des donnĂ©es.







Apache Tajo: Ceci est un autre entrepĂŽt de donnĂ©es pour Hadoop. Tajo est conçu pour effectuer des requĂȘtes ad hoc avec une latence et une Ă©volutivitĂ© faibles, une agrĂ©gation en ligne et ETL pour de grands ensembles de donnĂ©es stockĂ©s dans HDFS et d'autres sources de donnĂ©es. Il prend en charge l'intĂ©gration avec Hive Metastore pour accĂ©der aux schĂ©mas courants. Il a Ă©galement de nombreuses optimisations de requĂȘtes, il est Ă©volutif, tolĂ©rant aux pannes et fournit une interface JDBC.



Apache Kylin: Il s'agit d'un nouvel entrepĂŽt de donnĂ©es analytiques distribuĂ©. Kylin est extrĂȘmement rapide, il peut donc ĂȘtre utilisĂ© pour complĂ©ter d'autres bases de donnĂ©es comme Hive pour des cas d'utilisation oĂč les performances sont essentielles, comme les tableaux de bord ou les rapports interactifs. C'est probablement le meilleur entrepĂŽt de donnĂ©es OLAP, mais difficile Ă  utiliser. Un autre problĂšme est que plus d'espace de stockage est nĂ©cessaire en raison de l'Ă©tirement Ă©levĂ©. L'idĂ©e est que si les moteurs de requĂȘte ou Hive ne sont pas assez rapides, vous pouvez crĂ©er un «Cube» dans Kylin, qui est une table multidimensionnelle optimisĂ©e OLAP avec des

valeurs que vous pouvez interroger Ă  partir de tableaux de bord ou de rapports interactifs. Il peut crĂ©er des cubes directement Ă  partir de Spark et mĂȘme presque en temps rĂ©el Ă  partir de Kafka.







Outils OLAP



Dans cette catégorie, j'inclus des moteurs plus récents, qui sont des évolutions des bases de données OLAP précédentes, qui fournissent plus de fonctionnalités, créant une plate-forme d'analyse complÚte. En fait, ils sont un hybride des deux catégories précédentes qui ajoutent une indexation à vos bases de données OLAP. Ils vivent en dehors de la plate-forme Hadoop mais sont étroitement intégrés. Dans ce cas, vous ignorez généralement l'étape de traitement et utilisez ces outils directement.



Ils essaient de résoudre le problÚme de l'interrogation des données en temps réel et des données historiques de maniÚre uniforme, afin que vous puissiez immédiatement interroger les données en temps réel dÚs qu'elles sont disponibles, ainsi que les données historiques à faible latence afin que vous puissiez créer des applications et des tableaux de bord interactifs. Ces outils permettent, dans de nombreux cas, d'interroger des données brutes avec peu ou pas de transformation de style ELT, mais avec des performances élevées, meilleures que les bases de données OLAP conventionnelles.



Ce qu'ils ont en commun, c'est qu'ils fournissent une vue unifiée des données, de l'ingestion de données en direct et par lots, de l'indexation distribuée, du format de données natif, de la prise en charge SQL, de l'interface JDBC, de la prise en charge des données chaudes et froides, des intégrations multiples et du stockage des métadonnées.



Apache Druid: Il s'agit du moteur OLAP en temps rĂ©el le plus connu. Il se concentre sur les donnĂ©es de sĂ©ries chronologiques, mais peut ĂȘtre utilisĂ© pour toutes les donnĂ©es. Il utilise son propre format en colonnes qui peut compresser beaucoup les donnĂ©es, et il possĂšde de nombreuses optimisations intĂ©grĂ©es telles que les index inversĂ©s, le codage de texte, les donnĂ©es Ă  rĂ©duction automatique, etc. Les donnĂ©es sont chargĂ©es en temps rĂ©el Ă  l'aide de Tranquility ou Kafka, qui ont une latence trĂšs faible, sont stockĂ©es en mĂ©moire dans un format de chaĂźne optimisĂ© en Ă©criture, mais dĂšs qu'elles arrivent, elles sont disponibles pour l'interrogation, tout comme les donnĂ©es tĂ©lĂ©chargĂ©es prĂ©cĂ©demment. Le processus d'arriĂšre-plan est chargĂ© de dĂ©placer les donnĂ©es de maniĂšre asynchrone vers un systĂšme de stockage profond tel que HDFS. Lorsque les donnĂ©es sont dĂ©placĂ©es vers un stockage en profondeur, elles sont divisĂ©es en petits morceaux,sĂ©parĂ©s dans le temps, appelĂ©s segments, qui sont bien optimisĂ©s pour les requĂȘtes Ă  faible latence. Ce segment a un horodatage pour plusieurs dimensions que vous pouvez utiliser pour filtrer et agrĂ©ger, ainsi que des mĂ©triques, qui sont des Ă©tats prĂ©calculĂ©s. En rĂ©ception en rafale, les donnĂ©es sont enregistrĂ©es directement dans des segments. Apache Druid prend en charge la dĂ©glutition push and pull, l'intĂ©gration avec Hive, Spark et mĂȘme NiFi. Il peut utiliser le magasin de mĂ©tadonnĂ©es Hive et prend en charge les requĂȘtes SQL Hive, qui sont ensuite converties en requĂȘtes JSON utilisĂ©es par Druid. L'intĂ©gration Hive prend en charge JDBC, vous pouvez donc brancher n'importe quel outil de BI. Il possĂšde Ă©galement son propre rĂ©fĂ©rentiel de mĂ©tadonnĂ©es, gĂ©nĂ©ralement MySQL est utilisĂ© pour cela.Il peut accepter d'Ă©normes quantitĂ©s de donnĂ©es et Ă©voluer trĂšs bien. Le principal problĂšme est qu'il comporte de nombreux composants et qu'il est difficile Ă  gĂ©rer et Ă  dĂ©ployer.







Apache Pinot : Il s'agit d'une nouvelle alternative Ă  Druid open source de LinkedIn. ComparĂ© Ă  Druid, il offre une latence plus faible grĂące Ă  l'index Startree, qui effectue un prĂ©-calcul partiel, il peut donc ĂȘtre utilisĂ© pour des applications centrĂ©es sur l'utilisateur (il a Ă©tĂ© utilisĂ© pour obtenir des flux LinkedIn). Il utilise un index triĂ© au lieu d'un index inversĂ©, ce qui est plus rapide. Il a une architecture de plugin extensible et a Ă©galement de nombreuses intĂ©grations, mais ne prend pas en charge Hive. Il intĂšgre Ă©galement le traitement par lots et en temps rĂ©el, fournit un chargement rapide, un index intelligent et stocke les donnĂ©es dans des segments. Il est plus facile et plus rapide Ă  dĂ©ployer par rapport Ă  Druid, mais semble un peu immature pour le moment.



ClickHouse: Ă©crit en C ++, ce moteur offre des performances incroyables pour les requĂȘtes OLAP, en particulier pour les agrĂ©gats. C'est comme une base de donnĂ©es relationnelle, vous pouvez donc modĂ©liser les donnĂ©es facilement. Il est trĂšs simple Ă  mettre en place et possĂšde de nombreuses intĂ©grations.



Lisez cet article qui compare les 3 moteurs en détail.



Commencez petit en examinant vos donnĂ©es avant de prendre une dĂ©cision. Ces nouveaux mĂ©canismes sont trĂšs puissants, mais difficiles Ă  utiliser. Si vous pouvez attendre des heures, utilisez le traitement par lots et une base de donnĂ©es comme Hive ou Tajo; puis utilisez Kylin pour accĂ©lĂ©rer les requĂȘtes OLAP et les rendre plus interactives. Si cela ne suffit pas et que vous avez besoin encore moins de latence et de donnĂ©es en temps rĂ©el, pensez aux moteurs OLAP. Druid est plus adaptĂ© Ă  l'analyse en temps rĂ©el. Kaileen se concentre davantage sur les cas OLAP. Druid a une bonne intĂ©gration avec Kafka en streaming en direct. Kylin reçoit des donnĂ©es de Hive ou Kafka par lots, bien qu'une rĂ©ception en direct soit prĂ©vue.



Enfin, Greenplum Est un autre moteur OLAP, plus axé sur l'intelligence artificielle.



Visualisation de données



Il existe plusieurs outils commerciaux de visualisation tels que Qlik, Looker ou Tableau.



Si vous préférez Open Source, regardez vers SuperSet. C'est un excellent outil qui prend en charge tous les outils que nous avons mentionnés, a un excellent éditeur et est vraiment rapide, il utilise SQLAlchemy pour fournir un support pour de nombreuses bases de données.



D'autres outils intéressants sont Metabase ou Falcon .



Conclusion



Il existe un large Ă©ventail d'outils qui peuvent ĂȘtre utilisĂ©s pour manipuler les donnĂ©es, des moteurs de requĂȘte flexibles comme Presto aux stockages haute performance comme Kylin. Il n'y a pas de solution universelle, je vous conseille de rechercher les donnĂ©es et de commencer petit. Les moteurs de requĂȘtes sont un bon point de dĂ©part en raison de leur flexibilitĂ©. Ensuite, pour diffĂ©rents cas d'utilisation, vous devrez peut-ĂȘtre ajouter des outils supplĂ©mentaires pour atteindre le niveau de service souhaitĂ©.



Portez une attention particuliĂšre aux nouveaux outils comme Druid ou Pinot, qui offrent un moyen facile d'analyser d'Ă©normes quantitĂ©s de donnĂ©es avec une latence trĂšs faible, rĂ©duisant ainsi l'Ă©cart entre OLTP et OLAP en termes de performances. Vous pourriez ĂȘtre tentĂ© de penser au traitement, au prĂ©-calcul des agrĂ©gats, etc., mais pensez Ă  ces outils si vous souhaitez simplifier votre travail.



All Articles