{"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\/de\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak","title":{"rendered":"Wie wir einen hochdynamischen und kosteneffektiven DataLake organisiert haben und warum.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Wir leben in einer erstaunlichen Zeit, in der man schnell und einfach mehrere bereitgestellte Open-Source-Tools kombinieren kann, sie mit 'ausgeschaltetem Bewusstsein' gem\u00e4\u00df den Ratschl\u00e4gen von StackOverflow einrichten kann, ohne sich um 'viele Buchstaben' k\u00fcmmern zu m\u00fcssen, und sie in den kommerziellen Betrieb \u00fcbernehmen kann. Und wenn es n\u00f6tig wird, sich zu aktualisieren\/erweitern oder jemand aus Versehen ein paar Maschinen neu startet \u2014 wird man erkennen, dass man in einen aufdringlichen, schlechten Traum aufgewacht ist, alles hat sich pl\u00f6tzlich unkenntlich kompliziert und ein Zur\u00fcck gibt es nicht, die Zukunft ist ungewiss und sicherer, anstatt zu programmieren, Bienen zu z\u00fcchten und K\u00e4se herzustellen.<\/p>\n<p>Nicht ohne Grund l\u00e4cheln die erfahreneren Kollegen mit grauen Haaren, die schon viele Bugs gesehen haben, w\u00e4hrend sie das unglaublich schnelle Deployment von Container-Paketen in \u201eCubes\u201c auf Dutzenden von Servern in modernen Programmiersprachen mit integrierter Unterst\u00fctzung f\u00fcr asynchrones, nicht blockierendes I\/O betrachten. Sie lesen still das \u201eman ps\u201c nach, vertiefen sich bis zum Augenbluten in den Quellcode von \u201enginx\u201c und schreiben, schreiben, schreiben Unit-Tests. Die Kollegen wissen, dass das Interessanteste noch bevorsteht, wenn \u201eall das\u201c eines Nachts zu Silvester zum Stillstand kommt. Nur ein tiefes Verst\u00e4ndnis der Unix-Natur, die auswendig gelernten TCP\/IP-Zustandsdiagramme und grundlegenden Sortier- und Suchalgorithmen k\u00f6nnen helfen, das System beim Glockenl\u00e4uten wieder zum Leben zu erwecken.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAch ja, ich bin ein wenig abgekommen, aber ich hoffe, ich konnte den Zustand der Vorfreude vermitteln.<br \/>\nHeute m\u00f6chte ich unsere Erfahrungen mit dem Deployment eines benutzerfreundlichen und kosteng\u00fcnstigen Stacks f\u00fcr DataLake teilen, der die meisten analytischen Aufgaben im Unternehmen f\u00fcr ganz unterschiedliche Abteilungen l\u00f6st.<\/p>\n<p>Vor einiger Zeit erkannten wir, dass Unternehmen zunehmend auf die Ergebnisse sowohl der Produkt- als auch der technischen Analytik angewiesen sind \u2013 ganz zu schweigen von den \u201eSahneh\u00e4ubchen\u201c in Form von Machine Learning. Um Trends und Risiken besser zu verstehen, m\u00fcssen immer mehr Kennzahlen gesammelt und analysiert werden.<\/p>\n<h3>Grundlegende technische Analytik in \u201eBitrix24\u201c<\/h3>\n<p>\nVor einigen Jahren, gemeinsam mit dem Start des Dienstes \u201eBitrix24\u201c, investierten wir aktiv Zeit und Ressourcen in die Entwicklung einer einfachen und zuverl\u00e4ssigen Analyseplattform, die es erm\u00f6glicht, Probleme in der Infrastruktur schnell zu erkennen und die n\u00e4chsten Schritte zu planen. Nat\u00fcrlich wollten wir m\u00f6glichst einfache und verst\u00e4ndliche, fertige Tools verwenden. Schlie\u00dflich fiel die Wahl auf Nagios f\u00fcr das Monitoring und Munin f\u00fcr die Analyse und Visualisierung. Jetzt haben wir tausende von Checks in Nagios, Hunderte von Grafiken in Munin und unsere Kollegen verwenden diese t\u00e4glich und erfolgreich. Die Kennzahlen sind klar, die Grafiken sind verst\u00e4ndlich, und das System arbeitet zuverl\u00e4ssig seit mehreren Jahren und wird regelm\u00e4\u00dfig um neue Tests und Grafiken erweitert: Bei der Inbetriebnahme eines neuen Dienstes \u2013 f\u00fcgen wir einige Tests und Grafiken hinzu. Gute Reise.<\/p>\n<h3>Immer am Puls \u2014 erweiterte technische Analyse<\/h3>\n<p>\nDer Wunsch, Informationen \u00fcber Probleme \"so schnell wie m\u00f6glich\" zu erhalten, hat uns zu aktiven Experimenten mit einfachen und verst\u00e4ndlichen Werkzeugen gef\u00fchrt \u2014 Pinba und XHProf.<\/p>\n<p>Pinba sendete uns in UDP-Paketen Statistiken \u00fcber die Geschwindigkeit der PHP-Webseitenteile, und man konnte in Echtzeit im MySQL-Speicher (Pinba ist mit einer eigenen MySQL-Engine f\u00fcr schnelle Ereignisanalysen ausgestattet) eine kurze Liste von Problemen sehen und darauf reagieren. XHProf erm\u00f6glichte es uns zudem automatisch, die Ausf\u00fchrungsgraphen der langsamsten PHP-Seiten der Kunden zu sammeln und zu analysieren, was dazu gef\u00fchrt haben k\u00f6nnte \u2014 gem\u00fctlich bei einer Tasse Tee oder etwas St\u00e4rkerem.<\/p>\n<p>Vor einiger Zeit wurde das Toolset um eine weitere recht einfache und verst\u00e4ndliche Engine auf Basis des Algorithmus zur inversen Indizierung erweitert, die hervorragend in der legend\u00e4ren Bibliothek Lucene umgesetzt wurde \u2014 Elastic\/Kibana. Die einfache Idee, mehrschichtige Dokumente in den inversen Lucene-Index auf Basis von Log-Ereignissen aufzunehmen und schnell nach diesen zu suchen, stellte sich als wirklich n\u00fctzlich heraus.<\/p>\n<p>Trotz der eher technischen Darstellung in Kibana mit den \"nach oben durchdringenden\" niedrigstufigen Konzepten wie \"Bucket\" und einer neu erfundenen Sprache der l\u00e4ngst vergessenen relationalen Algebra hilft uns das Tool gut bei den folgenden Aufgaben:<\/p>\n<ul>\n<li>Wie viele PHP-Fehler hatte der Bitrix24-Kunde im Portal p1 in der letzten Stunde und welche? Verstehen, verzeihen und schnell beheben.<\/li>\n<li>Wie viele Videoanrufe wurden in den letzten 24 Stunden in den Portalen in Deutschland get\u00e4tigt, mit welcher Qualit\u00e4t und gab es Probleme mit dem Kanal\/netzwerk?<\/li>\n<li>Wie gut funktioniert die systemeigene Funktionalit\u00e4t (unser C-Erweiterung f\u00fcr PHP), die aus den Quellcodes in der letzten Aktualisierung des Dienstes kompiliert und an die Kunden verteilt wurde? Gibt es segfaults?<\/li>\n<li>Werden die Kundendaten im PHP-Speicher untergebracht? Gibt es keine Fehler aufgrund von Speicher\u00fcberlastung: \"out of memory\"? Finden und entsch\u00e4rfen.<\/li>\n<\/ul>\n<p>\nHier ein konkretes Beispiel. Trotz sorgf\u00e4ltiger und mehrstufiger Tests trat bei einem Kunden, bei einem sehr untypischen Anwendungsfall und besch\u00e4digten Eingangsdaten, ein \u00e4rgerlicher und unerwarteter Fehler auf, die Sirene ert\u00f6nte und der Prozess zur schnellen Behebung begann:<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir einen hochdynamischen und kosteneffektiven DataLake organisiert haben und warum.\" src=\"\/wp-content\/uploads\/2020\/08\/8a802dba41b5d1a85c0dc41dfbf8b84e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZus\u00e4tzlich erm\u00f6glicht Kibana die Einrichtung von Benachrichtigungen f\u00fcr bestimmte Ereignisse, und in kurzer Zeit nutzen Dutzende von Mitarbeitern aus verschiedenen Abteilungen \u2014 von der technischen Unterst\u00fctzung \u00fcber die Entwicklung bis hin zu QA \u2014 das Tool im Unternehmen.<\/p>\n<p>Die Aktivit\u00e4t jeder Abteilung innerhalb des Unternehmens l\u00e4sst sich bequem verfolgen und messen \u2014 anstelle einer manuell vorgenommenen Analyse der Protokolle auf den Servern gen\u00fcgt es, einmal das Parsing der Protokolle einzurichten und sie an den Elastic-Cluster zu senden, um beispielsweise die Anzahl der verkauften 3D-gedruckten zweik\u00f6pfigen K\u00e4tzchen im Dashboard von Kibana f\u00fcr den letzten Mondmonat zu betrachten.<\/p>\n<h3>Basisgesch\u00e4ftsanalyse<\/h3>\n<p>\nAlle wissen, dass die Gesch\u00e4ftsanalyse in Unternehmen oft mit einer extrem aktiven Nutzung von, ja, Excel beginnt. Aber das Wichtigste ist, dass sie nicht damit endet. Die Cloud-basierte Google Analytics tr\u00e4gt zus\u00e4tzlich zur Sch\u00e4rfe bei \u2014 an das Gute gew\u00f6hnt man sich schnell.<\/p>\n<p>In unserem harmonisch wachsenden Unternehmen begannen \u00fcberall \u201ePropheten\u201c f\u00fcr intensivere Arbeiten mit gr\u00f6\u00dferen Datenmengen aufzutauchen. Regelm\u00e4\u00dfig traten Bed\u00fcrfnisse nach tiefergehenden und vielseitigeren Berichten auf, und durch die Bem\u00fchungen der Kollegen aus verschiedenen Abteilungen wurde vor einiger Zeit eine einfache und praktische L\u00f6sung organisiert \u2014 die Kombination von ClickHouse und PowerBI.<\/p>\n<p>Eine ziemlich lange Zeit hat diese flexible L\u00f6sung hervorragend geholfen, aber allm\u00e4hlich wurde klar, dass ClickHouse nicht elastisch ist und man damit nicht so umgehen kann.<\/p>\n<p>Es ist wichtig zu verstehen, dass ClickHouse, wie auch Druid, Vertica und Amazon RedShift (das auf Postgres basiert), analytische Engines sind, die f\u00fcr eine recht komfortable Analyse optimiert sind (Summen, Aggregationen, Minimum-Maximum nach Spalte und ein wenig Joins), da sie f\u00fcr die effiziente Speicherung von Spalten relationaler Tabellen organisiert sind, im Gegensatz zu den uns bekannten MySQL und anderen (row-oriented) Datenbanken.<\/p>\n<p>Im Grunde genommen ist ClickHouse lediglich eine umfangreichere Datenbank mit einer nicht ganz benutzerfreundlichen punktuellen Einf\u00fcgung (so ist es nun mal gedacht, alles in Ordnung), aber mit angenehmer Analyse und einer Reihe interessanter, leistungsstarker Funktionen zur Datenbearbeitung. Ja, man kann sogar einen Cluster erstellen \u2014 aber Sie verstehen, dass man N\u00e4gel nicht mit einem Mikroskop einschlagen sollte, und wir haben begonnen, nach anderen L\u00f6sungen zu suchen.<\/p>\n<h3>Die Nachfrage nach Python und Analysten<\/h3>\n<p>\nIn unserem Unternehmen gibt es viele Entwickler, die fast t\u00e4glich seit 10-20 Jahren Code in PHP, JavaScript, C#, C\/C++, Java, Go, Rust, Python und Bash schreiben. Es gibt auch viele erfahrene Systemadministratoren, die schon einige unglaublich ungl\u00fcckliche Katastrophen \u00fcberstanden haben, die statistischen Gesetzen nicht gehorchen (zum Beispiel wenn die meisten Festplatten in einem RAID-10 durch einen starken Blitzeinschlag zerst\u00f6rt werden). Unter solchen Bedingungen war lange Zeit unklar, was ein \u201eAnalyst in Python\u201c eigentlich ist. Python ist wie PHP, nur mit einem etwas l\u00e4ngeren Namen und weniger Spuren von bewusstseinserweiternden Substanzen im Quellcode des Interpreters. Doch mit der Erstellung immer neuer analytischer Berichte begannen erfahrene Entwickler, die Bedeutung einer engen Spezialisierung auf Tools wie numpy, pandas, matplotlib und seaborn immer mehr zu erkennen.<br \/>\nDie entscheidende Rolle spielten wahrscheinlich die pl\u00f6tzlichen Ohnmachtsanf\u00e4lle der Mitarbeiter bei der Kombination der Worte \u201elogistische Regression\u201c und der Demonstration des effizienten Aufbaus von Berichten \u00fcber gro\u00dfe Datenmengen mit ja, ja, pyspark.<\/p>\n<p>Apache Spark, dessen funktionale Paradigmen perfekt zur relationalen Algebra und den M\u00f6glichkeiten passen, haben einen solchen Eindruck bei Entwicklern hinterlassen, die mit MySQL vertraut sind, dass die Notwendigkeit, die Reihen der erfahrenen Analysten zu st\u00e4rken, so klar wie der Tag wurde.<\/p>\n<h3>Weitere Versuche, dass Apache Spark\/Hadoop durchstarten und was nicht ganz nach Plan lief.<\/h3>\n<p>\nBald wurde jedoch klar, dass mit Spark offenbar etwas systematisch nicht stimmte oder man einfach besser die H\u00e4nde waschen sollte. Wenn der Hadoop\/MapReduce\/Lucene-Stack von erfahrenen Programmierern entwickelt wurde, was offensichtlich ist, wenn man sich die Quellcodes auf Java oder die Ideen von Doug Cutting in Lucene ansieht, ist Spark \u00fcberraschend in einer sehr umstrittenen, aus praktischer Sicht nicht weiterentwickelten exotischen Sprache, Scala, geschrieben. Das regelm\u00e4\u00dfige Versagen von Berechnungen im Spark-Cluster aufgrund der unlogischen und nicht sehr transparenten Handhabung der Speicherzuteilung f\u00fcr Reduce-Operationen (es kommen gleich viele Schl\u00fcssel auf einmal) hat um ihn herum eine Aura geschaffen, die darauf hinweist, dass es viel Spielraum f\u00fcr Verbesserungen gibt. Zudem versch\u00e4rfte eine gro\u00dfe Anzahl seltsamer offener Ports, tempor\u00e4rer Dateien, die an den unerwartetsten Orten wuchsen, und zahlreiche jar-Abh\u00e4ngigkeiten die Situation \u2013 was bei den Systemadministratoren ein bekanntes Gef\u00fchl hervorrief: reine Wut (vielleicht h\u00e4tte man die H\u00e4nde mit Seife waschen sollen).<\/p>\n<p>Im Laufe der Zeit haben wir mehrere interne Analyseprojekte \u201e\u00fcberlebt\u201c, die intensiv Apache Spark (einschlie\u00dflich Spark Streaming, Spark SQL) und das Hadoop-\u00d6kosystem nutzen. Obwohl wir gelernt haben, es gut vorzubereiten und zu \u00fcberwachen, und es fast nicht mehr wegen der sich \u00e4ndernden Datenmuster und der Ungleichgewichtsproblematik bei der gleichm\u00e4\u00dfigen Hashing von RDDs ausf\u00e4llt, wurde das Verlangen nach einer bereits vorgefertigten, aktualisierbaren und verwaltbaren L\u00f6sung in der Cloud immer st\u00e4rker. In dieser Zeit haben wir versucht, die fertige Cloud-L\u00f6sung von Amazon Web Services zu nutzen \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/emr\/\">EMR<\/a><\/noindex> und haben anschlie\u00dfend versucht, unsere Aufgaben dort zu l\u00f6sen. EMR ist Amazons vorkonfigurierte Version von Apache Spark mit zus\u00e4tzlicher Software aus dem \u00d6kosystem, \u00e4hnlich wie die Cloudera\/Hortonworks-Distributionen.<\/p>\n<h3>Ein \u201eflexibles\u201c Dateispeicher f\u00fcr Analysen \u2014 ein dringender Bedarf<\/h3>\n<p>\nDie Erfahrung mit der \"Zubereitung\" von Hadoop\/Spark, einschlie\u00dflich der dabei erlittenen Verletzungen, war nicht umsonst. Es wurde zunehmend klarer, dass die Schaffung eines kosteng\u00fcnstigen und zuverl\u00e4ssigen Dateispeichers notwendig ist, der gegen Hardwareausf\u00e4lle resistent ist und in dem Dateien aus verschiedenen Systemen in unterschiedlichen Formaten gespeichert werden k\u00f6nnen, um auf diesen Daten effektive Abfragen f\u00fcr Berichte in angemessener Zeit durchf\u00fchren zu k\u00f6nnen.<\/p>\n<p>Au\u00dferdem w\u00e4re es w\u00fcnschenswert, dass die Softwareaktualisierung dieser Plattform nicht in einen n\u00e4chtlichen Albtraum an Neujahr m\u00fcndet, mit dem Lesen von 20-seitigen Java-Tracebacks und der Analyse von kilometerlangen detaillierten Protokollen der Clusterarbeit mithilfe des Spark History Servers und einer Lupe mit Beleuchtung. Ich w\u00fcrde mir ein einfaches und transparentes Werkzeug w\u00fcnschen, das keine regelm\u00e4\u00dfigen technischen Eingriffe erfordert, wenn der Entwickler bei der Ausf\u00fchrung einer Standard-MapReduce-Anfrage auf Probleme st\u00f6\u00dft, weil beim Speichern der Reduce-Daten im Arbeitsspeicher des Workers ein nicht optimal gew\u00e4hlter Partitionierungsalgorithmus f\u00fcr die Quelldaten verwendet wurde.<\/p>\n<h3>Ist Amazon S3 ein Kandidat f\u00fcr DataLake?<\/h3>\n<p>\nDie Erfahrung mit Hadoop\/MapReduce hat mich gelehrt, dass ein zuverl\u00e4ssiges und skalierbares Dateisystem sowie skalierbare Worker notwendig sind, die n\u00e4her an den Daten \u00bbkommen\u00ab, um Daten nicht \u00fcber das Netzwerk zu \u00fcbertragen. Die Worker sollten in der Lage sein, Daten in verschiedenen Formaten zu lesen, aber idealerweise nicht unn\u00f6tige Informationen einzulesen, und es sollte m\u00f6glich sein, die Daten im Vorfeld in f\u00fcr die Worker geeigneten Formaten zu speichern.<\/p>\n<p><b>Nochmal \u2014 die Grundidee.<\/b> Es besteht kein Wunsch, gro\u00dfe Daten in eine einzige Cluster-Analyse-Engine zu \u00bbladen\u00ab, die ohnehin fr\u00fcher oder sp\u00e4ter \u00fcberlastet sein wird und die man dann unsch\u00f6n sharden muss. Ich m\u00f6chte Dateien, einfach Dateien, in einem verst\u00e4ndlichen Format speichern und effiziente analytische Abfragen mit verschiedenen, aber verst\u00e4ndlichen Tools durchf\u00fchren. Und die Anzahl der Dateien in unterschiedlichen Formaten wird immer gr\u00f6\u00dfer. Es ist besser, nicht die Engine zu sharden, sondern die Rohdaten. Wir brauchen einen skalierbaren und universellen DataLake, haben wir beschlossen...<\/p>\n<p>Was w\u00e4re, wenn wir Dateien in einem vertrauten und vielen bekannten skalierbaren Cloud-Speicher wie Amazon S3 speichern, ohne eigene \u00bbSchweinemedaillons\u00ab aus Hadoop zubereiten zu m\u00fcssen?<\/p>\n<p>Klar, personenbezogene Daten sind \u00bbverboten\u00ab, aber was ist mit anderen Daten, wenn wir diese dort speichern und \u00bbeffizient verarbeiten\u00ab?<\/p>\n<h3>Die clusterbasierte Big-Data-Analyse-Umgebung von Amazon Web Services \u2013 ganz einfach erkl\u00e4rt.<\/h3>\n<p>\nNach unseren Erfahrungen mit AWS wird dort seit langem und intensiv unter verschiedenen Aspekten Apache Hadoop\/MapReduce eingesetzt, zum Beispiel im DataPipeline-Service (ich beneide die Kollegen, sie haben es wirklich geschafft, es richtig zu handhaben). Hier haben wir Backups von verschiedenen Diensten aus DynamoDB-Tabellen eingerichtet:<br \/>\n<img decoding=\"async\" alt=\"Wie wir einen hochdynamischen und kosteneffektiven DataLake organisiert haben und warum.\" src=\"\/wp-content\/uploads\/2020\/08\/058dc54ed032a7bf3e9e129646202440.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnd diese laufen regelm\u00e4\u00dfig auf integrierten Hadoop\/MapReduce-Clustern seit mehreren Jahren wie am Schn\u00fcrchen. \u201eEinmal eingestellt und vergessen\u201c:<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir einen hochdynamischen und kosteneffektiven DataLake organisiert haben und warum.\" src=\"\/wp-content\/uploads\/2020\/08\/a6569da8cafdb96c63250bb32bf51704.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAu\u00dferdem kann man effektiv Datenmanagement betreiben, indem man Jupiter-Notebooks f\u00fcr Analysten in der Cloud hochzieht und AWS SageMaker f\u00fcr das Training und den Einsatz von KI-Modellen nutzt. So sieht das bei uns aus:<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir einen hochdynamischen und kosteneffektiven DataLake organisiert haben und warum.\" src=\"\/wp-content\/uploads\/2020\/08\/c825d979c9278a8edf8e1e747ef6def8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnd ja, man kann sich oder den Analysten ein Notebook in der Cloud einrichten und an ein Hadoop\/Spark-Cluster anschlie\u00dfen, rechnen und alles dann \u201ebeenden\u201c:<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir einen hochdynamischen und kosteneffektiven DataLake organisiert haben und warum.\" src=\"\/wp-content\/uploads\/2020\/08\/73cea18c54d2a9ce8d0441463991808b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs ist wirklich praktisch f\u00fcr einzelne Analyseprojekte, und f\u00fcr einige von ihnen haben wir erfolgreich den EMR-Service f\u00fcr gro\u00df angelegte Berechnungen und Analysen genutzt. Aber was ist mit einer systematischen L\u00f6sung f\u00fcr DataLake, wird das funktionieren? In diesem Moment waren wir am Rande der Hoffnung und Verzweiflung und setzten unsere Suche fort.<\/p>\n<h3>AWS Glue \u2013 sauber verpacktes Apache Spark \"auf Steroiden\".<\/h3>\n<p>\nEs stellt sich heraus, dass AWS eine \u201eeigene\u201c Version des Stacks \u201eHive\/Pig\/Spark\u201c hat. Die Rolle von Hive, also das Verzeichnis von Dateien und ihren Typen im DataLake, wird durch den Dienst \u201eData catalog\u201c erf\u00fcllt, der auch offen \u00fcber seine Kompatibilit\u00e4t mit dem Apache Hive-Format kommuniziert. In diesen Dienst m\u00fcssen Informationen dar\u00fcber eingetragen werden, wo sich Ihre Dateien befinden und in welchem Format sie vorliegen. Die Daten k\u00f6nnen sich nicht nur in S3, sondern auch in einer Datenbank befinden, aber das ist nicht Thema dieses Beitrags. So ist der Datenkatalog im DataLake bei uns organisiert:<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir einen hochdynamischen und kosteneffektiven DataLake organisiert haben und warum.\" src=\"\/wp-content\/uploads\/2020\/08\/adb45d09698fdacbf41c86bbadde8bb2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Dateien sind registriert, ausgezeichnet. Wenn die Dateien aktualisiert werden, starten wir entweder manuell oder nach Plan die Crawler, die Informationen aus dem See aktualisieren und speichern. Anschlie\u00dfend k\u00f6nnen die Daten aus dem See bearbeitet und die Ergebnisse irgendwohin exportiert werden. Im einfachsten Fall exportieren wir auch in S3. Die Datenverarbeitung kann \u00fcberall erfolgen, aber es wird empfohlen, den Verarbeitungsprozess auf einem Apache Spark-Cluster mit erweiterten Funktionen \u00fcber die AWS Glue-API einzurichten. Im Grunde genommen kann man den alten, vertrauten Code in Python mit der Bibliothek PySpark verwenden und dessen Ausf\u00fchrung auf N Knoten eines Clusters mit einer bestimmten Leistung einstellen, inklusive Monitoring, ohne sich mit Hadoop intern zu besch\u00e4ftigen oder Docker-Container zu schleppen und Abh\u00e4ngigkeitskonflikte zu l\u00f6sen.<\/p>\n<p><b>Noch einmal \u2013 eine einfache Idee.<\/b> Es ist nicht notwendig, Apache Spark einzurichten; man muss lediglich Code in Python f\u00fcr PySpark schreiben, diesen lokal auf dem Desktop testen und dann auf einem gro\u00dfen Cluster in der Cloud ausf\u00fchren, wobei man angibt, wo die Quelldaten liegen und wo das Ergebnis abgelegt werden soll. Manchmal ist das notwendig und n\u00fctzlich, und so ist es bei uns eingerichtet:<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir einen hochdynamischen und kosteneffektiven DataLake organisiert haben und warum.\" src=\"\/wp-content\/uploads\/2020\/08\/dc03181573bb3f5cfcc3a8760bc7e07b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWenn etwas auf einem Spark-Cluster mit Daten in S3 berechnet werden muss, schreiben wir den Code in Python\/PySpark, testen ihn und auf geht\u2019s in die Cloud.<\/p>\n<p>Was ist mit der Orchestrierung? Und wenn eine Aufgabe fehlschl\u00e4gt und verloren geht? Ja, es wird vorgeschlagen, eine sch\u00f6ne Pipeline im Stil von Apache Pig zu erstellen, und wir haben es sogar ausprobiert, aber wir haben uns entschieden, vorerst unsere tiefgehend angepasste Orchestrierung mit PHP und JavaScript zu verwenden (ich verstehe, dass es kognitiven Dissonanz erzeugt, aber es funktioniert seit Jahren und fehlerfrei).<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir einen hochdynamischen und kosteneffektiven DataLake organisiert haben und warum.\" src=\"\/wp-content\/uploads\/2020\/08\/e00ed2047c5c6492e36fccc82e7278a3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Das Format der im See gespeicherten Dateien ist der Schl\u00fcssel zur Leistung.<\/h3>\n<p>\nEs ist sehr, sehr wichtig, noch zwei weitere Schl\u00fcsselpunkte zu verstehen. Damit die Anfragen an die Datei-Daten im See so schnell wie m\u00f6glich ausgef\u00fchrt werden und die Leistung nicht beim Hinzuf\u00fcgen neuer Informationen abnimmt, m\u00fcssen folgende Punkte beachtet werden:<\/p>\n<ul>\n<li>Die Spalten der Dateien m\u00fcssen separat gespeichert werden (um nicht alle Zeilen lesen zu m\u00fcssen, um zu verstehen, was in den Spalten ist). Dazu haben wir das Parquet-Format mit Kompression gew\u00e4hlt.<\/li>\n<li>Es ist sehr wichtig, die Dateien nach Kategorien wie: Sprache, Jahr, Monat, Tag, Woche zu sharden. Engines, die diesen Sharding-Typ verstehen, werden nur in die ben\u00f6tigten Ordner schauen, ohne die gesamten Daten durchzusehen.<\/li>\n<\/ul>\n<p>\nIm Wesentlichen stellen Sie auf diese Weise die Ausgangsdaten f\u00fcr oben aufgesetzte Analyse-Engines am effizientesten zur Verf\u00fcgung, die auch selektiv auf geschlossene Ordner zugreifen und nur die ben\u00f6tigten Spalten aus den Dateien lesen k\u00f6nnen. Es ist nicht n\u00f6tig, Daten irgendwohin \u201ehochzuladen\u201c (der Speicherplatz w\u00fcrde einfach platzen) \u2014 legen Sie sie einfach direkt in der richtigen Form in das Dateisystem ab. Nat\u00fcrlich sollte klar sein, dass es nicht sehr sinnvoll ist, eine riesige CSV-Datei im DataLake zu speichern, die zuerst zeilenweise vom Cluster gelesen werden muss, um die Spalten herauszuziehen. \u00dcberdenken Sie die beiden oben genannten Punkte noch einmal, falls Ihnen bisher unklar ist, warum das alles notwendig ist.<\/p>\n<h3>AWS Athena \u2014 der \u201eTeufel\u201c aus der Kiste<\/h3>\n<p>\nUnd hier, beim Erstellen eines Sees, stie\u00dfen wir irgendwie zuf\u00e4llig auf Amazon Athena. Pl\u00f6tzlich stellte sich heraus, dass wir, indem wir unsere umfangreichen Protokolldateien sorgf\u00e4ltig im richtigen (Parquet) spaltenbasierten Format in Scharden-Ordner ablegten, sehr schnell \u00e4u\u00dferst informative Abfragen durchf\u00fchren und Berichte erstellen konnten, OHNE einen Apache Spark\/Glue-Cluster zu nutzen.<\/p>\n<p>Die Athena-Engine, die auf Daten in S3 basiert, basiert auf dem legend\u00e4ren <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/big-data\/what-is-presto\/\">Presto<\/a><\/noindex> \u2014 Vertreter des MPP (Massive Parallel Processing)-Ansatzes zur Datenverarbeitung, der Daten dort abruft, wo sie liegen, von S3 und Hadoop bis hin zu Cassandra und einfachen Textdateien. Man muss nur Athena bitten, eine SQL-Abfrage auszuf\u00fchren, und dann l\u00e4uft alles \u201eschnell und selbstst\u00e4ndig\u201c. Es ist wichtig zu erw\u00e4hnen, dass Athena \u201eintelligent\u201c ist, nur in die ben\u00f6tigten shardierten Ordner geht und nur die ben\u00f6tigten Spalten aus der Anfrage liest.<\/p>\n<p>Die Abfragen an Athena sind ebenfalls interessant tarifiert. Wir zahlen f\u00fcr <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/athena\/pricing\/\">das Volumen der gescannten Daten<\/a><\/noindex>. Das hei\u00dft, nicht f\u00fcr die Anzahl der Maschinen im Cluster pro Minute, sondern\u2026 f\u00fcr die tats\u00e4chlich gescannten Daten, die auf 100-500 Maschinen ben\u00f6tigt werden, um die Abfrage auszuf\u00fchren.<\/p>\n<p>Und wenn man nur die ben\u00f6tigten Spalten aus richtig shardierten Ordnern abfragt, stellt sich heraus, dass der Dienst Athena uns nur einige Dutzend Dollar im Monat kostet. Nun, das ist doch fast kostenlos im Vergleich zur Analyse in Clustern!<\/p>\n<p>Hier ist \u00fcbrigens, wie wir unsere Daten in S3 shardieren:<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir einen hochdynamischen und kosteneffektiven DataLake organisiert haben und warum.\" src=\"\/wp-content\/uploads\/2020\/08\/00bd9ae48c1cd13f3c4f7d32692c9209.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn kurzer Zeit begannen in der Firma v\u00f6llig unterschiedliche Abteilungen, von der Informationssicherheit bis zur Analyse, aktiv Anfragen an Athena zu stellen und schnell, innerhalb von Sekunden, n\u00fctzliche Antworten aus den \u201egro\u00dfen\u201c Daten \u00fcber l\u00e4ngere Zeitr\u00e4ume hinweg zu erhalten: Monate, Halbjahre usw.<\/p>\n<p>Aber wir sind weitergegangen und haben Antworten in die Cloud geholt. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/athena\/latest\/ug\/connect-with-odbc.html\">\u00fcber den ODBC-Treiber.<\/a><\/noindex>: Ein Analyst schreibt in der gewohnten Konsole eine SQL-Anfrage, die auf 100-500 Maschinen \u201ezu geringen Kosten\u201c die Daten in S3 durchsucht und die Antwort normalerweise innerhalb von Sekunden zur\u00fcckgibt. Praktisch. Und schnell. Es ist schwer zu glauben.<\/p>\n<p>Nachdem wir beschlossen haben, die Daten in S3 zu speichern, in einem effizienten, spaltenbasierten Format und mit sinnvoller Datenpartitionierung... haben wir einen DataLake und eine schnelle, kosteng\u00fcnstige Analytik-Engine erhalten \u2014 kostenlos. Und sie ist im Unternehmen sehr popul\u00e4r geworden, da sie SQL versteht und um ein Vielfaches schneller arbeitet als bei Start\/Stopp\/Einstellungen von Clustern. \"Wenn das Ergebnis dasselbe ist, warum mehr bezahlen?\"<\/p>\n<p>Eine Abfrage an Athena sieht ungef\u00e4hr so aus. Wenn gew\u00fcnscht, kann man nat\u00fcrlich auch eine ausreichend <noindex><a rel=\"nofollow\" href=\"https:\/\/prestodb.io\/docs\/0.172\/index.html\">komplexe und mehrseitige SQL-Abfrage bilden.<\/a><\/noindex>, aber wir beschr\u00e4nken uns auf eine einfache Gruppierung. Lassen Sie uns sehen, welche Antwortcodes der Kunde vor einigen Wochen in den Protokollen des Webservers hatte und sicherstellen, dass es keine Fehler gibt:<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir einen hochdynamischen und kosteneffektiven DataLake organisiert haben und warum.\" src=\"\/wp-content\/uploads\/2020\/08\/30028991467b9e52f597faa617d374b5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Fazit<\/h3>\n<p>\nNachdem wir einen nicht gerade langen, aber schmerzhaften Weg zur\u00fcckgelegt haben, in dem wir st\u00e4ndig die Risiken, die Komplexit\u00e4t und die Kosten der Unterst\u00fctzung angemessen bewertet haben, haben wir eine L\u00f6sung f\u00fcr DataLake und Analytik gefunden, die uns sowohl in Bezug auf Geschwindigkeit als auch in Bezug auf die Kosten des Eigentums begeistert.<\/p>\n<p>Es stellte sich heraus, dass es f\u00fcr erfahrene Entwickler, die nie als Architekten gearbeitet haben und nicht wissen, wie man Quadrate auf Quadrate mit Pfeilen zeichnet und 50 Begriffe aus dem Hadoop-\u00d6kosystem kennt, durchaus m\u00f6glich ist, ein effektives, schnelles und kosteng\u00fcnstiges DataLake f\u00fcr die Bed\u00fcrfnisse v\u00f6llig unterschiedlicher Abteilungen des Unternehmens zu erstellen.<\/p>\n<p>\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0443\u0442\u0438 \u0433\u043e\u043b\u043e\u0432\u0430 \u0440\u0430\u0441\u043a\u0430\u043b\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043e\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0434\u0438\u0447\u0430\u0439\u0448\u0438\u0445 \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u043e\u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0433\u0440\u0443\u0437\u0430 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u0442\u043e\u043c\u043a\u0430\u043c\u0438. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 DataLake \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432: nagios\/munin -&gt; elastic\/kibana -&gt; Hadoop\/Spark\/s3 &#8230;, \u0441\u043e\u0431\u0438\u0440\u0430\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u0438 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u044f \u0444\u0438\u0437\u0438\u043a\u0443 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432. \u0412\u0441\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u0438 \u043c\u0443\u0442\u043d\u043e\u0435 \u2014 \u043e\u0442\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0440\u0430\u0433\u0430\u043c \u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u0430\u043c.<\/p>\n<p>Wenn Sie nicht in die Cloud m\u00f6chten und gerne offene Projekte unterst\u00fctzen, aktualisieren und patchen, k\u00f6nnen Sie ein \u00e4hnliches System lokal auf g\u00fcnstigen B\u00fcrocomputern mit Hadoop und Presto aufbauen. Das Wichtigste ist, nicht stehenzubleiben, voranzukommen, nach einfachen und klaren L\u00f6sungen zu suchen, und alles wird bestimmt klappen! Viel Erfolg an alle und bis zum n\u00e4chsten Mal!<br \/>\n<br \/>Quelle: <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 4.9.10 - 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 \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\" \/>\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\/de\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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\udd47Wie wir einen hocheffizienten und kosteng\u00fcnstigen DataLake organisiert haben und warum gerade so | ProHoster","description":"Wir leben in einer erstaunlichen Zeit, in der man schnell und einfach mehrere bereitgestellte Open-Source-Tools koppeln, sie mit einem \"deaktivierten Bewusstsein\" nach den Ratschl\u00e4gen von Stackoverflow einstellen und in den kommerziellen Betrieb nehmen kann. Und wenn es Zeit wird, sich zu aktualisieren\/erweitern oder jemand versehentlich ein paar Maschinen neu startet \u2014 realisiert man, dass man in einem obsessiven, schlechten Traum erwacht ist, und alles hat sich pl\u00f6tzlich kompliziert.","canonical_url":"https:\/\/prohoster.info\/de\/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":"de_DE","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 \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","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/92508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=92508"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/92508\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/92509"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=92508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=92508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=92508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}