{"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\/it\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak","title":{"rendered":"Come abbiamo organizzato un DataLake altamente efficace e a basso costo e perch\u00e9 lo abbiamo fatto in questo modo","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ci troviamo in un periodo straordinario, in cui \u00e8 possibile mettere insieme rapidamente e facilmente diversi strumenti open-source gi\u00e0 pronti, configurarli senza pensarci troppo, seguendo i consigli di stackoverflow, senza addentrarsi in complicate terminologie, e avviarli in un utilizzo commerciale. E quando sar\u00e0 necessario aggiornarsi o espandersi, o qualcuno riavvier\u00e0 accidentalmente alcune macchine, ci si render\u00e0 conto che \u00e8 iniziato un incubo sgradevole, tutto \u00e8 diventato all'improvviso complicato e irriconoscibile, non c'\u00e8 via di ritorno, il futuro \u00e8 nebuloso e pi\u00f9 sicuro sar\u00e0 allevare api e produrre formaggio invece di programmare.<\/p>\n<p>Non per nulla, colleghi pi\u00f9 esperti, con capelli grigi e pieni di bug, osservando l'incredibile e veloce distribuzione di pacchetti di \"container\" in \"cubi\" su decine di server utilizzando \"linguaggi trendy\" con supporto integrato per l'I\/O asincrono non bloccante, sorridono modestamente. E silenziosamente continuano a leggere \"man ps\", analizzano fino a sanguinare gli occhi i sorgenti di \"nginx\" e scrivono, scrivono, scrivono unit test. Sanno che il bello deve ancora venire, quando \"tutto questo\" un giorno diventer\u00e0 un incubo sotto il Capodanno. E solo una profonda comprensione della natura di Unix, la tabella degli stati TCP\/IP memorizzata e i principali algoritmi di ordinamento-ricerca li aiuteranno a riportare il sistema in vita allo scoccare della mezzanotte.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAh gi\u00e0, mi sono distratto un po', ma spero di essere riuscito a trasmettere il senso di attesa.<br \/>\nOggi voglio condividere la nostra esperienza nella distribuzione di uno stack conveniente e pratico per il DataLake, in grado di risolvere la maggior parte delle problematiche analitiche in azienda per le diverse divisioni.<\/p>\n<p>Tempo fa, ci siamo resi conto che le aziende hanno sempre pi\u00f9 bisogno dei risultati sia dell'analisi di prodotto che di quella tecnica (per non parlare delle ciliegine sulla torta come il machine learning) e per comprendere tendenze e rischi, \u00e8 necessario raccogliere e analizzare sempre pi\u00f9 metriche.<\/p>\n<h3>Analisi tecnica di base in \"Bitrix24\"<\/h3>\n<p>\nQualche anno fa, insieme al lancio del servizio \"Bitrix24\", abbiamo investito attivamente tempo e risorse nella creazione di una piattaforma analitica semplice e affidabile che aiutasse a identificare rapidamente i problemi nell'infrastruttura e a pianificare i passi successivi. Naturalmente, si voleva utilizzare strumenti gi\u00e0 pronti, semplici e comprensibili. Alla fine, abbiamo scelto nagios per il monitoraggio e munin per l'analisi e la visualizzazione. Ora abbiamo migliaia di controlli in nagios, centinaia di grafici in munin e i colleghi li usano quotidianamente con successo. Le metriche sono chiare, i grafici sono comprensibili, il sistema funziona in modo affidabile da diversi anni e vengono regolarmente aggiunti nuovi test e grafici: quando introduciamo un nuovo servizio, aggiungiamo alcuni test e grafici. Buon viaggio.<\/p>\n<h3>Tenere il polso della situazione - analisi tecnica avanzata<\/h3>\n<p>\nIl desiderio di ricevere informazioni sui problemi \"il pi\u00f9 rapidamente possibile\" ci ha portato a sperimentare attivamente con strumenti semplici e comprensibili - pinba e xhprof.<\/p>\n<p>Pinba ci inviava in pacchetti UDP statistiche sulla velocit\u00e0 delle parti delle pagine web in PHP, e potevamo vedere in tempo reale in un'archiviazione MySQL (pinba ha il proprio motore MySQL per un'analisi rapida degli eventi) una lista di problemi e reagire a essi. Xhprof, in modo automatico, consentiva di raccogliere i grafi di esecuzione delle pagine PHP pi\u00f9 lente dai clienti e analizzare cosa potesse aver causato il problema - tranquillamente, sorseggiando t\u00e8 o qualcosa di pi\u00f9 forte.<\/p>\n<p>Tempo fa, il nostro strumento si \u00e8 arricchito di un altro motore piuttosto semplice e comprensibile basato sull'algoritmo di indicizzazione inversa, splendidamente implementato nella leggendaria libreria Lucene - Elastic\/Kibana. L'idea di base della registrazione multithreaded dei documenti nell'indice inverso di Lucene basato sugli eventi nei log e la ricerca rapida in essi tramite suddivisione a facce si \u00e8 rivelata, davvero, utile.<\/p>\n<p>Nonostante l'aspetto piuttosto tecnico delle visualizzazioni in Kibana con concetti low-level come \"bucket\" che spuntano verso l'alto e un linguaggio reinventato non completamente dimenticato dell'algebra relazionale, lo strumento ci ha dimostrato di essere molto utile nelle seguenti mansioni:<\/p>\n<ul>\n<li>Quante erano le errori PHP sul portale di Bitrix24 p1 nell'ultima ora e quali? Comprendere, perdonare e sistemare rapidamente.<\/li>\n<li>Quanti videochiamate sono state effettuate sui portali in Germania nelle ultime 24 ore, con quale qualit\u00e0 e ci sono stati problemi con il canale\/rete?<\/li>\n<li>Quanto bene funziona la funzionalit\u00e0 di sistema (il nostro plugin in C per PHP), compilato dai sorgenti nell'ultimo aggiornamento del servizio e distribuito ai clienti? Ci sono segfault?<\/li>\n<li>I dati dei clienti vengono memorizzati nella memoria PHP? Ci sono errori di superamento della memoria allocata dal processo: \u00about of memory\u00bb? Identificare e risolvere.<\/li>\n<\/ul>\n<p>\nEcco un esempio concreto. Nonostante test approfonditi e multilivello, il cliente ha riscontrato un errore fastidioso e inaspettato in un caso estremamente non standard con dati di input danneggiati; \u00e8 suonata una sirena e ha avuto inizio il processo di correzione rapida:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficace e a basso costo e perch\u00e9 lo abbiamo fatto in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/8a802dba41b5d1a85c0dc41dfbf8b84e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInoltre, Kibana consente di organizzare avvisi per eventi specifici, e in breve tempo lo strumento \u00e8 stato utilizzato da decine di dipendenti di diversi reparti, dal supporto tecnico e sviluppo a QA.<\/p>\n<p>L'attivit\u00e0 di qualsiasi reparto all'interno dell'azienda \u00e8 diventata facile da monitorare e misurare: invece di un'analisi manuale dei log sui server, \u00e8 sufficiente configurare una volta il parsing dei log e l'invio nel cluster Elastic, per godere, ad esempio, della visualizzazione nel dashboard di Kibana del numero di gattini a due teste stampati in 3D nel mese lunare scorso.<\/p>\n<h3>Analisi aziendale di base<\/h3>\n<p>\nTutti sanno che spesso l'analisi aziendale nelle aziende inizia con l'uso estremamente attivo di Excel, s\u00ec, s\u00ec. Ma, cosa pi\u00f9 importante, non deve finire l\u00ec. Inoltre, Google Analytics in cloud contribuisce a rendere le cose pi\u00f9 semplici; ci si abitua rapidamente al buono.<\/p>\n<p>Nella nostra azienda, in armoniosa crescita, sono cominciati a comparire qua e l\u00e0 dei 'profeti' che spingevano per un lavoro pi\u00f9 intenso con dati pi\u00f9 complessi. Si sono presentate regolarmente esigenze per rapporti pi\u00f9 approfonditi e completi e con gli sforzi dei ragazzi di diversi reparti, tempo fa \u00e8 stata organizzata una soluzione semplice e pratica: l'integrazione di ClickHouse e PowerBI.<\/p>\n<p>Per un lungo periodo, questa soluzione flessibile ha funzionato molto bene, ma lentamente ci siamo resi conto che ClickHouse non \u00e8 infinito, e non si pu\u00f2 abusarne.<\/p>\n<p>\u00c8 importante capire che ClickHouse, come Druid, Vertica e Amazon RedShift (basato su Postgres), \u00e8 un motore analitico ottimizzato per analisi piuttosto veloci (somme, aggregazioni, minimi e massimi su colonne e un po' di join), poich\u00e9 \u00e8 progettato per immagazzinare in modo efficiente colonne di tabelle relazionali, a differenza dei famosi database MySQL e altri (row-oriented).<\/p>\n<p>In sostanza, ClickHouse \u00e8 solo un \u00abdatabase\u00bb pi\u00f9 capiente, con un'inserzione puntuale non molto comoda (\u00e8 progettato in questo modo, va bene), ma con un'analisi piacevole e un insieme di potenti funzioni per lavorare con i dati. S\u00ec, \u00e8 possibile persino creare un cluster \u2014 ma capite che usare un microscopio per battere chiodi non \u00e8 esattamente corretto, e abbiamo cominciato a cercare altre soluzioni.<\/p>\n<h3>Domanda di Python e analisti<\/h3>\n<p>\nNella nostra azienda ci sono molti sviluppatori che scrivono codice praticamente ogni giorno da 10 a 20 anni in PHP, JavaScript, C#, C\/C++, Java, Go, Rust, Python, Bash. Ci sono anche molti esperti amministratori di sistema che hanno vissuto non una ma molte catastrofi incredibili che non si inseriscono nelle leggi della statistica (ad esempio, quando la maggior parte dei dischi in raid-10 vengono distrutti da un forte fulmine). In tali condizioni, a lungo non \u00e8 stato chiaro cosa intendere per 'analista in Python'. Python \u00e8 simile a PHP, solo con un nome leggermente pi\u00f9 lungo e con meno tracce di sostanze che alterano la coscienza nel codice sorgente dell'interprete. Tuttavia, con la creazione di sempre nuovi report analitici, gli sviluppatori esperti hanno cominciato a rendersi conto dell'importanza di specializzarsi in strumenti come numpy, pandas, matplotlib e seaborn.<br \/>\nLa parola decisiva \u00e8 stata probabilmente l'improvviso svenimento dei dipendenti all'udire la combinazione di parole 'regressione logistica' e la dimostrazione della costruzione efficace di report su dati voluminosi usando, s\u00ec s\u00ec, pyspark.<\/p>\n<p>Apache Spark, la sua paradigma funzionale, si adatta perfettamente all'algebra relazionale e ha impressionato cos\u00ec tanto gli sviluppatori abituati a MySQL che \u00e8 diventato chiaro, come il giorno, che c'era bisogno di rafforzare le fila con esperti analisti.<\/p>\n<h3>I successivi tentativi di Apache Spark\/Hadoop di decollare e ci\u00f2 che non \u00e8 andato secondo programma.<\/h3>\n<p>\nTuttavia, ben presto \u00e8 diventato chiaro che con Spark forse c'era qualcosa di sistemico che non andava o semplicemente bisognava lavarsi le mani meglio. Se il stack Hadoop\/MapReduce\/Lucene era stato realizzato da programmatori abbastanza esperti, il che \u00e8 evidente se si osservano con attenzione le fonti in Java o le idee di Doug Cutting in Lucene, Spark, improvvisamente, \u00e8 stato scritto in un linguaggio molto controverso dal punto di vista pratico e attualmente non in sviluppo, Scala. La caduta regolare dei calcoli nel cluster Spark a causa di un lavoro non logico e poco trasparente nella gestione della memoria durante le operazioni di reduce (arrivano subito molte chiavi) ha creato intorno ad esso un'aura di qualcosa che ha ampio margine di crescita. Inoltre, la situazione era aggravata dalla grande quantit\u00e0 di porte aperte strane, file temporanei in crescita nei luoghi pi\u00f9 incomprensibili e un'infinit\u00e0 di dipendenze jar, il che suscitava negli amministratori di sistema una familiarit\u00e0 ben nota sin dall'infanzia: un'acerba avversione (o forse dovevamo semplicemente lavarci le mani con sapone).<\/p>\n<p>Alla fine, abbiamo \"sopportato\" diversi progetti analitici interni che utilizzavano attivamente Apache Spark (incluso Spark Streaming e Spark SQL) e l'ecosistema Hadoop (e altro ancora). Anche se col tempo abbiamo imparato a \"prepararlo\" e monitorarlo decentemente e \"esso\" ha praticamente smesso di cadere improvvisamente a causa del cambiamento nella natura dei dati e del disequilibrio nell'hashing uniforme degli RDD, il desiderio di utilizzare qualcosa di gi\u00e0 pronto, aggiornato e amministrato da qualche parte nel cloud cresceva sempre di pi\u00f9. Proprio in quel momento abbiamo provato a utilizzare una costruzione cloud pronta di Amazon Web Services \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/emr\/\">EMR<\/a><\/noindex> e, successivamente, abbiamo cercato di risolvere i compiti gi\u00e0 su di essa. EMR \u00e8 una variante di Apache Spark preparata da Amazon con software aggiuntivo dall'ecosistema, simile ai pacchetti Cloudera\/Hortonworks.<\/p>\n<h3>Uno storage \"flessibile\" per l'analisi \u00e8 un'esigenza acuta.<\/h3>\n<p>\nL'esperienza di \"preparare\" Hadoop\/Spark con scottature su varie parti del corpo non \u00e8 stata vana. \u00c8 stata sempre pi\u00f9 evidente la necessit\u00e0 di creare un'unica soluzione di storage economica e affidabile, resistente a guasti hardware, in cui poter conservare file in vari formati da diversi sistemi e effettuare selezioni sui dati in modo efficace e in tempi ragionevoli per la reportistica.<\/p>\n<p>Inoltre, si desiderava che l'aggiornamento del software di questa piattaforma non si trasformasse in un incubo notturno di Capodanno, con la lettura di tracce Java lunghe 20 pagine e l'analisi di chilometri di dettagli dei log di funzionamento del cluster tramite Spark History Server e una lente di ingrandimento. Si voleva avere uno strumento semplice e trasparente che non richiedesse regolari immersioni sotto il cofano, se lo sviluppatore smetteva di eseguire una richiesta standard di MapReduce a causa della perdita di dati reduce dalla memoria del worker a seguito di un algoritmo di partizionamento poco fortunato.<\/p>\n<h3>Amazon S3 \u2014 candidato per DataLake?<\/h3>\n<p>\nL'esperienza con Hadoop\/MapReduce ci ha insegnato che \u00e8 necessaria sia una filesystem affidabile e scalabile sia worker scalabili che \"si avvicinano\" ai dati, per non dover trasmettere dati attraverso la rete. I worker devono essere in grado di leggere dati in vari formati ma, preferibilmente, senza leggere informazioni superflue e con la possibilit\u00e0 di memorizzare preventivamente i dati in formati comodi per i worker.<\/p>\n<p><b>Ancora una volta \u2014 l'idea principale.<\/b> Non c'\u00e8 voglia di \"caricare\" grandi dati in un unico motore analitico clusterizzato, che prima o poi si affogher\u00e0 e sar\u00e0 necessario shardarlo in modo poco bello. Si desidera conservare file, semplici file, in un formato comprensibile e svolgere su di essi analisi efficaci con strumenti diversi ma comprensibili. E il numero di file in vari formati aumenter\u00e0 sempre di pi\u00f9. E sarebbe meglio shardare i dati sorgente piuttosto che il motore. Abbiamo deciso che ci serviva un DataLake espandibile e universale\u2026<\/p>\n<p>E se conservassimo i file in un noto e scalabile storage cloud di Amazon S3, senza doverci occupare della preparazione manuale di Hadoop?<\/p>\n<p>Chiaramente, i dati personali \"non possono\" essere gestiti in questo modo, ma per gli altri dati, se vengono estratti e \"trattati in modo efficace\"?<\/p>\n<h3>L'ecosistema di analisi dati clusterizzata di Amazon Web Services \u2014 con parole molto semplici.<\/h3>\n<p>\nA giudicare dalla nostra esperienza con AWS, Apache Hadoop\/MapReduce viene utilizzato da tempo e attivamente sotto diverse forme, ad esempio nel servizio DataPipeline (invidio i colleghi, hanno imparato a prepararlo correttamente). Qui abbiamo impostato backup da diversi servizi da tabelle DynamoDB:<br \/>\n<img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficace e a basso costo e perch\u00e9 lo abbiamo fatto in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/058dc54ed032a7bf3e9e129646202440.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE vengono eseguiti regolarmente su cluster incorporati Hadoop\/MapReduce come un orologio da anni. \"Impostato e dimenticato\":<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficace e a basso costo e perch\u00e9 lo abbiamo fatto in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/a6569da8cafdb96c63250bb32bf51704.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInoltre, \u00e8 possibile impegnarsi efficacemente nel data satanism, attivando i notebook Jupyter per gli analisti nel cloud e usando il servizio AWS SageMaker per l'addestramento e il deploy di modelli AI. Ecco come appare per noi:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficace e a basso costo e perch\u00e9 lo abbiamo fatto in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/c825d979c9278a8edf8e1e747ef6def8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE s\u00ec, \u00e8 possibile sollevare un laptop nel cloud o analitica e collegarlo a un cluster Hadoop\/Spark, eseguire calcoli e poi \"fermarlo\":<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficace e a basso costo e perch\u00e9 lo abbiamo fatto in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/73cea18c54d2a9ce8d0441463991808b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 davvero comodo per progetti analitici specifici e per alcuni di essi abbiamo utilizzato con successo il servizio EMR per calcoli su larga scala e analisi. E riguardo a una soluzione sistemica per DataLake, sar\u00e0 possibile? In quel momento eravamo sul confine tra speranza e disperazione e continuavamo la ricerca.<\/p>\n<h3>AWS Glue \u00e8 un Apache Spark \"potenziato\"<\/h3>\n<p>\nSi \u00e8 scoperto che AWS ha una propria versione dello stack \"Hive\/Pig\/Spark\". Il ruolo di Hive, ovvero il catalogo dei file e dei loro tipi nel DataLake, \u00e8 svolto dal servizio \"Data catalog\", che non nasconde la sua compatibilit\u00e0 con il formato Apache Hive. In questo servizio \u00e8 necessario aggiungere informazioni su dove si trovano i file e in quale formato. I dati possono trovarsi non solo in s3, ma anche in un database, ma di questo non parleremo in questo post. Ecco come \u00e8 organizzato il catalogo dei dati DataLake per noi:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficace e a basso costo e perch\u00e9 lo abbiamo fatto in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/adb45d09698fdacbf41c86bbadde8bb2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI file sono registrati, ottimo. Se i file vengono aggiornati, avviamo manualmente o secondo un programma crawler che aggiorna le informazioni su di essi dal lago e le conserva. Successivamente, i dati dal lago possono essere elaborati e i risultati esportati. Nel caso pi\u00f9 semplice, esportiamo anche in s3. I dati possono essere elaborati in qualsiasi luogo, ma \u00e8 consigliato configurare il processo di elaborazione su un cluster Apache Spark sfruttando le funzionalit\u00e0 avanzate tramite l'API AWS Glue. Fondamentalmente, \u00e8 possibile prendere il vecchio e familiare codice Python utilizzando la libreria pyspark e configurarne l'esecuzione su N nodi di un cluster di una certa potenza con monitoraggio, senza scavare nelle viscere di Hadoop e trascinare contenitori Docker e risolvere conflitti di dipendenze.<\/p>\n<p><b>Ripeto: \u00e8 un'idea semplice.<\/b> Non \u00e8 necessario configurare Apache Spark, basta scrivere codice in Python per pyspark, testarlo localmente sul desktop e poi eseguirlo su un grande cluster nel cloud, specificando dove si trovano i dati sorgente e dove mettere il risultato. A volte \u00e8 necessario e utile ecco come \u00e8 configurato da noi:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficace e a basso costo e perch\u00e9 lo abbiamo fatto in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/dc03181573bb3f5cfcc3a8760bc7e07b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuindi, se \u00e8 necessario eseguire calcoli su un cluster Spark utilizzando dati in s3, scriviamo codice in Python\/pyspark, testiamo e via nel cloud.<\/p>\n<p>E per quanto riguarda l'orchestrazione? E se il compito fallisce e scompare? S\u00ec, si propone di realizzare un bel pipeline in stile Apache Pig e persino abbiamo provato, ma abbiamo deciso di utilizzare per ora la nostra orchestrazione profondamente personalizzata in PHP e JavaScript (capisco che sorge un dissonanza cognitiva, ma funziona da anni senza errori).<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficace e a basso costo e perch\u00e9 lo abbiamo fatto in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/e00ed2047c5c6492e36fccc82e7278a3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Il formato dei file memorizzati nel lago \u00e8 la chiave per le prestazioni<\/h3>\n<p>\n\u00c8 molto, molto importante capire ancora due punti chiave. Affinch\u00e9 le query sui dati dei file nel lago vengano eseguite il pi\u00f9 rapidamente possibile e che le prestazioni non degradino all'aggiunta di nuove informazioni, \u00e8 necessario:<\/p>\n<ul>\n<li>Conservare le colonne dei file separatamente (per non dover leggere tutte le righe per capire cosa c'\u00e8 nelle colonne). Per questo abbiamo scelto il formato parquet con compressione.<\/li>\n<li>\u00c8 molto importante suddividere i file in cartelle secondo il principio: lingua, anno, mese, giorno, settimana. I motori incapaci di comprendere questo tipo di sharding esamineranno solo le cartelle necessarie, senza passare a setacciarli tutti in una volta.<\/li>\n<\/ul>\n<p>\nIn sostanza, in questo modo si forniscono i dati di origine nel modo pi\u00f9 efficiente possibile per i motori analitici sovrapposti, i quali sanno come accedere in modo selettivo alle cartelle sharded e leggere solo le colonne necessarie dai file. Non \u00e8 necessario \"caricare\" i dati da nessuna parte (il repository semplicemente esploder\u00e0) - basta semplicemente metterli in modo saggio nel file system nel formato corretto. Naturalmente, qui deve essere chiaro che memorizzare un enorme file csv in DataLake, che deve essere prima letto completamente riga per riga dal cluster per estrarre le colonne, non \u00e8 molto funzionale. Riconsiderate i due punti sopra se non \u00e8 ancora chiaro perch\u00e9 tutto ci\u00f2.<\/p>\n<h3>AWS Athena - un \"diavolo\" apparso all'improvviso<\/h3>\n<p>\nEd ecco, creando un lago, abbiamo, in un certo senso, incappato in Amazon Athena. \u00c8 emerso inaspettatamente che, disponendo con cura i nostri file di enormi log per sharding in un formato colonnare corretto (parquet), era possibile eseguire selezioni estremamente informative e generare rapporti in modo molto rapido SENZA, senza un cluster Apache Spark\/Glue.<\/p>\n<p>Il motore Athena, che lavora con dati in s3, \u00e8 basato sul leggendario <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/big-data\/what-is-presto\/\">Presto<\/a><\/noindex> rappresentante della famiglia MPP (massive parallel processing) degli approcci al trattamento dei dati, che preleva i dati dove si trovano, da s3 e Hadoop a Cassandra e normali file di testo. Basta chiedere ad Athena di eseguire una query SQL, e tutto il resto \"funziona rapidamente e da solo\". \u00c8 importante notare che Athena \u00e8 \"intelligente\", accede solo alle cartelle sharded necessarie e legge solo le colonne richieste nella query.<\/p>\n<p>Le richieste a Athena sono interessanti anche dal punto di vista della tariffazione. Paghiamo per <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/athena\/pricing\/\">il volume dei dati analizzati<\/a><\/noindex>. Cio\u00e8, non in base al numero di macchine nel cluster al minuto, ma\u2026 per i dati realmente analizzati su 100-500 macchine, solo quelli necessari per completare la richiesta.<\/p>\n<p>Richiedendo solo le colonne necessarie dalle cartelle correttamente sharded, abbiamo scoperto che il servizio Athena ci costa solo decine di dollari al mese. \u00c8 fantastico, quasi gratuito, rispetto all'analisi nei cluster!<\/p>\n<p>Ecco come shardiamo i nostri dati in s3:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficace e a basso costo e perch\u00e9 lo abbiamo fatto in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/00bd9ae48c1cd13f3c4f7d32692c9209.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDi conseguenza, in breve tempo, diversi reparti dell'azienda, dalla sicurezza informatica all'analisi, hanno iniziato a fare richieste ad Athena e a ricevere risposte utili dai 'big data' in pochi secondi su periodi piuttosto lunghi: mesi, semestri, ecc.<\/p>\n<p>Ma abbiamo deciso di andare oltre e cercare risposte nel cloud <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/athena\/latest\/ug\/connect-with-odbc.html\">tramite un driver ODBC<\/a><\/noindex>: l'analista, nella console abituale, scrive una query SQL che 'per pochi centesimi' analizza i dati in s3 su 100-500 macchine e restituisce la risposta solitamente in pochi secondi. Comodo. E veloce. \u00c8 difficile da credere fino ad ora.<\/p>\n<p>Di conseguenza, decidendo di conservare i dati in s3, in un formato di colonna efficiente e con uno shard ragionevole dei dati per le cartelle\u2026 abbiamo ottenuto un DataLake e un motore analitico veloce e a basso costo \u2014 gratuitamente. \u00c8 diventato molto popolare in azienda, poich\u00e9 comprende SQL e lavora molto pi\u00f9 velocemente rispetto ai lanci\/arresti\/configurazioni dei cluster. 'Se il risultato \u00e8 lo stesso, perch\u00e9 pagare di pi\u00f9?'<\/p>\n<p>Una richiesta a Athena appare pi\u00f9 o meno cos\u00ec. Se lo desideri, naturalmente, puoi formare una richiesta SQL piuttosto <noindex><a rel=\"nofollow\" href=\"https:\/\/prestodb.io\/docs\/0.172\/index.html\">complessa e multi-pagina<\/a><\/noindex>, ma ci limiteremo a una semplice aggregazione. Controlliamo quali codici di risposta ha avuto il cliente alcune settimane fa nei log del server web e assicuriamoci che non ci siano errori:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficace e a basso costo e perch\u00e9 lo abbiamo fatto in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/30028991467b9e52f597faa617d374b5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Conclusioni<\/h3>\n<p>\nDopo aver percorso un cammino non dicasi lungo, ma doloroso, valutando costantemente i rischi e il livello di complessit\u00e0 e il costo del supporto, abbiamo trovato una soluzione per DataLake e analisi che continua a sorprenderci per velocit\u00e0 e costo di gestione.<\/p>\n<p>Si \u00e8 rivelato che costruire un DataLake efficace, veloce e a basso costo per le esigenze di reparti completamente diversi dell'azienda \u00e8 fattibile anche per sviluppatori esperti che non hanno mai lavorato come architetti e non sanno disegnare quadrati con quadrati e frecce e non conoscono 50 termini dell'ecosistema Hadoop.<\/p>\n<p>All'inizio del percorso, la testa esplodeva a causa dei numerosi e complicati zoo di software open e closed, e della consapevolezza del peso della responsabilit\u00e0 verso le generazioni future. Iniziate a costruire il vostro DataLake partendo da strumenti semplici: nagios\/munin -&gt; elastic\/kibana -&gt; Hadoop\/Spark\/s3\u2026, raccogliendo feedback e comprendendo profondamente la fisica dei processi in atto. Tutto ci\u00f2 che \u00e8 complesso e poco chiaro - lasciatelo ai nemici e ai concorrenti.<\/p>\n<p>Se non vuoi andare nel cloud e ami mantenere, aggiornare e patchare progetti open, puoi costruire un schema simile al nostro a livello locale, su macchine economiche d'ufficio con Hadoop e Presto sopra. L'importante \u00e8 non fermarsi e andare avanti, cercare soluzioni semplici e chiare e tutto andr\u00e0 bene! Buona fortuna a tutti e ci vediamo!<br \/>\n<br \/>Fonte: <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.0.1 - 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\/it\/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.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Come abbiamo organizzato un DataLake altamente efficiente e a basso costo e perch\u00e9 proprio in questo modo | ProHoster","description":"Viviamo un'epoca straordinaria in cui \u00e8 possibile collegare rapidamente e facilmente diversi strumenti open source gi\u00e0 pronti, configurarli \"senza pensare\" seguendo i consigli di stackoverflow, senza dover approfondire nelle \"lontane lettere\", e farli partire.","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/92508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=92508"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/92508\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/92509"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=92508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=92508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=92508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}