Welcome to Our Website

HPE Comunità di Sviluppatori Portale

post Originale informazioni:

"authorDisplayName": "Carol McDonald","publish": "2018-10-17T08:00:00.000Z","tags": "spark"

In questo post del blog, ci darà un’introduzione ad Apache Scintilla e la sua storia e di esplorare alcune delle zone in cui il suo particolare insieme di capacità di mostrare il più promettente. Discuteremo la relazione con altre tecnologie chiave e forniremo alcuni suggerimenti utili.

Con Spark 2.,0 e versioni successive, grandi miglioramenti sono stati implementati per rendere Spark più facile da programmare ed eseguire più velocemente.

Che cos’è Apache Spark?

Spark è un motore di elaborazione dati distribuito per tutti gli usi che è adatto per l’uso in una vasta gamma di circostanze. Oltre al motore di elaborazione dati Spark core, sono disponibili librerie per SQL, machine learning, calcolo grafico ed elaborazione del flusso, che possono essere utilizzate insieme in un’applicazione. I linguaggi di programmazione supportati da Spark includono: Java, Python, Scala e R., Sviluppatori di applicazioni e data scientist incorporano Spark nelle loro applicazioni per interrogare, analizzare e trasformare rapidamente i dati su larga scala. Le attività più frequentemente associate a Spark includono processi batch ETL e SQL su set di dati di grandi dimensioni, elaborazione di dati in streaming da sensori, IoT o sistemi finanziari e attività di apprendimento automatico.

Storia

Per capire Spark, aiuta a capire la sua storia., Prima di Spark, c’era MapReduce, un framework di elaborazione distribuita resiliente, che consentiva a Google di indicizzare il volume di contenuti che esplodeva sul Web, attraverso grandi cluster di server commodity.

Ci sono 3 concetti di base per la strategia di Google:

  1. Distribuire i dati: quando un file di dati che viene caricato nel cluster, viene diviso in blocchi, chiamati blocchi di dati, e distribuito tra i nodi di dati e replicati in tutto il cluster.,
  2. Calcolo distribuzione: gli utenti specificano una funzione map che elabora una coppia chiave/valore per generare un insieme di coppie chiave / valore intermedio e una funzione reduce che unisce tutti i valori intermedi associati alla stessa chiave intermedia. I programmi scritti in questo stile funzionale vengono automaticamente parallelizzati ed eseguiti su un grande cluster di macchine commodity nel modo seguente:

    • Il processo di mappatura viene eseguito su ciascun nodo dati assegnato, lavorando solo sul suo blocco di dati da un file distribuito.,
    • I risultati dei processi di mappatura vengono inviati ai riduttori in un processo chiamato “shuffle and sort”: le coppie chiave / valore dei mapper vengono ordinate per chiave, partizionate per il numero di riduttori, quindi inviate attraverso la rete e scritte in “file di sequenza” ordinati per chiave sui nodi del riduttore.
    • Il processo reducer viene eseguito sul nodo assegnato e funziona solo sul suo sottoinsieme di dati (il suo file di sequenza). L’output del processo reducer viene scritto in un file di output.,
  3. Tollera gli errori: sia i dati che il calcolo possono tollerare gli errori fallendo su un altro nodo per i dati o l’elaborazione.

MapReduce word count esempio di esecuzione:

Alcuni metodi iterativi, come il PageRank di Google utilizzato per classificare i siti web nel loro motore di ricerca risultati, richiedono il concatenamento di più MapReduce posti di lavoro insieme, che provoca un sacco di lettura e scrittura su disco., Quando più lavori MapReduce sono concatenati insieme, per ogni lavoro MapReduce, i dati vengono letti da un blocco di file distribuito in un processo map, scritti e letti da un file SequenceFile intermedio e quindi scritti in un file di output da un processo reducer.

Un anno dopo che Google ha pubblicato un white paper che descrive il framework MapReduce (2004), Doug Cutting e Mike Cafarella creato Apache Hadoop™.,

Apache Spark™ è nato nel 2009 come progetto all’interno dell’AMPLab dell’Università della California, Berkeley. Spark è diventato un progetto incubato della Apache Software Foundation nel 2013, ed è stato promosso all’inizio del 2014 per diventare uno dei progetti di alto livello della Fondazione. Spark è attualmente uno dei progetti più attivi gestiti dalla Fondazione e la comunità che è cresciuta attorno al progetto include sia contributori individuali prolifici che sostenitori aziendali ben finanziati, come Databricks, IBM e la cinese Huawei.,

L’obiettivo del progetto Spark era quello di mantenere i vantaggi del framework di elaborazione scalabile, distribuito e fault-tolerant di MapReduce, rendendolo più efficiente e più facile da usare. I vantaggi di Spark rispetto a MapReduce sono:

  • Spark esegue molto più velocemente memorizzando i dati nella cache su più operazioni parallele, mentre MapReduce comporta più lettura e scrittura dal disco.
  • Spark esegue attività multi-thread all’interno dei processi JVM, mentre MapReduce viene eseguito come processi JVM di peso più pesante., Questo dà Spark avvio più veloce, migliore parallelismo, e un migliore utilizzo della CPU.
  • Spark fornisce un modello di programmazione funzionale più ricco di MapReduce.
  • Spark è particolarmente utile per l’elaborazione parallela di dati distribuiti con algoritmi iterativi.

Come un’applicazione Spark viene eseguita su un cluster

Lo schema seguente mostra un’applicazione Spark in esecuzione su un cluster.,

  • Un’applicazione Spark viene eseguita come processi indipendenti, coordinati dall’oggetto SparkSession nel programma driver.
  • Il gestore risorse o cluster assegna attività ai lavoratori, un’attività per partizione.
  • Un’attività applica la sua unità di lavoro al set di dati nella sua partizione e produce un nuovo set di dati di partizione. Poiché gli algoritmi iterativi applicano ripetutamente le operazioni ai dati, traggono vantaggio dalla memorizzazione nella cache dei set di dati tra le iterazioni.,
  • I risultati vengono inviati all’applicazione driver o possono essere salvati su disco.,anager incluso con Scintilla
  • Apache Mesos – generale cluster manager che può anche eseguire applicazioni Hadoop
  • Apache Hadoop FILATI – il gestore delle risorse in Hadoop 2
  • Kubernetes – un sistema open source per l’automazione della distribuzione, il ridimensionamento, e gestione di containerizzato applicazioni

Scintilla ha anche una modalità locale, dove il conducente ed esecutori esegui come thread sul computer invece di un cluster, che è utile per lo sviluppo di applicazioni da un personal computer.,

Cosa fa Spark?

Spark è in grado di gestire diversi petabyte di dati alla volta, distribuiti su un cluster di migliaia di server fisici o virtuali cooperanti. Ha un ampio set di librerie e API per sviluppatori e supporta linguaggi come Java, Python, R e Scala; la sua flessibilità lo rende adatto per una vasta gamma di casi d’uso., Spark viene spesso utilizzato con archivi dati distribuiti come HPE Ezmeral Data Fabric, HDFS di Hadoop e S3 di Amazon, con database NoSQL popolari come HPE Ezmeral Data Fabric, Apache HBase, Apache Cassandra e MongoDB e con negozi di messaggistica distribuiti come HPE Ezmeral Data Fabric e Apache Kafka.

I casi d’uso tipici includono:

Elaborazione del flusso: dai file di log ai dati dei sensori, gli sviluppatori di applicazioni devono sempre più far fronte a “flussi” di dati., Questi dati arrivano in un flusso costante, spesso da più fonti contemporaneamente. Mentre è certamente fattibile memorizzare questi flussi di dati su disco e analizzarli retrospettivamente, a volte può essere sensato o importante elaborare e agire sui dati man mano che arrivano. I flussi di dati relativi alle transazioni finanziarie, ad esempio, possono essere elaborati in tempo reale per identificare– e rifiutare– transazioni potenzialmente fraudolente.

Apprendimento automatico: man mano che i volumi di dati crescono, gli approcci di apprendimento automatico diventano più fattibili e sempre più accurati., Il software può essere addestrato per identificare e agire sui trigger all’interno di set di dati ben compresi prima di applicare le stesse soluzioni a dati nuovi e sconosciuti. La capacità di Spark di memorizzare i dati in memoria ed eseguire rapidamente query ripetute lo rende una buona scelta per la formazione di algoritmi di apprendimento automatico. L’esecuzione di query sostanzialmente simili più e più volte, su larga scala, riduce significativamente il tempo necessario per passare attraverso una serie di possibili soluzioni al fine di trovare gli algoritmi più efficienti.,

Analisi interattiva: anziché eseguire query predefinite per creare dashboard statici di produttività delle vendite o delle linee di produzione o dei prezzi delle azioni, analisti aziendali e data scientist desiderano esplorare i propri dati ponendo una domanda, visualizzando il risultato e quindi modificando leggermente la domanda iniziale o approfondendo i risultati. Questo processo di query interattivo richiede sistemi come Spark in grado di rispondere e adattarsi rapidamente.,

Integrazione dei dati: i dati prodotti da diversi sistemi in un’azienda sono raramente puliti o abbastanza coerenti da essere combinati in modo semplice e semplice per report o analisi. I processi ETL (Extract, Transform, and Load) vengono spesso utilizzati per estrarre dati da sistemi diversi, pulirli e standardizzarli, quindi caricarli in un sistema separato per l’analisi. Spark (e Hadoop) sono sempre più utilizzati per ridurre i costi e il tempo necessario per questo processo ETL.

Chi usa Spark?,

