{"id":92508,"date":"2020-08-28T07:42:10","date_gmt":"2020-08-28T05:42:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak"},"modified":"2020-08-28T07:42:10","modified_gmt":"2020-08-28T05:42:10","slug":"kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak","title":{"rendered":"Comment nous avons organis\u00e9 un DataLake hautement efficace et peu co\u00fbteux et pourquoi nous avons choisi cette approche","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Nous vivons une \u00e9poque incroyable o\u00f9 il est possible de relier rapidement et simplement plusieurs outils open source pr\u00eats \u00e0 l'emploi, de les configurer avec un \u00ab esprit d\u00e9connect\u00e9 \u00bb selon les conseils de stackoverflow, sans se plonger dans des termes complexes, et de les lancer en exploitation commerciale. Et quand il faudra mettre \u00e0 jour\/\u00e9tendre ou si quelqu'un red\u00e9marre accidentellement quelques machines, on r\u00e9alisera que l'on a commenc\u00e9 \u00e0 r\u00eaver un mauvais r\u00eave obs\u00e9dant, que tout est devenu \u00e9trangement compliqu\u00e9 \u00e0 en devenir m\u00e9connaissable, qu'il n'y a pas de retour en arri\u00e8re, que l'avenir est incertain et qu'il vaut mieux, plut\u00f4t que de programmer, se consacrer \u00e0 l'apiculture et \u00e0 la fabrication de fromage.<\/p>\n<p>Ce n'est pas en vain que des coll\u00e8gues plus exp\u00e9riment\u00e9s, les cheveux d\u00e9j\u00e0 grisonnants \u00e0 force de faire face \u00e0 de nombreux bugs, contemplent le d\u00e9ploiement incroyablement rapide de paquets \u00ab containers \u00bb dans des \u00ab cubes \u00bb sur des dizaines de serveurs dans des \u00ab langages \u00e0 la mode \u00bb avec un support int\u00e9gr\u00e9 pour l'entr\u00e9e\/sortie asynchrone non bloquante \u2014 ils sourient modestement. Et ils continuent silencieusement \u00e0 relire le \u00ab man ps \u00bb, se plongent jusqu'\u00e0 avoir les yeux en sang dans le code source de \u00ab nginx \u00bb et \u00e9crivent, \u00e9crivent, \u00e9crivent des tests unitaires. Les coll\u00e8gues savent que le plus int\u00e9ressant est \u00e0 venir, lorsque \u00ab tout cela \u00bb deviendra un cauchemar au r\u00e9veillon du Nouvel An. Et la seule chose qui les sauvera sera une compr\u00e9hension profonde de la nature d'unix, de la table d'\u00e9tats TCP\/IP dans la t\u00eate et des algorithmes de tri et de recherche de base. Pour redonner vie au syst\u00e8me au son des cloches.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAh oui, je me suis un peu \u00e9loign\u00e9, mais j'esp\u00e8re avoir transmis un \u00e9tat d'anticipation.<br \/>\nAujourd'hui, je veux partager notre exp\u00e9rience de d\u00e9ploiement d'une pile pratique et abordable pour DataLake, r\u00e9pondant \u00e0 la majorit\u00e9 des besoins analytiques de l'entreprise pour des d\u00e9partements structurels tr\u00e8s vari\u00e9s.<\/p>\n<p>Il y a quelque temps, nous avons r\u00e9alis\u00e9 que les entreprises avaient de plus en plus besoin des r\u00e9sultats tant de l'analytique produit que technique (sans parler des cerises sur le g\u00e2teau que sont le machine learning) et qu'il fallait collecter et analyser de plus en plus de m\u00e9triques pour comprendre les tendances et les risques.<\/p>\n<h3>L'analytique technique de base dans \u00ab Bitrix24 \u00bb<\/h3>\n<p>\nIl y a quelques ann\u00e9es, en m\u00eame temps que le lancement du service \u00ab Bitrix24 \u00bb, nous avons investi activement du temps et des ressources dans la cr\u00e9ation d'une plateforme analytique simple et fiable, qui permettrait de rep\u00e9rer rapidement les probl\u00e8mes dans l'infrastructure et de planifier les \u00e9tapes suivantes. Bien entendu, il \u00e9tait pr\u00e9f\u00e9rable de choisir des outils pr\u00eats \u00e0 l'emploi, simples et compr\u00e9hensibles. En fin de compte, nous avons choisi nagios pour le monitoring et munin pour l'analyse et la visualisation. Maintenant, nous avons des milliers de v\u00e9rifications dans nagios, des centaines de graphiques dans munin, et nos coll\u00e8gues les utilisent quotidiennement et avec succ\u00e8s. Les m\u00e9triques sont claires, les graphiques sont limpides, le syst\u00e8me fonctionne de mani\u00e8re fiable depuis plusieurs ann\u00e9es et de nouveaux tests et graphiques y sont r\u00e9guli\u00e8rement ajout\u00e9s : lorsque nous mettons un nouveau service en production, nous ajoutons quelques tests et graphiques. Bon voyage.<\/p>\n<h3>Avoir le pouls \u2014 analytics techniques avanc\u00e9es<\/h3>\n<p>\nLe d\u00e9sir d'obtenir des informations sur les probl\u00e8mes \u00ab le plus rapidement possible \u00bb nous a conduits \u00e0 exp\u00e9rimenter activement avec des outils simples et compr\u00e9hensibles \u2014 pinba et xhprof.<\/p>\n<p>Pinba nous envoyait par paquets UDP des statistiques sur la vitesse de fonctionnement des parties des pages web sur PHP et il \u00e9tait possible de voir en temps r\u00e9el dans le stockage MySQL (pinba utilise son propre moteur MySQL pour une analyse rapide des \u00e9v\u00e9nements) une courte liste de probl\u00e8mes et d\u2019y r\u00e9agir. Xhprof permettait en mode automatique de collecter les graphes d'ex\u00e9cution des pages PHP les plus lentes chez les clients et d'analyser ce qui pouvait en \u00eatre la cause \u2014 tranquillement, en se servant une tasse de th\u00e9 ou quelque chose de plus fort.<\/p>\n<p>Il y a quelque temps, les outils ont \u00e9t\u00e9 enrichis d'un autre moteur assez simple et compr\u00e9hensible bas\u00e9 sur un algorithme d'indexation invers\u00e9e, magnifiquement r\u00e9alis\u00e9 dans la l\u00e9gendaire biblioth\u00e8que Lucene \u2014 Elastic\/Kibana. La simple id\u00e9e d'enregistrement multithread de documents dans l'index invers\u00e9 de Lucene bas\u00e9 sur des \u00e9v\u00e9nements dans les journaux et de recherche rapide \u00e0 l'aide d'une division en facettes s'est av\u00e9r\u00e9e, en effet, tr\u00e8s utile.<\/p>\n<p>Malgr\u00e9 l'aspect assez technique des visualisations dans Kibana avec des concepts de bas niveau tels que \u00ab bucket \u00bb et un langage r\u00e9invent\u00e9 de l'alg\u00e8bre relationnelle qui n'est pas encore oubli\u00e9 \u2014 l'outil nous a \u00e9t\u00e9 tr\u00e8s utile pour les t\u00e2ches suivantes :<\/p>\n<ul>\n<li>Combien d'erreurs PHP a eu le client Bitrix24 sur le portail p1 au cours de la derni\u00e8re heure et lesquelles ? Comprendre, pardonner et corriger rapidement.<\/li>\n<li>Combien d'appels vid\u00e9o ont \u00e9t\u00e9 effectu\u00e9s sur les portails en Allemagne au cours des derni\u00e8res 24 heures, avec quelle qualit\u00e9 et y a-t-il eu des probl\u00e8mes avec le canal\/r\u00e9seau ?<\/li>\n<li>Comment fonctionne la fonctionnalit\u00e9 syst\u00e8me (notre extension en C pour PHP), compil\u00e9e \u00e0 partir des sources dans la derni\u00e8re mise \u00e0 jour du service et d\u00e9ploy\u00e9e aux clients ? Y a-t-il des segfaults ?<\/li>\n<li>Les donn\u00e9es des clients sont-elles stock\u00e9es dans la m\u00e9moire PHP ? Y a-t-il des erreurs de d\u00e9passement de m\u00e9moire allou\u00e9e aux processus : \u00ab out of memory \u00bb ? Trouvez et corrigez-le.<\/li>\n<\/ul>\n<p>\nVoici un exemple concret. Malgr\u00e9 des tests approfondis et multilbles, un client a rencontr\u00e9 une erreur d\u00e9routante et inattendue dans un cas tr\u00e8s atypique avec des donn\u00e9es d'entr\u00e9e corrompues, une alarme s'est d\u00e9clench\u00e9e et le processus de correction rapide a commenc\u00e9 :<\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons organis\u00e9 un DataLake hautement efficace et peu co\u00fbteux et pourquoi nous avons choisi cette approche\" src=\"\/wp-content\/uploads\/2020\/08\/8a802dba41b5d1a85c0dc41dfbf8b84e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe plus, Kibana permet d'organiser des alertes sur des \u00e9v\u00e9nements sp\u00e9cifi\u00e9s et en peu de temps, des dizaines d'employ\u00e9s de diff\u00e9rents d\u00e9partements \u2014 de l'assistance technique au d\u00e9veloppement en passant par le QA \u2014 ont commenc\u00e9 \u00e0 utiliser cet outil.<\/p>\n<p>L'activit\u00e9 de chaque d\u00e9partement au sein de l'entreprise est d\u00e9sormais facile \u00e0 suivre et \u00e0 mesurer \u2014 au lieu d'une analyse manuelle des journaux sur les serveurs, il suffit de configurer une fois le parsing des journaux et leur envoi vers un cluster Elastic, pour appr\u00e9cier, par exemple, le nombre de chatons \u00e0 deux t\u00eates imprim\u00e9s en 3D vendus au cours du dernier mois lunaire sur un tableau de bord Kibana.<\/p>\n<h3>Analyse d'affaires de base<\/h3>\n<p>\nTout le monde sait que l'analyse d'affaires dans les entreprises commence souvent par une utilisation extr\u00eamement active, oui, oui, d'Excel. Mais, surtout, il ne faut pas que cela s'arr\u00eate l\u00e0. Le cloud Google Analytics alimente encore un peu plus le feu \u2014 on s'habitue rapidement aux bonnes choses.<\/p>\n<p>Dans notre entreprise en pleine croissance, des \u00ab proph\u00e8tes \u00bb d'une travail plus intensif avec des donn\u00e9es plus volumineuses ont commenc\u00e9 \u00e0 appara\u00eetre ici et l\u00e0. Il est devenu n\u00e9cessaire de produire des rapports plus approfondis et vari\u00e9s et, gr\u00e2ce aux efforts des \u00e9quipes de diff\u00e9rents d\u00e9partements, une solution simple et pratique a \u00e9t\u00e9 mise en place il y a quelque temps \u2014 la combinaison de ClickHouse et PowerBI.<\/p>\n<p>Pendant un certain temps, cette solution flexible a bien fonctionn\u00e9, mais il est devenu progressivement clair que ClickHouse n'est pas \u00e9lastique et qu'on ne peut pas l'exploiter de cette mani\u00e8re.<\/p>\n<p>Il est important de comprendre que ClickHouse, tout comme Druid, Vertica et Amazon RedShift (qui est bas\u00e9 sur Postgres), sont des moteurs d'analyse optimis\u00e9s pour une analyse assez conviviale (sommes, agr\u00e9gations, minimum-maximum sur une colonne et quelques jointures), car ils sont con\u00e7us pour un stockage efficace des colonnes des tables relationnelles, contrairement \u00e0 MySQL et aux autres bases de donn\u00e9es orient\u00e9es ligne.<\/p>\n<p>En essence, ClickHouse n'est rien de plus qu'une \u00ab base \u00bb de donn\u00e9es plus spacieuse, avec une insertion ponctuelle pas tr\u00e8s pratique (c'est intentionnel, tout va bien), mais avec une analyse agr\u00e9able et un ensemble de fonctions puissantes pour travailler avec les donn\u00e9es. Oui, on peut m\u00eame cr\u00e9er un cluster \u2014 mais vous comprenez que battre des clous avec un microscope n'est pas tout \u00e0 fait correct et nous avons commenc\u00e9 \u00e0 chercher d'autres solutions.<\/p>\n<h3>La demande pour Python et les analystes<\/h3>\n<p>\nDans notre entreprise, il y a beaucoup de d\u00e9veloppeurs qui codent presque tous les jours depuis 10 \u00e0 20 ans en PHP, JavaScript, C#, C\/C++, Java, Go, Rust, Python, Bash. Il y a \u00e9galement de nombreux administrateurs syst\u00e8mes exp\u00e9riment\u00e9s, ayant v\u00e9cu des catastrophes incroyables qui ne rentrent pas dans les lois de la statistique (par exemple, quand la plupart des disques en RAID-10 sont d\u00e9truits par un coup de foudre). Dans ces conditions, il \u00e9tait longtemps difficile de comprendre ce qu'\u00e9tait un \u00ab analyste Python \u00bb. Python, c'est comme PHP, juste un nom un peu plus long et avec moins de traces de substances alt\u00e9rant la conscience dans le code source de l'interpr\u00e9teur. Cependant, alors que de nouveaux rapports analytiques \u00e9taient continuellement cr\u00e9\u00e9s, les d\u00e9veloppeurs exp\u00e9riment\u00e9s ont r\u00e9alis\u00e9 de plus en plus l'importance d'une sp\u00e9cialisation dans des outils comme numpy, pandas, matplotlib, seaborn.<br \/>\nLe r\u00f4le d\u00e9cisif a probablement \u00e9t\u00e9 jou\u00e9 par les \u00e9vanouissements soudains des employ\u00e9s \u00e0 cause de l'association des mots \u00ab r\u00e9gression logistique \u00bb et la d\u00e9monstration de la construction efficace de rapports sur de grands volumes de donn\u00e9es gr\u00e2ce \u00e0, oui, pyspark.<\/p>\n<p>Apache Spark, sa paradigme fonctionnelle sur laquelle l'alg\u00e8bre relationnelle s'applique parfaitement, a tellement impressionn\u00e9 les d\u00e9veloppeurs habitu\u00e9s \u00e0 MySQL que la n\u00e9cessit\u00e9 de renforcer les rangs avec des analystes exp\u00e9riment\u00e9s est devenue aussi claire que le jour.<\/p>\n<h3>Les tentatives ult\u00e9rieures d'Apache Spark\/Hadoop de r\u00e9ussir et ce qui ne s'est pas exactement pass\u00e9 comme pr\u00e9vu<\/h3>\n<p>\nCependant, il est vite devenu clair qu'il y avait quelque chose de syst\u00e9mique qui clochait avec Spark, ou peut-\u00eatre qu'il fallait simplement mieux se laver les mains. Si la stack Hadoop\/MapReduce\/Lucene \u00e9tait d\u00e9velopp\u00e9e par des programmeurs exp\u00e9riment\u00e9s, ce qui est \u00e9vident si l'on examine minutieusement le code source en Java ou les id\u00e9es de Doug Cutting dans Lucene, Spark, lui, est soudainement \u00e9crit dans un langage exotique en voie de disparition et discutable du point de vue de la praticit\u00e9 : Scala. La chute r\u00e9guli\u00e8re des calculs sur un cluster Spark due \u00e0 une gestion de la m\u00e9moire pour les op\u00e9rations de r\u00e9duction (un grand nombre de cl\u00e9s apparaissent d'un coup) a cr\u00e9\u00e9 autour de lui une aura de quelque chose qui a encore beaucoup de chemin \u00e0 parcourir. De plus, la situation \u00e9tait aggrav\u00e9e par un grand nombre de ports ouverts \u00e9tranges, de fichiers temporaires qui poussaient dans les endroits les plus incompr\u00e9hensibles et une multitude de d\u00e9pendances jar \u2014 ce qui suscitait chez les administrateurs syst\u00e8mes un sentiment bien connu depuis l'enfance : une haine f\u00e9roce (\u00e0 moins qu'il n'ait fallu se laver les mains avec du savon).<\/p>\n<p>Nous avons donc \"surv\u00e9cu\" \u00e0 plusieurs projets internes d'analyse, utilisant activement Apache Spark (y compris Spark Streaming, Spark SQL) et l'\u00e9cosyst\u00e8me Hadoop (et tout le reste). Bien que, avec le temps, nous ayons appris \u00e0 \"pr\u00e9parer\" cela correctement et \u00e0 le surveiller, et qu'il ait pratiquement cess\u00e9 de tomber de mani\u00e8re inattendue \u00e0 cause de la nature changeante des donn\u00e9es et du d\u00e9s\u00e9quilibre du hachage uniforme des RDD, le d\u00e9sir de prendre quelque chose de d\u00e9j\u00e0 pr\u00eat, mis \u00e0 jour et administr\u00e9 quelque part dans le cloud est devenu de plus en plus pressant. C'est \u00e0 cette \u00e9poque que nous avons essay\u00e9 d'utiliser une distribution cloud pr\u00eate d'Amazon Web Services \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/emr\/\">EMR<\/a><\/noindex> et, par la suite, nous avons essay\u00e9 de r\u00e9soudre des probl\u00e8mes sur cette plateforme. EMR c'est une version d'Apache Spark pr\u00e9par\u00e9e par Amazon avec un logiciel suppl\u00e9mentaire de l'\u00e9cosyst\u00e8me, un peu comme les distributions Cloudera\/Hortonworks.<\/p>\n<h3>Un espace de stockage \"flexible\" pour l'analytique \u2014 un besoin urgent<\/h3>\n<p>\nL'exp\u00e9rience de \"pr\u00e9parer\" Hadoop\/Spark avec des br\u00fblures sur diff\u00e9rentes parties du corps n'est pas pass\u00e9e inaper\u00e7ue. La n\u00e9cessit\u00e9 de cr\u00e9er un espace de stockage fiable et peu co\u00fbteux, r\u00e9sistant aux pannes mat\u00e9rielles, se dessinait de plus en plus clairement. Cet espace devrait permettre de stocker des fichiers dans diff\u00e9rents formats en provenance de diff\u00e9rents syst\u00e8mes et d'effectuer des requ\u00eates efficaces et ex\u00e9cutables dans des d\u00e9lais raisonnables pour les rapports.<\/p>\n<p>Il \u00e9tait \u00e9galement souhaitable que la mise \u00e0 jour des logiciels de cette plateforme ne devienne pas un cauchemar nocturne de No\u00ebl, avec la lecture de trace Java de 20 pages et l'analyse de kilom\u00e8tres de journaux d\u00e9taill\u00e9s du fonctionnement du cluster \u00e0 l'aide de Spark History Server et d'une loupe avec un \u00e9clairage. Nous voulions un outil simple et transparent, qui ne n\u00e9cessite pas de plonger r\u00e9guli\u00e8rement sous le capot, si un d\u00e9veloppeur cesse d'ex\u00e9cuter une requ\u00eate MapReduce standard lorsque les donn\u00e9es de r\u00e9duction sortent de la m\u00e9moire du worker \u00e0 cause d'un algorithme de partitionnement mal choisi.<\/p>\n<h3>Amazon S3 \u2014 candidat pour un DataLake ?<\/h3>\n<p>\nL'exp\u00e9rience de travail avec Hadoop\/MapReduce m'a appris qu'une syst\u00e8me de fichiers fiable et \u00e9volutif est n\u00e9cessaire, ainsi que des workers scalables, \"proches\" des donn\u00e9es, afin de ne pas faire circuler les donn\u00e9es sur le r\u00e9seau. Les workers doivent \u00eatre capables de lire des donn\u00e9es dans diff\u00e9rents formats, mais id\u00e9alement, sans lire d'informations superflues et en permettant de stocker les donn\u00e9es au pr\u00e9alable dans des formats adapt\u00e9s aux workers.<\/p>\n<p><b>Encore une fois \u2014 l'id\u00e9e principale.<\/b> Nous n'avons pas envie de \u00ab d\u00e9verser \u00bb de grandes donn\u00e9es dans un moteur analytique clusteris\u00e9 unique, qui finira par se noyer t\u00f4t ou tard et qu'il faudra alors shard mal. Nous souhaitons stocker des fichiers, juste des fichiers, dans un format compr\u00e9hensible et ex\u00e9cuter sur eux des requ\u00eates analytiques efficaces avec divers outils, mais clairs. Et le nombre de fichiers dans diff\u00e9rents formats ne fera qu'augmenter. Il vaut donc mieux shard les donn\u00e9es source que le moteur lui-m\u00eame. Nous avons besoin d'un DataLake extensible et universel, avons-nous d\u00e9cid\u00e9...<\/p>\n<p>Et si nous stockions des fichiers dans le traditionnel et bien connu stockage cloud \u00e9volutif d'Amazon S3, sans avoir \u00e0 pr\u00e9parer nous-m\u00eames des c\u00f4telettes \u00e0 partir de Hadoop ?<\/p>\n<p>D'accord, les donn\u00e9es personnelles ne peuvent pas \u00eatre stock\u00e9es l\u00e0, mais d'autres donn\u00e9es, si elles sont transf\u00e9r\u00e9es et \u00ab efficacement trait\u00e9es \u00bb ?<\/p>\n<h3>L'\u00e9cosyst\u00e8me d'analyse big data clusteris\u00e9 d'Amazon Web Services \u2014 en des termes tr\u00e8s simples<\/h3>\n<p>\nD'apr\u00e8s notre exp\u00e9rience avec AWS, Apache Hadoop\/MapReduce est utilis\u00e9 depuis longtemps et activement sous diff\u00e9rentes formes, par exemple dans le service DataPipeline (je jalouse mes coll\u00e8gues, ils ont vraiment appris \u00e0 bien le pr\u00e9parer). Ici, nous avons configur\u00e9 des sauvegardes \u00e0 partir de diff\u00e9rents services des tables DynamoDB :<br \/>\n<img decoding=\"async\" alt=\"Comment nous avons organis\u00e9 un DataLake hautement efficace et peu co\u00fbteux et pourquoi nous avons choisi cette approche\" src=\"\/wp-content\/uploads\/2020\/08\/058dc54ed032a7bf3e9e129646202440.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEt elles s'ex\u00e9cutent r\u00e9guli\u00e8rement sur des clusters Hadoop\/MapReduce int\u00e9gr\u00e9s comme une horloge depuis plusieurs ann\u00e9es. \u00ab Configur\u00e9 et oubli\u00e9 \u00bb :<\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons organis\u00e9 un DataLake hautement efficace et peu co\u00fbteux et pourquoi nous avons choisi cette approche\" src=\"\/wp-content\/uploads\/2020\/08\/a6569da8cafdb96c63250bb32bf51704.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl est \u00e9galement possible de pratiquer efficacement le data-satanisme en d\u00e9ployant des notebooks Jupiter dans le cloud pour les analystes et en utilisant le service AWS SageMaker pour l'entra\u00eenement et le d\u00e9ploiement des mod\u00e8les d'IA. Voici \u00e0 quoi cela ressemble chez nous :<\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons organis\u00e9 un DataLake hautement efficace et peu co\u00fbteux et pourquoi nous avons choisi cette approche\" src=\"\/wp-content\/uploads\/2020\/08\/c825d979c9278a8edf8e1e747ef6def8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEt oui, on peut d\u00e9ployer un notebook dans le cloud pour soi ou pour un analyste et le connecter \u00e0 un cluster Hadoop\/Spark, effectuer des calculs et ensuite tout \"clouer\" :<\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons organis\u00e9 un DataLake hautement efficace et peu co\u00fbteux et pourquoi nous avons choisi cette approche\" src=\"\/wp-content\/uploads\/2020\/08\/73cea18c54d2a9ce8d0441463991808b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'est vraiment pratique pour des projets analytiques individuels et pour certains, nous avons r\u00e9ussi \u00e0 utiliser le service EMR pour des calculs et des analyses \u00e0 grande \u00e9chelle. Qu'en est-il de la solution syst\u00e9mique pour DataLake, sera-t-elle possible ? \u00c0 ce moment-l\u00e0, nous \u00e9tions \u00e0 la fronti\u00e8re de l'espoir et du d\u00e9sespoir et nous poursuivions notre recherche.<\/p>\n<h3>AWS Glue - une version d'Apache Spark \"st\u00e9ro\u00efd\u00e9e\" bien emball\u00e9e<\/h3>\n<p>\nIl s'est av\u00e9r\u00e9 qu'AWS a sa propre version de la stack \"Hive\/Pig\/Spark\". Le r\u00f4le de Hive, c'est-\u00e0-dire le catalogue des fichiers et de leurs types dans le DataLake, est rempli par le service \"Data catalog\", qui ne cache pas sa compatibilit\u00e9 avec le format Apache Hive. Il faut ajouter des informations \u00e0 ce service sur l'emplacement de vos fichiers et sur leur format. Les donn\u00e9es peuvent se trouver non seulement dans S3, mais aussi dans une base de donn\u00e9es, mais ce n'est pas le sujet de ce post. Voici comment notre catalogue de donn\u00e9es DataLake est organis\u00e9 :<\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons organis\u00e9 un DataLake hautement efficace et peu co\u00fbteux et pourquoi nous avons choisi cette approche\" src=\"\/wp-content\/uploads\/2020\/08\/adb45d09698fdacbf41c86bbadde8bb2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLes fichiers sont enregistr\u00e9s, excellent. Si les fichiers sont mis \u00e0 jour, nous lan\u00e7ons soit manuellement soit selon un calendrier des crawlers qui mettront \u00e0 jour les informations \u00e0 leur sujet depuis le lac et les sauvegarderont. Ensuite, les donn\u00e9es du lac peuvent \u00eatre trait\u00e9es et les r\u00e9sultats peuvent \u00eatre export\u00e9s quelque part. Dans le cas le plus simple, nous les exportons aussi vers S3. Le traitement des donn\u00e9es peut \u00eatre effectu\u00e9 n'importe o\u00f9, mais il est sugg\u00e9r\u00e9 de configurer le processus de traitement sur un cluster Apache Spark en utilisant les fonctionnalit\u00e9s avanc\u00e9es via l'API AWS Glue. En fait, on peut prendre le vieux et familier code en Python avec la biblioth\u00e8que pyspark et configurer son ex\u00e9cution sur N n\u0153uds d'un cluster d'une certaine puissance avec monitoring, sans avoir \u00e0 fouiller dans les entrailles de Hadoop, tra\u00eener des conteneurs Docker et r\u00e9soudre les conflits de d\u00e9pendances.<\/p>\n<p><b>Encore une fois - une id\u00e9e simple.<\/b> Il n'est pas n\u00e9cessaire de configurer Apache Spark, il suffit d'\u00e9crire du code en Python pour pyspark, de le tester localement sur le bureau, puis de le lancer sur un grand cluster dans le cloud, en indiquant o\u00f9 se trouvent les donn\u00e9es sources et o\u00f9 mettre le r\u00e9sultat. Parfois, c'est n\u00e9cessaire et utile, et voici comment cela est configur\u00e9 chez nous :<\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons organis\u00e9 un DataLake hautement efficace et peu co\u00fbteux et pourquoi nous avons choisi cette approche\" src=\"\/wp-content\/uploads\/2020\/08\/dc03181573bb3f5cfcc3a8760bc7e07b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAinsi, si vous devez effectuer des calculs sur un cluster Spark avec des donn\u00e9es dans S3, \u00e9crivez du code en Python\/pyspark, testez-le et en route vers le cloud.<\/p>\n<p>Qu'en est-il de l'orchestration ? Que se passe-t-il si une t\u00e2che \u00e9choue et dispara\u00eet ? Oui, on propose de cr\u00e9er un pipeline esth\u00e9tique \u00e0 la mani\u00e8re d'Apache Pig, et nous l'avons m\u00eame essay\u00e9, mais nous avons d\u00e9cid\u00e9 de continuer \u00e0 utiliser notre orchestration profond\u00e9ment personnalis\u00e9e en PHP et JavaScript (je comprends qu'il y a un d\u00e9calage cognitif, mais \u00e7a fonctionne, et ce, sans erreurs depuis des ann\u00e9es).<\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons organis\u00e9 un DataLake hautement efficace et peu co\u00fbteux et pourquoi nous avons choisi cette approche\" src=\"\/wp-content\/uploads\/2020\/08\/e00ed2047c5c6492e36fccc82e7278a3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Le format des fichiers stock\u00e9s dans le lac de donn\u00e9es est la cl\u00e9 de la performance.<\/h3>\n<p>\nIl est tr\u00e8s, tr\u00e8s important de comprendre deux autres points cl\u00e9s. Afin que les requ\u00eates sur les fichiers dans le lac de donn\u00e9es soient ex\u00e9cut\u00e9es le plus rapidement possible et que la performance ne se d\u00e9grade pas lors de l'ajout de nouvelles informations, il faut :<\/p>\n<ul>\n<li>Stocker les colonnes des fichiers s\u00e9par\u00e9ment (pour ne pas avoir \u00e0 lire toutes les lignes pour comprendre ce qu'il y a dans les colonnes). Pour cela, nous avons choisi le format Parquet avec compression.<\/li>\n<li>Il est tr\u00e8s important de shard les fichiers en dossiers comme : langue, ann\u00e9e, mois, jour, semaine. Les moteurs qui comprennent ce type de sharding ne regarderont que dans les bons dossiers, sans avoir \u00e0 fouiller dans toutes les donn\u00e9es en continu.<\/li>\n<\/ul>\n<p>\nEn fait, de cette mani\u00e8re, vous pr\u00e9parez les donn\u00e9es brutes dans le format le plus efficace pour les moteurs analytiques qui peuvent acc\u00e9der s\u00e9lectivement aux dossiers shard\u00e9s et lire uniquement les colonnes n\u00e9cessaires. Il n'est pas n\u00e9cessaire de \"charger\" les donn\u00e9es ailleurs (le stockage finirait par exploser) \u2014 il suffit de les placer directement dans le syst\u00e8me de fichiers dans le bon format. Bien entendu, il doit \u00eatre clair qu'il n'est pas tr\u00e8s judicieux de stocker un \u00e9norme fichier CSV dans un DataLake, qui doit d'abord \u00eatre lu ligne par ligne par le cluster pour en extraire les colonnes. R\u00e9fl\u00e9chissez encore une fois \u00e0 ces deux points mentionn\u00e9s ci-dessus si cela n'est pas encore clair.<\/p>\n<h3>AWS Athena \u2014 le \"diable\" dans la bo\u00eete.<\/h3>\n<p>\nEt ici, en cr\u00e9ant le lac de donn\u00e9es, nous sommes tomb\u00e9s presque par hasard sur Amazon Athena. Il s'est av\u00e9r\u00e9 que, en rangeant soigneusement nos fichiers de journaux \u00e9normes par dossiers shard\u00e9s dans le bon format (Parquet), il est possible d'effectuer des s\u00e9lections tr\u00e8s informatives et de g\u00e9n\u00e9rer des rapports SANS cluster Apache Spark\/Glue tr\u00e8s rapidement.<\/p>\n<p>Le moteur Athena, qui fonctionne sur les donn\u00e9es dans S3, est bas\u00e9 sur la l\u00e9gendaire. <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/big-data\/what-is-presto\/\">Presto<\/a><\/noindex> \u2014 repr\u00e9sentant de la famille MPP (traitement parall\u00e8le massif) pour le traitement des donn\u00e9es, prenant les donn\u00e9es l\u00e0 o\u00f9 elles sont, de s3 et Hadoop \u00e0 Cassandra et des fichiers texte ordinaires. Il suffit de demander \u00e0 Athena d'ex\u00e9cuter une requ\u00eate SQL, et ensuite tout \u00ab fonctionne rapidement et tout seul \u00bb. Il est important de noter qu'Athena est \u00ab intelligente \u00bb, elle ne va que dans les dossiers shard\u00e9s n\u00e9cessaires et ne lit que les colonnes requises dans la requ\u00eate.<\/p>\n<p>Les requ\u00eates \u00e0 Athena sont \u00e9galement tarif\u00e9es de mani\u00e8re int\u00e9ressante. Nous payons pour <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/athena\/pricing\/\">le volume de donn\u00e9es scann\u00e9es<\/a><\/noindex>. C'est-\u00e0-dire, pas pour le nombre de machines dans le cluster par minute, mais\u2026 pour les donn\u00e9es r\u00e9ellement scann\u00e9es sur 100-500 machines, uniquement celles n\u00e9cessaires \u00e0 l'ex\u00e9cution de la requ\u00eate.<\/p>\n<p>Et en ne demandant que les colonnes n\u00e9cessaires des bons dossiers shard\u00e9s, il s'est av\u00e9r\u00e9 que le service Athena nous co\u00fbte des dizaines de dollars par mois. Eh bien, c'est presque gratuit, compar\u00e9 \u00e0 l'analyse sur des clusters !<\/p>\n<p>Voici comment nous shardons nos donn\u00e9es dans s3 :<\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons organis\u00e9 un DataLake hautement efficace et peu co\u00fbteux et pourquoi nous avons choisi cette approche\" src=\"\/wp-content\/uploads\/2020\/08\/00bd9ae48c1cd13f3c4f7d32692c9209.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn cons\u00e9quence, en peu de temps, des d\u00e9partements tr\u00e8s diff\u00e9rents au sein de l'entreprise, de la s\u00e9curit\u00e9 de l'information \u00e0 l'analyse, ont commenc\u00e9 \u00e0 faire des requ\u00eates \u00e0 Athena et \u00e0 obtenir rapidement, en quelques secondes, des r\u00e9ponses utiles \u00e0 partir de \u00ab grandes \u00bb donn\u00e9es sur des p\u00e9riodes assez longues : mois, semestre, etc.<\/p>\n<p>Mais nous sommes all\u00e9s plus loin et avons commenc\u00e9 \u00e0 chercher des r\u00e9ponses dans le cloud <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/athena\/latest\/ug\/connect-with-odbc.html\">via un pilote ODBC<\/a><\/noindex>: un analyste dans sa console habituelle \u00e9crit une requ\u00eate SQL, qui scrute les donn\u00e9es dans s3 sur 100-500 machines \u00ab pour quelques centimes \u00bb et retourne g\u00e9n\u00e9ralement une r\u00e9ponse en moins de secondes. Pratique. Et rapide. Je n'arrive toujours pas \u00e0 y croire.<\/p>\n<p>En fin de compte, ayant d\u00e9cid\u00e9 de stocker les donn\u00e9es dans s3, dans un format colonne efficace et avec un sharding raisonnable des donn\u00e9es par dossiers\u2026 nous avons obtenu un DataLake et un moteur analytique rapide et bon march\u00e9 \u2014 gratuitement. Et il est devenu tr\u00e8s populaire dans l'entreprise, car il comprend SQL et fonctionne des ordres de grandeurs plus rapidement que par le biais de lancements\/arr\u00eats\/r\u00e9glages de clusters. \u00ab Et si le r\u00e9sultat est le m\u00eame, pourquoi payer plus ? \u00bb<\/p>\n<p>Une requ\u00eate \u00e0 Athena ressemble \u00e0 peu pr\u00e8s \u00e0 cela. Si on le souhaite, bien s\u00fbr, on peut formuler une requ\u00eate SQL assez <noindex><a rel=\"nofollow\" href=\"https:\/\/prestodb.io\/docs\/0.172\/index.html\">complexe et multi-pages<\/a><\/noindex>, mais nous nous limiterons \u00e0 un simple regroupement. Voyons quels codes r\u00e9ponses le client avait il y a quelques semaines dans les journaux de fonctionnement du serveur web et v\u00e9rifions qu'il n'y a pas d'erreurs :<\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons organis\u00e9 un DataLake hautement efficace et peu co\u00fbteux et pourquoi nous avons choisi cette approche\" src=\"\/wp-content\/uploads\/2020\/08\/30028991467b9e52f597faa617d374b5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Conclusions<\/h3>\n<p>\nApr\u00e8s un parcours qui n'\u00e9tait pas si long mais douloureux, en \u00e9valuant constamment les risques et le niveau de complexit\u00e9 ainsi que le co\u00fbt de maintenance, nous avons trouv\u00e9 une solution pour le DataLake et l'analyse qui nous ravit tant par sa rapidit\u00e9 que par son co\u00fbt de possession.<\/p>\n<p>Il s'est av\u00e9r\u00e9 que construire un DataLake efficace, rapide et peu co\u00fbteux \u00e0 exploiter pour les besoins de diff\u00e9rentes unit\u00e9s de l'entreprise est parfaitement r\u00e9alisable m\u00eame pour des d\u00e9veloppeurs exp\u00e9riment\u00e9s, qui n'ont jamais \u00e9t\u00e9 architectes et qui ne savent pas dessiner des carr\u00e9s avec des fl\u00e8ches tout en connaissant 50 termes de l'\u00e9cosyst\u00e8me Hadoop.<\/p>\n<p>Au d\u00e9but, ma t\u00eate \u00e9tait en d\u00e9sordre \u00e0 cause d'une multitude de zoo logiciels ouverts et ferm\u00e9s, ainsi que du poids de la responsabilit\u00e9 envers les g\u00e9n\u00e9rations futures. Commencez simplement \u00e0 construire votre DataLake avec des outils simples : nagios\/munin -&gt; elastic\/kibana -&gt; Hadoop\/Spark\/s3..., en collectant des retours et en comprenant profond\u00e9ment la physique des processus en cours. Tout ce qui est compliqu\u00e9 et obscur, confiez-le \u00e0 vos ennemis et concurrents.<\/p>\n<p>Si vous ne souhaitez pas passer au cloud et pr\u00e9f\u00e9rez maintenir, mettre \u00e0 jour et patcher des projets open source, vous pouvez construire une architecture similaire \u00e0 la n\u00f4tre localement, sur de petites machines de bureau avec Hadoop et Presto au-dessus. L'essentiel est de ne pas s'arr\u00eater, d'aller de l'avant, de compter, de rechercher des solutions simples et claires, et tout ira bien ! Bonne chance \u00e0 tous et \u00e0 bient\u00f4t !<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/bitrix\/blog\/516374\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u0436\u0438\u0432\u0435\u043c \u0432 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0441\u0442\u044b\u043a\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u0441 \u00ab\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435\u043c\u00bb \u043f\u043e \u0441\u043e\u0432\u0435\u0442\u0430\u043c stackoverflow, \u043d\u0435 \u0432\u043d\u0438\u043a\u0430\u044f \u0432 \u00ab\u043c\u043d\u043e\u0433\u043e\u0431\u0443\u043a\u0432\u00bb, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0443\u044e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044e. \u0410 \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f\/\u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u043f\u0430\u0440\u0443 \u043c\u0430\u0448\u0438\u043d \u2014 \u043e\u0441\u043e\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u0441\u044f \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043d\u0430\u0432\u044f\u0437\u0447\u0438\u0432\u044b\u0439 \u0434\u0443\u0440\u043d\u043e\u0439 \u0441\u043e\u043d \u043d\u0430\u044f\u0432\u0443, \u0432\u0441\u0435 \u0440\u0435\u0437\u043a\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043b\u043e\u0441\u044c \u0434\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92509,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92508","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u0436\u0438\u0432\u0435\u043c \u0432 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0441\u0442\u044b\u043a\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u0441 \u00ab\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435\u043c\u00bb \u043f\u043e \u0441\u043e\u0432\u0435\u0442\u0430\u043c stackoverflow, \u043d\u0435 \u0432\u043d\u0438\u043a\u0430\u044f \u0432 \u00ab\u043c\u043d\u043e\u0433\u043e\u0431\u0443\u043a\u0432\u00bb, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0438 \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u043e\u0435 DataLake \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u0436\u0438\u0432\u0435\u043c \u0432 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0441\u0442\u044b\u043a\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u0441 \u00ab\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435\u043c\u00bb \u043f\u043e \u0441\u043e\u0432\u0435\u0442\u0430\u043c stackoverflow, \u043d\u0435 \u0432\u043d\u0438\u043a\u0430\u044f \u0432 \u00ab\u043c\u043d\u043e\u0433\u043e\u0431\u0443\u043a\u0432\u00bb, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-28T05:42:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-28T05:42:10+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Comment nous avons organis\u00e9 un DataLake hautement performant et \u00e9conomique et pourquoi de cette mani\u00e8re | ProHoster","description":"Nous vivons une \u00e9poque incroyable o\u00f9 il est rapide et facile de connecter plusieurs outils open source pr\u00eats \u00e0 l'emploi, de les configurer en suivant les conseils de StackOverflow, sans se soucier des 'mots compliqu\u00e9s', et de les lancer.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0438 \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u043e\u0435 DataLake \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a | ProHoster","og:description":"\u041c\u044b \u0436\u0438\u0432\u0435\u043c \u0432 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0441\u0442\u044b\u043a\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u0441 \u00ab\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435\u043c\u00bb \u043f\u043e \u0441\u043e\u0432\u0435\u0442\u0430\u043c stackoverflow, \u043d\u0435 \u0432\u043d\u0438\u043a\u0430\u044f \u0432 \u00ab\u043c\u043d\u043e\u0433\u043e\u0431\u0443\u043a\u0432\u00bb, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-28T05:42:10+00:00","article:modified_time":"2020-08-28T05:42:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92508","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:07:39","updated":"2022-10-01 09:50:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/92508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=92508"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/92508\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/92509"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=92508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=92508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=92508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}