Progetto Apache Beam

Questa pagina contiene i dettagli di un progetto di scrittura tecnica accettato per la stagione di Documenti Google.

Riepilogo del progetto

Organizzazione open source:
Apache Beam
Redattore tecnico:
Sruthi Sree Kumar
Nome del progetto:
Aggiornamento della pagina di confronto dei runner / della matrice delle funzionalità
Durata del progetto:
Durata standard (3 mesi)

Project description

Apache Beam è una piattaforma unificata per definire pipeline di elaborazione sia in batch che in streaming. Apache Beam ti consente di definire un modello per rappresentare e trasformare i set di dati indipendentemente da una piattaforma di elaborazione dati specifica. Una volta definito, puoi eseguirlo su uno dei framework di runtime (runner) supportati, tra cui Apache Apex, Apache Flink, Apache Spark e Google Cloud Dataflow. Apache Beam è inoltre dotato di diversi SDK che ti consentono di scrivere la pipeline in linguaggi di programmazione come Java, Python e Go.

Sto inviando la mia richiesta per il GSOD per l'aggiornamento della pagina di confronto dei runner/della matrice delle funzionalità. Poiché Apache Beam supporta più runner e SDK, un nuovo utente potrebbe avere difficoltà a scegliere tra loro. La documentazione attuale dei diversi runner fornisce una panoramica molto breve del runner. La mia idea è aggiungere ulteriori dettagli su ogni runner nella pagina di documentazione del runner in questione. Inoltre, vorrei aggiornare la descrizione del progetto di conteggio parole di esempio per aggiungere una spiegazione dettagliata. Per questo, ho intenzione di provare ogni esempio di conteggio delle parole localmente sulla mia macchina per scoprire se mancano alcuni passaggi e aggiungere ulteriori spiegazioni sulla procedura. Un'altra cosa che ho notato è che la documentazione per i runner non segue uno schema(alcuni hanno una sezione di panoramica, mentre altri iniziano con la descrizione dell'utilizzo o con i prerequisiti o con un titolo casuale). Li aggiornerò tutti in modo che seguano un unico schema semplice.

Ho intenzione di aggiungere una nuova pagina per descrivere ogni runner e fornire una narrazione descrittiva a ciascuno di loro [BEAM-3220]. Da questa pagina gli utenti possono reindirizzare alla pagina di descrizione dettagliata di ogni runner e alla matrice delle capacità. Inoltre, ho intenzione di aggiungere un confronto descrittivo di ogni runner. Al momento, sto utilizzando Beam NEXMark per il benchmarking dei runner Flink per la mia tesi di master. Dato che sono completamente a conoscenza del benchmarking NEXMark, vorrei includere qui i risultati del benchmarking di ciascun runner sia in modalità batch che in streaming(BEAM-2944). Aggiornerò anche la documentazione di NEXMark se scopro che parametri/ configurazioni sono mancanti/rimossi. In precedenza, quando utilizzavo il runner Flink, non riuscivo ad andare avanti perché uno dei parametri non era presente nella documentazione. Ora, però, che ho più dimestichezza anche con la base di codice NEXMark, sarebbe più facile per me eseguire il benchmark dei runner e aggiungere le metriche. Nella stessa pagina, vorrei includere un breve riepilogo dell'idoneità alla produzione di ogni runner.

Nella documentazione attuale, il supporto per i runner classici/portatili è incluso nella pagina di descrizione di ogni runner. Penso che sia anche meglio riunirli tutti in un unico posto, nella matrice delle funzionalità o nella pagina di descrizione appena aggiunta. Inoltre, al momento il supporto della portabilità viene gestito in un foglio Google separato che vorrei unire alla matrice di compatibilità. https://docs.google.com/spreadsheets/d/1KDa_FGn1ShjomGd-UUDOhuh2q73de2tPz6BqHpzqvNI/edit#gid=0). Come parte di questo compito, prevedo di includere tutte le correzioni principali/minori menzionate nel documento BEAM-2888.

Considero GSoD un'opportunità per iniziare a contribuire al progetto open source. Continuerò a contribuire ai progetti open source, in particolare a Beam, e vorrei continuare a essere un membro attivo della community. Poiché Apache Beam ha una community attiva con funzionalità in continuo sviluppo, penso che ci sia sempre la possibilità di migliorare la documentazione per aggiornarla. Inoltre, vorrei contribuire anche al lavoro di sviluppo. Se ho una buona conoscenza di Beam, posso anche aiutare la community di utenti, dato che ho sempre ricevuto aiuto dalla community quando ho iniziato a utilizzare Beam.

Ritengo di essere la persona giusta per questo progetto perché:

  1. Sono un appassionato di sistemi distribuiti che sta cercando di comprendere le parti interne dei sistemi di elaborazione dei dati.
  2. Ho esperienza nell'utilizzo di Apache Beam e Apache Flink come utente.
  3. Ho già compreso il codebase Apache Beam e Apache Flink come sviluppatore.
  4. Ho realizzato un progetto per confrontare diversi supporti per travi.
  5. Ho esperienza nella scrittura di blog tecnici per spiegare i concetti dell'elaborazione dei big data e dei sistemi distribuiti.
  6. Attualmente sto lavorando alla mia tesi di master per migliorare il rendimento del backend dello stato di Apache Flink per il quale utilizzo l'implementazione di Apache Beam NEXMark per i benchmark e ho contribuito ad aggiornare la documentazione di Apache Beam.
  7. Dato che ho quattro anni di esperienza lavorativa come sviluppatore di software, ho scritto diversi documenti di progettazione tecnica, documentazione sui prodotti e file Readme(a cui non ho accesso al momento).
  8. Scrivo la documentazione in modo che chiunque non ne sia a conoscenza possa capirla a prima vista.