Apache Apex: un'introduzione

Pubblicato: 2015-12-29

Apache Hadoop è diventato un framework software de facto per l'elaborazione affidabile, scalabile, distribuita e su larga scala. Sin dal suo inizio, Hadoop è stato il framework di prima scelta per l'elaborazione batch. Dalle grandi banche ai giganti della vendita al dettaglio online, tutti utilizzano Hadoop per la generazione periodica di report, calcoli e per molti altri casi d'uso. In genere, questi casi d'uso sono processi orientati ai batch e richiedono alcune ore prima di ottenere un significato dai dati. Il mondo veloce di oggi richiede significato o azioni a partire dai dati grezzi quasi nel momento in cui vengono generati. Ciò ha portato a un concetto di elaborazione del flusso. Sebbene Hadoop non sia originariamente considerato idoneo per l'elaborazione in streaming, l'invenzione di YARN (Hadoop 2.0) lo ha reso un buon candidato per questo. Attualmente ci sono più framework di elaborazione del flusso nell'ecosistema Hadoop e Apex è uno nuovo di zecca che sta entrando in questo mercato affollato.

Cos'è Apache Apex?

Apache Apex è una piattaforma nativa basata su YARN che aiuta gli sviluppatori di applicazioni a scrivere applicazioni orientate al flusso e al batch. È progettato per elaborare i dati in movimento, in modo distribuito, altamente performante e tollerante ai guasti. La ciliegina su questo è la semplice API, che consente agli utenti di scrivere il proprio codice java con una conoscenza limitata dell'elaborazione del flusso.

L'Apex si basa su specifiche funzionali e operative separate piuttosto che combinandole insieme. Ciò fa sì che gli sviluppatori di applicazioni si concentrino sulla scrittura di funzioni definite dall'utente senza dover pensare a come funzioneranno in un ambiente distribuito.

Apache Apex ha una ricca libreria di funzioni comunemente usate. Questi vengono aggiunti come parte della libreria Apache Apex-Malhar. Questa libreria ha operatori per accedere a diversi filesystem, database, code di messaggi. La community aggiunge operatori giorno per giorno, semplificando la vita agli sviluppatori di applicazioni.

Cosa sono i blocchi principali di Apache Apex?

L'architettura di Apex è molto semplice. Apex ha Malhar, una libreria di operatori e un motore principale con cui lavorare. Il nucleo di Apex potrebbe essere rappresentato come segue, sono spesso indicati come i blocchi principali di Apache Apex.

blocchi fondamentali di Apache Apex

Puoi separare chiaramente i livelli e ottenere una panoramica dove si adatta. Vediamo le informazioni su questi blocchi.

  1. StrAM ( M aster dell'applicazione in streaming )
    StrAM è un master di applicazione YARN. La sua responsabilità include il lancio di applicazioni di flusso, l'allocazione delle risorse, la pianificazione dei DAG logici. Insieme a queste operazioni YARN, StrAM inizializza operatori e flussi. StrAM raccoglie anche statistiche dai suoi figli.
  2. Istantanea di stato
    I framework di elaborazione del flusso non potevano permettersi di perdere i risultati elaborati. Inoltre, devono sapere quanto hanno elaborato per elaborare correttamente i record dopo il ripristino da un errore. Quindi periodicamente, il check point è importante nell'elaborazione del flusso. In Apex, StrAM tiene traccia del check point e al confine dell'operatore, periodicamente il check pointing viene eseguito su HDFS.
  3. API REST
    StrAM è il punto di accesso per l'API REST. Gli strumenti esterni possono accedere a questa API REST e integrarsi con qualsiasi applicazione esterna.
  4. Utensili
    Apex fornisce CLI per avviare e monitorare le applicazioni Apex. Anche noi possiamo costruirne uno con l'aiuto delle API REST. Insieme alla CLI, l'applicazione può essere configurata con script di configurazione statici per l'avvio automatico.
  5. Partizionamento
  6. Apex fornisce il partizionamento basato su chiavi e bilanciamento del carico dinamico. Anche l'utente può definire il proprio schema di partizionamento.

  7. Modifiche dinamiche
  8. Apache Apex ha questa caratteristica molto utile e unica. Supporta la modifica del DAG logico, la modifica del piano di esecuzione fisica.

  9. Analisi SLA
    Apache Apex esegue periodicamente l'analisi SLA da solo. Esegue analisi di latenza, colli di bottiglia e velocità effettiva e aggiunge più risorse per soddisfare gli SLA configurati.
  10. Sicurezza
  11. Apex supporta Kerberos. Sotto il cluster Hadoop protetto, può accedere con l'integrazione Kerberos intrinseca.

  12. Alta disponibilità
    Apache Apex utilizza la funzionalità di riavvio di YARN e si riavvia dall'ultimo stato del punto di controllo.
  13. Malhar
    Apache Apex –Malhar è la libreria dell'operatore con numerosi operatori. Questi operatori sono classificati in
    • Operatori di input/output
      In questa categoria, attualmente Malhar ha operatori da cui leggere/scrivere
    • File system
    • RDBMS
    • Archivi NoSQL
    • Code di messaggi
    • Database in memoria
    • Social media
  14. Operatori di calcolo –
  15. Malhar ha molti operatori che aiuteranno nell'effettiva implementazione della logica aziendale. Questa libreria ha

        • Corrispondenza del modello
        • Statistiche e matematica
        • Apprendimento automatico
        • analizzatori
        • Social media
      • Server buffer

      I server buffer si trovano a ciascun confine dell'operatore. In caso di dati, i server buffer dell'operatore locale possono essere dopo stringhe di operatori. Lo scopo principale di questi è la conservazione temporanea dei dati ai bordi prima dell'inoltro al successivo. Hanno un ruolo importante quando il nodo viene ripristinato da un errore. I server buffer caricano i dati dall'ultimo stato di checkpoint per riprodurli

      Che cos'è il modello di programmazione dell'applicazione Apex?

      Questo include un framework ricco e una libreria Malhar, il che significa che gli sviluppatori di applicazioni devono solo connettere gli operatori e avviare l'applicazione. Pertanto, la tua applicazione non è altro che una sequenza di operatori.

      Modello di programmazione dell'applicazione Apex

      Ecco come un framework ricco rende la vita degli sviluppatori facile. Quindi vediamo come funziona questa applicazione demo

      Demo di Apache Apex

      Quindi iniziamo con ' Hello World of Big Data J ', una piccola demo di conteggio delle parole che utilizza Apache Apex.

      Configurazione di Apache Apex

      Per eseguire questa demo, dobbiamo configurare Apex. Puoi installare Apache Apex sul tuo cluster esistente o c'è un modo semplice per provare, puoi scaricare la VM sandbox pre-installazione dal sito Web DataTorrent da qui. Per questa demo utilizzeremo VM preinstallata.

      Console dell'interfaccia utente Apex dettagliata

      Apex viene fornito con una console dell'interfaccia utente dal design molto intuitivo e accattivante che puoi utilizzare per avviare, monitorare e gestire le applicazioni. Include varie statistiche relative ai diversi componenti che vengono distribuiti.

      Dopo, hai scaricato la sandbox VM, Rimuovila dal Tar e caricala nel tuo lettore VM preferito (io uso il lettore VM VMWare). Tutto il software e gli strumenti necessari per l'esecuzione di Apex sono già configurati in questa macchina virtuale e tutti gli script di avvio sono configurati per essere eseguiti all'avvio del sistema operativo. Quindi, quando la tua VM sarà attiva, avrai un'istanza in esecuzione di Apache Apex. Ora, per visualizzare la console, basta premere http://locahost:9090 nel tuo browser Web preferito e accedere alla console. Nome utente predefinito: la password per la macchina virtuale sandbox è dtadmin: dtadmin. Vedrai la console come di seguito

      Console dell'interfaccia utente Apache Apex

      Questa pagina ci offre una panoramica completa di tutti i sistemi come l'utilizzo della CPU e della memoria, le applicazioni, le prestazioni, i problemi ecc.

      Per distribuire un'applicazione, vai alla scheda Sviluppo nella parte superiore della pagina.

      torrent di dati

      Qui puoi distribuire i tuoi pacchetti applicativi e gestire gli schemi di tuple per i dati all'interno di Apex.

      Apex ti fornisce un numero di applicazioni pronte all'uso, che puoi vedere elencate di seguito:

      torrent di dati

      Demo Conteggio parole

      Ora, lanciamo l'applicazione per il conteggio delle parole. Puoi farlo facendo clic sull'opzione di avvio dell'applicazione accanto a DataTorrent Wordcount Demo. Successivamente puoi fornire un'applicazione diversa e modificare i dettagli di configurazione se necessario (non lo faremo poiché la maggior parte delle impostazioni predefinite funziona correttamente, modifichiamo semplicemente il nome dell'app in "MyWordCountDemo"). Verrà visualizzato un messaggio che dice che l'applicazione è stata distribuita correttamente con un collegamento all'applicazione. Fare clic su quel collegamento.

      demo del conteggio delle parole

      Si apre una nuova pagina. Attendere alcuni secondi finché lo stato dell'applicazione non passa da Accettato a In esecuzione. Ora vedrai una pagina piena di varie statistiche e informazioni. I prossimi due screenshot li raffigurano.

      demo del conteggio delle parole

      Console dell'interfaccia utente Apache Apex

      Queste pagine ci mostrano varie informazioni come la visualizzazione logica, fisica e metrica dell'applicazione, insieme a statistiche di varie tuple/record elaborati dall'applicazione ogni secondo. Mostra la rappresentazione grafica delle tuple che vengono emesse e le latenze ecc.

      È possibile fare clic su qualsiasi operatore logico, esaminarne i record e persino registrare un campione. Facciamolo per l'operatore della console. Fare clic su operatore console e otterrai informazioni dettagliate sull'operatore come di seguito:

      Console dell'interfaccia utente Apache Apex

      Quindi, seleziona una delle partizioni e fai clic su registra un campione.

      Console dell'interfaccia utente Apache Apex

      Dopo alcuni secondi, vedrai le tuple popolate, fai clic su tupla per visualizzarne il contenuto. Come puoi vedere dal contenuto, l'applicazione ha eseguito il conteggio delle parole sui dati basati su Windows e c'erano 2 "a", 4 "il", 4 "a" ecc. Nella 0a tupla di input per questa finestra. Ora puoi interrompere l'applicazione facendo clic su "Spegni" o "Uccidi" nella pagina principale dell'applicazione.

      Questo è tutto, abbiamo distribuito ed eseguito con successo l'applicazione di conteggio delle parole.

      Conclusione

      Quindi questa è stata l'introduzione a un nuovo strumento di streaming: Apache Apex e l'esecuzione riuscita di un'applicazione in Apache Apex. Apache Apex ha molte caratteristiche salienti che gli conferiscono un vantaggio rispetto ad altri framework esistenti che tratterò nei post successivi.