Il modello di elaborazione del flusso dietro Google Cloud Dataflow |  di Vu Trinh |  Aprile 2024

 | Intelligenza-Artificiale

Al momento della stesura dell'articolo, i framework di elaborazione dei dati come Riduci mappa e i suoi “cugini” come Hadoop, Maiale, AlveareO Scintilla consentire al consumatore di dati di elaborare dati batch su larga scala. Dal punto di vista dell'elaborazione del flusso, strumenti come Ruota del mulino, Scintilla in streamingO Tempesta è venuto per supportare l'utente. Tuttavia, questi modelli esistenti non soddisfacevano i requisiti in alcuni casi di utilizzo comune.

Consideriamo un esempio: le entrate aziendali di un fornitore di video in streaming provengono dalla fatturazione agli inserzionisti della quantità di pubblicità guardata sui suoi contenuti. Vogliono sapere quanto fatturare quotidianamente a ciascun inserzionista e aggregare statistiche sui video e sugli annunci. Inoltre, desiderano eseguire esperimenti offline su grandi quantità di dati storici. Vogliono sapere quanto spesso e per quanto tempo vengono guardati i loro video, con quali contenuti/annunci e da quali gruppi demografici. Tutte le informazioni devono essere disponibili rapidamente per adeguare la propria attività quasi in tempo reale. Il sistema di trattamento deve inoltre essere semplice e flessibile per adattarsi alla complessità del business. Richiedono inoltre un sistema in grado di gestire dati su scala globale poiché Internet consente alle aziende di raggiungere più clienti che mai. Ecco alcune osservazioni di Google sullo stato dei sistemi di elaborazione dei dati di quel tempo:

  • Sistemi batch come Riduci mappa, FlumeJava (tecnologia interna di Google) e Spark non riescono a garantire lo SLA di latenza poiché richiedono di attendere che tutti i dati immessi siano inseriti in un batch prima di elaborarli.
  • I sistemi di elaborazione in streaming che forniscono scalabilità e tolleranza agli errori non raggiungono l'aspetto dell'espressività o della correttezza.
  • Molti non sono in grado di fornire la semantica esattamente una volta, incidendo sulla correttezza.
  • Altri mancano delle primitive necessarie per il windowing o forniscono una semantica di windowing limitata a finestre basate su tuple o tempi di elaborazione (ad esempio, Scintilla in streaming)
  • La maggior parte di quelli che forniscono finestre basate sul tempo degli eventi si basano sull'ordinamento o hanno un'attivazione limitata delle finestre.
  • MillWheel e Spark Streaming sono sufficientemente scalabili, tolleranti ai guasti e a bassa latenza, ma mancano di modelli di programmazione di alto livello.

Concludono che il principale punto debole di tutti i modelli e sistemi sopra menzionati è il presupposto che i dati di input illimitati alla fine saranno completi. Questo approccio non ha più senso di fronte alla realtà dei dati enormi e altamente disordinati di oggi. Ritengono inoltre che qualsiasi approccio alla risoluzione di diversi carichi di lavoro in tempo reale debba fornire interfacce semplici ma potenti per bilanciare correttezza, latenza e costi in base a casi d'uso specifici. Da questo punto di vista, il documento fornisce il seguente contributo concettuale al modello di elaborazione del flusso unificato:

  • Consentire il calcolo ordinato dei risultati in base all'ora dell'evento (quando si è verificato l'evento) su un'origine dati illimitata e non ordinata con combinazioni configurabili di attributi di correttezza, latenza e costo.
  • Separazione dell'implementazione della pipeline in quattro dimensioni correlate:

– Quali risultati vengono calcolati?
– Dove vengono calcolati gli orari degli eventi.
– Quando vengono materializzati durante il tempo di elaborazione,
– In che modo i risultati precedenti si riferiscono ai perfezionamenti successivi?

  • Separare l'astrazione logica dell'elaborazione dei dati dal livello di implementazione fisica sottostante consente agli utenti di scegliere il motore di elaborazione.

Nel resto di questo blog vedremo come Google abilita questo contributo. Un'ultima cosa prima di passare alla sezione successiva: Google ha notato che esiste “niente di magico in questo modello. “ Il modello non fa sì che la tua attività elaborata e costosa venga improvvisamente eseguita più velocemente; fornisce un quadro generale che consente la semplice espressione del calcolo parallelo, che non è legato a nessun motore di esecuzione specifico come Spark o Flink.

Immagine creata dall'autore.

Gli autori dell'articolo utilizzano il termine illimitato/limitato per definire dati infiniti/finiti. Evitano di utilizzare termini di streaming/batch perché di solito implicano l'utilizzo di un motore di esecuzione specifico. Il termine dati non associati descrive i dati che non hanno un confine predefinito, ad esempio, gli eventi di interazione dell'utente di un'applicazione di e-commerce attiva; il flusso di dati si interrompe solo quando l'applicazione è inattiva. Mentre i dati vincolati si riferiscono a dati che possono essere definiti da chiari confini di inizio e fine, ad esempio, l'esportazione giornaliera dei dati dal database delle operazioni.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *