{"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 efficiente ed economico e perch\u00e9 proprio in questo modo","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Viviamo in un'epoca straordinaria in cui \u00e8 possibile collegare rapidamente e facilmente diversi strumenti open source pronti, configurarli con una 'mente spenta' seguendo i consigli di Stack Overflow, senza addentrarsi nei 'mille termini', e avviarli in produzione. E quando sar\u00e0 necessario aggiornarsi\/espandersi o qualcuno riavvier\u00e0 per caso un paio di macchine, ci si accorger\u00e0 che ha iniziato un incubo ossessivo, la situazione \u00e8 diventata troppo complessa per essere riconosciuta, non c'\u00e8 via di ritorno, il futuro \u00e8 nebuloso e, invece di programmare, \u00e8 meglio dedicarsi all'apicoltura e alla produzione di formaggio.<\/p>\n<p>Non \u00e8 forse un caso che i colleghi pi\u00f9 esperti, con capelli bianchi punteggiati da bug, osservando il dispiegamento incredibilmente rapido di pacchetti di 'container' in 'cubi' su decine di server con 'linguaggi trendy' dotati di supporto incorporato per input\/output asincroni e non bloccanti, sorridano modestamente. E continuano silenziosamente a leggere 'man ps', immergendosi fino a sanguinare dagli occhi nei sorgenti di 'nginx' e a scrivere-scrivere-scrivere test unitari. I colleghi sanno che il meglio deve ancora venire, quando 'tutto questo' un giorno diventer\u00e0 un incubo colossale sotto il Natale. E solo una profonda comprensione della natura unix, delle tabelle di stato TCP\/IP e degli algoritmi di ricerca e ordinamento di base li aiuter\u00e0 a riportare il sistema in vita al rintocco della mezzanotte.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAh gi\u00e0, mi sono un po' distratto, ma spero di aver trasmesso lo stato di anticipazione.<br \/>\nOggi voglio condividere la nostra esperienza nel dispiegare un stack conveniente e pratico per DataLake, in grado di risolvere la maggior parte delle esigenze analitiche dell'azienda per i pi\u00f9 diversi reparti.<\/p>\n<p>Tempo fa siamo arrivati alla consapevolezza che le aziende necessitano sempre di pi\u00f9 dei frutti dell'analisi sia di prodotto che tecnica (senza contare le '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 \u00abBitrix24\u00bb, abbiamo investito attivamente tempo e risorse nella creazione di una piattaforma analitica semplice e affidabile, che ci aiutasse a vedere rapidamente i problemi nell'infrastruttura e a pianificare il passo successivo. Ovviamente, era preferibile utilizzare strumenti pronti e il pi\u00f9 semplici e comprensibili possibile. Di conseguenza, abbiamo scelto nagios per il monitoraggio e munin per l'analitica e la visualizzazione. Ora abbiamo migliaia di controlli in nagios, centinaia di grafici in munin e i colleghi li utilizzano con successo ogni giorno. 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 in produzione, aggiungiamo alcuni test e grafici. Buon lavoro.<\/p>\n<h3>La mano sul polso \u2014 analisi tecnica avanzata<\/h3>\n<p>\nIl desiderio di ricevere informazioni sui problemi \u00abil pi\u00f9 rapidamente possibile\u00bb ci ha portati a esperimenti attivi con strumenti semplici e comprensibili \u2014 pinba e xhprof.<\/p>\n<p>Pinba ci inviava in pacchetti UDP statistiche sulla velocit\u00e0 di esecuzione delle parti delle pagine web in PHP, e si poteva vedere in tempo reale nel database MySQL (con pinba viene fornito un proprio motore MySQL per un'analisi rapida degli eventi) un breve elenco di problemi e reagire ad essi. E xhprof permetteva di raccogliere automaticamente i grafi di esecuzione delle pagine PHP pi\u00f9 lente dai clienti e analizzare cosa potesse aver causato il rallentamento \u2014 tutto in tranquillit\u00e0, sorseggiando un t\u00e8 o qualcosa di pi\u00f9 forte.<\/p>\n<p>Un po' di tempo fa, gli strumenti sono stati ulteriormente arricchiti con un altro motore piuttosto semplice e comprensibile basato su un algoritmo di indicizzazione inversa, splendidamente realizzato nella leggendaria libreria Lucene \u2014 Elastic\/Kibana. L'idea semplice di scrittura multithreading di documenti in un indice inverso Lucene basato su eventi nei log e la rapida ricerca attraverso di essi utilizzando la suddivisione in faccette si \u00e8 rivelata, effettivamente, utile.<\/p>\n<p>Nonostante l'aspetto piuttosto tecnico delle visualizzazioni in Kibana con concetti a basso livello come \u00abbucket\u00bb e un linguaggio di algebra relazionale riadattato non dimenticato, lo strumento ci ha aiutato bene nelle seguenti attivit\u00e0:<\/p>\n<ul>\n<li>Quanti errori PHP ha avuto il cliente di Bitrix24 sul portale p1 nell'ultima ora e quali? Comprendere, perdonare e correggere rapidamente.<\/li>\n<li>Quanti videochiamate sono state effettuate sui portali in Germania nelle ultime 24 ore, con quale qualit\u00e0 e ci sono state difficolt\u00e0 con il canale\/rete?<\/li>\n<li>Quanto bene funziona il funzionamento del sistema (la nostra estensione in C per PHP), compilata dai sorgenti nell'ultimo aggiornamento del servizio e distribuita ai clienti? Ci sono stati segfault?<\/li>\n<li>I dati dei clienti vengono memorizzati nella memoria di PHP? Ci sono errori di superamento della memoria allocata per i processi: \u00about of memory\u00bb? Trova e disattiva.<\/li>\n<\/ul>\n<p>\nEcco un esempio concreto. Nonostante test accurati e multilivello, il cliente ha riscontrato un fastidioso e inaspettato errore in un caso molto anomalo con dati di input corrotti, \u00e8 suonata la sirena e ha avuto inizio il processo di correzione rapida:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficiente ed economico e perch\u00e9 proprio in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/8a802dba41b5d1a85c0dc41dfbf8b84e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn aggiunta, Kibana consente di organizzare notifiche per eventi specificati e in breve tempo lo strumento \u00e8 stato utilizzato da decine di dipendenti di diverse divisioni \u2014 dal supporto tecnico e sviluppo alla QA.<\/p>\n<p>L'attivit\u00e0 di qualsiasi divisione all'interno dell'azienda \u00e8 diventata facile da monitorare e misurare \u2014 invece di un'analisi manuale dei registri sui server, \u00e8 sufficiente impostare una volta il parsing dei log e il loro invio al cluster elastic per godere, ad esempio, della contemplazione nel dashboard di Kibana del numero di gattini a due teste stampati su una stampante 3D nel mese lunare passato.<\/p>\n<h3>Analisi aziendale di base<\/h3>\n<p>\nTutti sanno che spesso l'analisi aziendale nelle aziende inizia con un uso estremamente attivo, s\u00ec, s\u00ec, di Excel. Ma, la cosa principale \u00e8 che non finisca l\u00ec. Anche Google Analytics nel cloud contribuisce bene ad alimentare il fuoco \u2014 ci si abitua rapidamente al buono.<\/p>\n<p>Nella nostra azienda in armoniosa crescita, hanno iniziato a comparire qua e l\u00e0 dei \u00abprofeti\u00bb di un lavoro pi\u00f9 intenso con dati pi\u00f9 ampi. Sono emerse regolarmente necessit\u00e0 di rapporti pi\u00f9 approfonditi e multi-faccettati e grazie agli sforzi dei ragazzi di diverse divisioni \u00e8 stata organizzata qualche tempo fa una soluzione semplice e pratica \u2014 l'accoppiamento di ClickHouse e PowerBI.<\/p>\n<p>A lungo questa soluzione flessibile ha funzionato molto bene, ma gradualmente \u00e8 emersa la consapevolezza che ClickHouse non \u00e8 elastico e non si pu\u00f2 abusare di esso.<\/p>\n<p>\u00c8 importante comprendere bene che ClickHouse, come Druid, Vertica e Amazon RedShift (basato su Postgres), sono motori analitici ottimizzati per un'analisi piuttosto conveniente (somme, aggregazioni, minimi e massimi per colonna e qualche join), in quanto organizzati per un'efficace memorizzazione delle colonne delle tabelle relazionali, a differenza del noto MySQL e di altri database (row-oriented).<\/p>\n<p>In sostanza, ClickHouse \u00e8 un \u00abdatabase\u00bb pi\u00f9 capiente, con un'inserzione puntuale non molto comoda (\u00e8 cos\u00ec deliberato, va bene), ma con un'analisi piacevole e una serie di potenti funzionalit\u00e0 interessanti per lavorare con i dati. S\u00ec, \u00e8 possibile creare anche un cluster, ma capite che usare un microscopio per piantare chiodi non \u00e8 proprio 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 quasi ogni giorno da 10-20 anni in PHP, JavaScript, C#, C\/C++, Java, Go, Rust, Python, Bash. Ci sono anche molti amministratori di sistema esperti che hanno affrontato non una, ma diverse incredibili catastrofi che non rientrano nelle leggi della statistica (ad esempio, quando la maggior parte dei dischi di un raid-10 viene distrutta da un forte colpo di fulmine). In queste condizioni non \u00e8 stato chiaro per molto tempo cosa fosse un \u00abanalista in python\u00bb. Python \u00e8 come PHP, solo che il nome \u00e8 un po' pi\u00f9 lungo e ci sono meno tracce di sostanze che alterano la mente nel codice sorgente dell'interprete. Tuttavia, con la creazione di sempre pi\u00f9 nuovi report analitici, gli sviluppatori esperti hanno cominciato a rendersi conto dell'importanza della specializzazione in strumenti come numpy, pandas, matplotlib, seaborn.<br \/>\nIl ruolo decisivo \u00e8 stato probabilmente giocato dagli svenimenti improvvisi dei dipendenti a causa della combinazione delle parole \u00abregressione logistica\u00bb e dalla dimostrazione di costruzione efficace di report su dati voluminosi utilizzando, s\u00ec, pyspark.<\/p>\n<p>Apache Spark, la sua paradigma funzionale, con cui l'algebra relazionale si sposa perfettamente e le sue capacit\u00e0 hanno impressionato cos\u00ec tanto gli sviluppatori abituati a MySQL, che la necessit\u00e0 di rinforzare le fila con analisti esperti \u00e8 diventata chiara come il giorno.<\/p>\n<h3>I successivi tentativi di Apache Spark\/Hadoop di decollare e ci\u00f2 che non \u00e8 andato proprio come previsto<\/h3>\n<p>\nTuttavia, \u00e8 presto diventato chiaro che con Spark c'era evidentemente qualcosa di sistemico che non andava, o forse era semplicemente necessario lavarsi meglio le mani. Sebbene il stack Hadoop\/MapReduce\/Lucene fosse stato realizzato da programmatori piuttosto esperti, come \u00e8 evidente se si osservano con attenzione i sorgenti in Java o le idee di Doug Cutting in Lucene, Spark \u00e8 stato improvvisamente scritto in un linguaggio esotico, molto controverso dal punto di vista pratico e ora non pi\u00f9 in sviluppo, ovvero Scala. E il regolare fallimento dei calcoli nel cluster Spark a causa di una gestione poco logica e poco trasparente della memoria per le operazioni di riduzione (arrivano subito molte chiavi) ha creato attorno a lui un alone di qualcosa che ha del potenziale di crescita. Inoltre, la situazione \u00e8 stata aggravata dalla presenza di un gran numero di porte aperte strane, file temporanei che crescevano nei luoghi pi\u00f9 incomprensibili e un mare di dipendenze jar, che suscitava negli amministratori di sistema una sensazione ben nota sin dall'infanzia: un'ardente avversione (o forse era solo necessario lavarsi le mani con il sapone).<\/p>\n<p>Di conseguenza, abbiamo \"vissuto\" diversi progetti analitici interni che utilizzavano attivamente Apache Spark (compresi Spark Streaming, Spark SQL) e l'ecosistema Hadoop (e altro, e altro). Sebbene nel tempo abbiamo imparato a \"preparare\" questo strumento in modo discreto e a monitorarlo, e che praticamente ha smesso di cadere improvvisamente a causa della modifica della natura dei dati e della sbilanciatura nella hash uniformemente distribuita degli RDD, il desiderio di adottare qualcosa di gi\u00e0 pronto, aggiornato e amministrato, magari in cloud, cresceva sempre di pi\u00f9. Proprio in quel periodo, abbiamo provato a utilizzare una distribuzione 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 problemi su di essa. EMR \u00e8 una versione di Apache Spark preparata da Amazon con software aggiuntivo dell'ecosistema, simile alle distribuzioni di Cloudera\/Hortonworks.<\/p>\n<h3>Uno storage \"elastic\" per l'analisi \u2014 una necessit\u00e0 urgente<\/h3>\n<p>\nL'esperienza di \"preparare\" Hadoop\/Spark con le scottature di varie parti del corpo non \u00e8 stata vana. \u00c8 diventata sempre pi\u00f9 chiara la necessit\u00e0 di creare uno storage unico, economico e affidabile, che fosse resistente ai guasti hardware e in cui fosse possibile archiviare file in vari formati provenienti da diversi sistemi e effettuare selezioni su questi dati in modo efficace e in tempi ragionevoli per i report.<\/p>\n<p>Si sperava anche che l'aggiornamento del software di questa piattaforma non si trasformasse in un incubo notturno di Capodanno con la lettura di stack trace Java di 20 pagine e l'analisi di chilometri di log dettagliati delle operazioni del cluster utilizzando Spark History Server e una lente di ingrandimento con illuminazione. Si desiderava avere uno strumento semplice e trasparente che non richiedesse immersioni regolari sotto il cofano, se un caricatore smettesse di eseguire una normale query MapReduce a causa di un fallimento nella memoria dei dati reduce a seguito di un algoritmo di partizionamento delle sorgenti non molto ben scelto.<\/p>\n<h3>Amazon S3 \u00e8 un candidato per DataLake?<\/h3>\n<p>\nL'esperienza con Hadoop\/MapReduce ha insegnato che serve un file system scalabile e affidabile e lavoratori scalabili che \"vengono\" pi\u00f9 vicino ai dati, in modo da non dover trasferire i dati sulla rete. I worker devono essere in grado di leggere dati in diversi formati, ma idealmente non leggere informazioni superflue e consentire di memorizzare in anticipo i dati in formati convenienti per i worker.<\/p>\n<p><b>Riassumendo - il concetto principale.<\/b> Non c'\u00e8 voglia di \"caricare\" grandi dati in un unico motore analitico clusterizzato, che comunque prima o poi affonder\u00e0 e sar\u00e0 necessario shardarlo in modo sgradevole. Si desidera conservare file, semplicemente file, in un formato comprensibile e eseguire su di essi richieste analitiche efficaci con strumenti diversi ma comprensibili. E i file in diversi formati saranno sempre di pi\u00f9. Ed \u00e8 meglio shardare non il motore, ma i dati sorgenti. Abbiamo deciso che ci serve un DataLake scalabile e universale...<\/p>\n<p>E se conservare i file in un archivio cloud scalabile noto a molti, Amazon S3, senza doversi occupare della preparazione di costolette da Hadoop?<\/p>\n<p>Chiaro, i dati personali \"non si possono\", ma per altri dati se li portassi fuori e li \"gireresti efficacemente\"?<\/p>\n<h3>L'ecosistema di analisi big data clusterizzato di Amazon Web Services - in parole molto semplici<\/h3>\n<p>\nSecondo la nostra esperienza con AWS, Apache Hadoop\/MapReduce \u00e8 utilizzato da tempo e attivamente in diverse varianti, ad esempio nel servizio DataPipeline (invidio i colleghi, hanno davvero imparato a prepararlo correttamente). Qui abbiamo configurato backup da diversi servizi delle tabelle DynamoDB:<br \/>\n<img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficiente ed economico e perch\u00e9 proprio 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 Hadoop\/MapReduce come un orologio da diversi anni. \"Configurato e dimenticato\":<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficiente ed economico e perch\u00e9 proprio in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/a6569da8cafdb96c63250bb32bf51704.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInoltre, \u00e8 possibile svolgere efficacemente il data satanismo, sollevando i notebook Jupiter nel cloud per gli analisti e utilizzarli per l'addestramento e il deploy dei modelli di IA tramite il servizio AWS SageMaker. Ecco come appare da noi:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficiente ed economico e perch\u00e9 proprio in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/c825d979c9278a8edf8e1e747ef6def8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00ec, \u00e8 possibile sollevare un notebook nel cloud per se stessi o per un analista e collegarlo a un cluster Hadoop\/Spark, fare i calcoli e poi \"schiacciare tutto\":<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficiente ed economico e perch\u00e9 proprio in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/73cea18c54d2a9ce8d0441463991808b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn effetti, \u00e8 molto comodo per progetti analitici specifici e per alcuni di essi abbiamo utilizzato con successo il servizio EMR per calcoli e analisi su larga scala. E per una soluzione sistematica per DataLake, ce la faremo? In quel momento eravamo sul filo tra speranza e disperazione e continuavamo la ricerca.<\/p>\n<h3>AWS Glue \u00e8 un Apache Spark \u00absottile\u00bb potenziato.<\/h3>\n<p>\nSi \u00e8 scoperto che AWS ha una sua versione dello stack \u00abHive\/Pig\/Spark\u00bb. Il ruolo di Hive, cio\u00e8 il catalogo di file e dei loro tipi in DataLake, \u00e8 svolto dal servizio \u00abData catalog\u00bb, che non nasconde la sua compatibilit\u00e0 con il formato Apache Hive. In questo servizio \u00e8 necessario aggiungere informazioni su dove si trovano i tuoi file e in quale formato sono. I dati possono trovarsi non solo in s3, ma anche in un database, ma non ne parleremo in questo post. Ecco come \u00e8 organizzato il catalogo dati DataLake da noi:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficiente ed economico e perch\u00e9 proprio 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 sono stati aggiornati, avviamo manualmente o in base a un programma i crawler, che aggiorneranno le informazioni su di essi dal lago e le salveranno. Poi, i dati dal lago possono essere elaborati e i risultati esportati in un certo luogo. Nel caso pi\u00f9 semplice, anche noi esportiamo in s3. L'elaborazione dei dati pu\u00f2 avvenire ovunque, ma si suggerisce di impostare il processo di elaborazione su un cluster Apache Spark utilizzando funzionalit\u00e0 avanzate tramite l'API AWS Glue. In sostanza, puoi prendere un vecchio e caro codice python con la libreria pyspark e configurarne l'esecuzione su N nodi di un cluster di una certa potenza con monitoraggio, senza dover frugare nelle interiora di Hadoop e spostare contenitori Docker e risolvere conflitti di dipendenze.<\/p>\n<p><b>Ancora una volta, un'idea semplice.<\/b> Non \u00e8 necessario configurare Apache Spark, \u00e8 sufficiente scrivere il codice python per pyspark, testarlo localmente sul desktop e poi eseguirlo su un grande cluster nel cloud, indicando dove si trovano i dati di origine e dove mettere il risultato. A volte \u00e8 necessario e utile, ecco come lo impostiamo noi:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficiente ed economico e perch\u00e9 proprio in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/dc03181573bb3f5cfcc3a8760bc7e07b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPertanto, se \u00e8 necessario eseguire qualche calcolo su un cluster Spark con dati in s3, scriviamo codice python\/pyspark, testiamo e poi ci dirigiamo nel cloud.<\/p>\n<p>E per quanto riguarda l'orchestrazione? E se il compito \u00e8 scomparso? S\u00ec, si propone di creare una pipeline elegante in stile Apache Pig e abbiamo anche provato a farlo, ma abbiamo deciso di continuare a utilizzare la nostra orchestrazione profondamente personalizzata in PHP e JavaScript (capisco che possa sembrare un dissonanza cognitiva, ma funziona, da anni e senza errori).<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficiente ed economico e perch\u00e9 proprio 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 comprendere due punti chiave. Affinch\u00e9 le richieste sui dati dei file nel lago vengano eseguite il pi\u00f9 rapidamente possibile e le prestazioni non diminuiscano con l'aggiunta di nuove informazioni, \u00e8 necessario:<\/p>\n<ul>\n<li>Conservare le colonne dei file separatamente (in modo da non dover leggere tutte le righe per capire cosa c'\u00e8 nelle colonne). A tal fine, abbiamo adottato il formato parquet con compressione<\/li>\n<li>\u00c8 molto importante shardare i file in cartelle secondo lo spirito: lingua, anno, mese, giorno, settimana. I motori che comprendono questo tipo di sharding considereranno solo le cartelle necessarie, senza dover setacciare tutti i dati.<\/li>\n<\/ul>\n<p>\nIn sostanza, in questo modo, esponete i dati originali nella forma pi\u00f9 efficiente per i motori analitici superiori, che sanno anche accedere selettivamente alle cartelle shardate e leggere solo le colonne necessarie dai file. Non \u00e8 necessario 'caricare' i dati ovunque (altrimenti, lo storage esploderebbe) \u2014 semplicemente posizionateli nella filesystem nel formato corretto. \u00c8 ovvio che immagazzinare un enorme file csv in DataLake, che deve essere prima letto riga per riga da un cluster per estrarre le colonne, non \u00e8 molto ragionevole. Riflettete ancora una volta sui due punti sopra menzionati, se non \u00e8 chiaro perch\u00e9 tutto questo.<\/p>\n<h3>AWS Athena \u2014 un 'diavolo' uscito dalla scatola<\/h3>\n<p>\nE qui, creando il lago, ci siamo imbattuti, quasi per caso, in Amazon Athena. \u00c8 emerso improvvisamente che, disponendo ordinatamente i nostri file di enormi log nei giusti formati colonnari (parquet) per shard e cartelle \u2014 si possono effettuare selezioni estremamente informative e costruire report MOLTO rapidamente, SENZA un cluster Apache Spark\/Glue.<\/p>\n<p>Il motore Athena, che opera sui 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> \u2014 rappresentante della famiglia MPP (massive parallel processing) approcci per l'elaborazione dei dati, che prende 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 poi tutto \u00abfunziona velocemente e da solo\u00bb. \u00c8 importante notare che Athena \u00e8 \u00abintelligente\u00bb, accede solo alle cartelle sharded necessarie e legge solo le colonne richieste nella query.<\/p>\n<p>Le richieste ad Athena sono tariffate in modo interessante. Paghiamo per <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/athena\/pricing\/\">il volume dei dati scansionati<\/a><\/noindex>. Cio\u00e8, non per il numero di macchine nel cluster al minuto, ma... per i dati realmente scansionati su 100-500 macchine che sono necessari per eseguire la query.<\/p>\n<p>E richiedendo solo le colonne necessarie dalle cartelle correttamente sharded, si \u00e8 scoperto che il servizio Athena ci costa decine di dollari al mese. Insomma, fantastico, quasi gratuito, rispetto all'analisi nei cluster!<\/p>\n<p>Ecco, peraltro, come shardiamo i nostri dati in s3:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficiente ed economico e perch\u00e9 proprio in questo modo\" src=\"\/wp-content\/uploads\/2020\/08\/00bd9ae48c1cd13f3c4f7d32692c9209.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDi conseguenza, in poco tempo, diverse divisioni dell'azienda, dalla sicurezza informatica all'analisi, hanno iniziato a fare richieste ad Athena e ricevere rapidamente, in pochi secondi, risposte utili dai \u00abgrandi\u00bb dati su periodi piuttosto ampi: mesi, semestri, ecc.<\/p>\n<p>Ma siamo andati oltre e abbiamo iniziato a cercare risposte nel cloud <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/athena\/latest\/ug\/connect-with-odbc.html\">attraverso il driver ODBC<\/a><\/noindex>: l'analista nella console abituale scrive una query SQL che in 100-500 macchine \u00aba pochi soldi\u00bb setaccia i dati in s3 e restituisce risposte solitamente in pochi secondi. Comodo. E veloce. Ancora non ci credo.<\/p>\n<p>Di conseguenza, avendo deciso di conservare i dati in s3, in un formato colonnare efficiente e con una ragionevole sharding dei dati in cartelle\u2026 abbiamo ottenuto un DataLake e un motore analitico rapido e economico \u2014 gratis. E questo \u00e8 diventato molto popolare in azienda, poich\u00e9 comprende SQL e funziona di gran lunga pi\u00f9 velocemente rispetto ai lanci\/arresti\/impostazioni dei cluster. \u00abE se il risultato \u00e8 lo stesso, perch\u00e9 pagare di pi\u00f9?\u00bb<\/p>\n<p>Una richiesta ad Athena appare pi\u00f9 o meno cos\u00ec. Se desiderato, \u00e8 possibile formulare una query SQL abbastanza <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. Vediamo quali codici di risposta aveva il cliente alcune settimane fa nei log del server web e verifichiamo che non ci siano errori:<\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo organizzato un DataLake altamente efficiente ed economico e perch\u00e9 proprio 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 che non si pu\u00f2 definire lungo, ma sicuramente doloroso, valutando continuamente i rischi, il livello di complessit\u00e0 e il costo di mantenimento, abbiamo trovato la soluzione per DataLake e analisi che continua a sorprenderci sia per la velocit\u00e0 che per il costo di possesso.<\/p>\n<p>Si \u00e8 rivelato che costruire un DataLake efficace, veloce e poco costoso da mantenere per le esigenze di diversi reparti aziendali \u00e8 assolutamente possibile anche per sviluppatori esperti che non hanno mai lavorato come architetti e non sanno disegnare quadrati su quadrati con frecce, conoscendo 50 termini dell'ecosistema Hadoop.<\/p>\n<p>All'inizio del percorso, la testa era afflitta da una miriade di zoo di software, sia aperti che chiusi, e dalla 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 ..., raccogliendo feedback e comprendendo a fondo la fisica dei processi in corso. Tutto ci\u00f2 che \u00e8 complesso e opaco - lasciatelo ai nemici e ai concorrenti.<\/p>\n<p>Se non desiderate utilizzare il cloud e amate mantenere, aggiornare e patchare progetti open source, \u00e8 possibile costruire uno schema simile al nostro localmente, su semplici macchine da ufficio con Hadoop e Presto. L'importante \u00e8 non fermarsi e andare avanti, contare, cercare soluzioni semplici e chiare e tutto funzioner\u00e0 sicuramente! Buona fortuna a tutti e a presto!<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.1.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.1.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 efficace e a basso costo e perch\u00e9 proprio in questo modo | ProHoster","description":"Viviamo in un periodo straordinario, in cui \u00e8 possibile collegare rapidamente e facilmente diversi strumenti open source gi\u00e0 pronti, configurarli con \"coscienza disattivata\" seguendo i consigli di stackoverflow, senza addentrarsi in \"mille parole\", e lanciarli.","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}]}}