Una vasta gamma di fornitori di tecnologia si sono affrettati a supportare Spark, riconoscendo l’opportunità di estendere i loro prodotti big data esistenti in aree in cui Spark offre un valore reale, come l’interrogazione interattiva e l’apprendimento automatico. Aziende ben note come IBM e Huawei hanno investito somme significative nella tecnologia e un numero crescente di startup sta costruendo aziende che dipendono in tutto o in parte da Spark., Ad esempio, nel 2013 il team di Berkeley responsabile della creazione di Spark ha fondato Databricks, che fornisce una piattaforma di dati end-to-end ospitata alimentata da Spark. La società è ben finanziata, avendo ricevuto million 247 milioni in quattro round di investimento in 2013, 2014, 2016 e 2017, e i dipendenti di Databricks continuano a svolgere un ruolo di primo piano nel migliorare ed estendere il codice open source del progetto Apache Spark.,

I principali fornitori di Hadoop, tra cui MapR, Cloudera e Hortonworks, si sono tutti spostati per supportare Spark a base di filati insieme ai loro prodotti esistenti e ogni fornitore sta lavorando per aggiungere valore ai propri clienti. Altrove, IBM, Huawei e altri hanno tutti fatto investimenti significativi in Apache Spark, integrandolo nei propri prodotti e contribuendo a miglioramenti ed estensioni al progetto Apache., Le aziende basate sul Web, come il motore di ricerca cinese Baidu, l’operazione di e-commerce Taobao e la società di social networking Tencent, gestiscono tutte le operazioni basate su Spark su larga scala, con gli 800 milioni di utenti attivi di Tencent che generano oltre 700 TB di dati al giorno per l’elaborazione su un cluster di oltre 8.000 nodi

Oltre a questi giganti basati sul web, l’azienda farmaceutica Novartis dipende da Spark per ridurre il tempo necessario per ottenere i dati di modellazione nelle mani dei ricercatori, garantendo nel contempo il mantenimento di garanzie etiche e contrattuali.,

Cosa distingue Spark?

Ci sono molte ragioni per scegliere Spark, ma i seguenti tre sono fondamentali:

Semplicità: le funzionalità di Spark sono accessibili tramite un set di API avanzate, tutte progettate specificamente per interagire rapidamente e facilmente con i dati su larga scala. Queste API sono ben documentate e strutturate in modo da rendere semplice per gli scienziati dei dati e gli sviluppatori di applicazioni mettere rapidamente Spark al lavoro.

Velocità: Spark è progettato per la velocità, operando sia in memoria che su disco., Utilizzando Spark, un team di Databricks si è aggiudicato il primo posto con un team dell’Università della California, San Diego, nel Daytona GraySort benchmarking challenge 2014 (https://spark.apache.org/news/spark-wins-daytona-gray-sort-100tb-benchmark.html). La sfida consiste nell’elaborazione di un set di dati statici; il team di Databricks è stato in grado di elaborare 100 terabyte di dati memorizzati su unità a stato solido in soli 23 minuti e il precedente vincitore ha impiegato 72 minuti utilizzando Hadoop e una diversa configurazione del cluster. Spark può eseguire ancora meglio quando si supportano query interattive di dati memorizzati in memoria., In quelle situazioni, ci sono affermazioni che Spark può essere 100 volte più veloce di MapReduce di Hadoop.

Supporto: Spark supporta una gamma di linguaggi di programmazione, tra cui Java, Python, R e Scala. Spark include il supporto per una stretta integrazione con una serie di soluzioni di storage leader nell’ecosistema Hadoop e oltre, tra cui HPE Ezmeral Data Fabric (file system, database e archivio eventi), Apache Hadoop (HDFS), Apache HBase e Apache Cassandra. Inoltre, la comunità Apache Spark è grande, attiva e internazionale., Una serie crescente di fornitori commerciali, tra cui Databricks, IBM e tutti i principali fornitori Hadoop, offrono un supporto completo per le soluzioni basate su Spark.

La potenza delle pipeline di dati

Gran parte della potenza di Spark risiede nella sua capacità di combinare tecniche e processi molto diversi insieme in un unico insieme coerente. Al di fuori di Spark, le attività discrete di selezione dei dati, trasformazione dei dati in vari modi e analisi dei risultati trasformati potrebbero facilmente richiedere una serie di framework di elaborazione separati, come Apache Oozie., Spark, d’altra parte, offre la possibilità di combinare questi insieme, attraversando i confini tra batch, streaming e flussi di lavoro interattivi in modi che rendono l’utente più produttivo.

I processi Spark eseguono più operazioni consecutivamente, in memoria e si riversano su disco solo quando richiesto dalle limitazioni di memoria. Spark semplifica la gestione di questi processi disparati, offrendo un intero integrato-una pipeline di dati più facile da configurare, più facile da eseguire e più facile da mantenere., In casi d’uso come ETL, queste pipeline possono diventare estremamente ricche e complesse, combinando un gran numero di input e un’ampia gamma di fasi di elaborazione in un insieme unificato che fornisce costantemente il risultato desiderato.

Lascia un commento

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