# Apache-flink: elaborazione stream o elaborazione batch tramite Flink

1

Ho il compito di ridisegnare un processore di catalogo esistente e il requisito è il seguente Requisiti Ho da 5 a 10 fornitori (ogni venditore può avere più negozi) che mi fornirebbe un file 'XML' per negozio. In pratica, 1 file xml di prodotti per archivio e più file di archivio per fornitore. La dimensione massima del file può essere di 500 MB e quella minima di 100 MB I prodotti medi per file potrebbero essere 100.000.

Il formato xml di esempio potrebbe essere come questo

<?xml>
<catalog>
    <product>...</product>
    <product>...</product>
    <product>...</product>
</catalog>

Non occorrono più di 30 minuti per scaricare il file per negozio e questi file vengono aggiornati una volta al giorno o ogni 3 o 6 ore.

Ora il requisito di priorità è che i dettagli del prodotto sono altamente non organizzati e questi file devono essere organizzati, elaborati (più di 10 processi) e convertiti in un altro oggetto comune (json) e quindi archiviati in Cassandra .

Il responsabile della mia tecnologia mi ha consigliato di progettare con Apache Flink e Kafka su HDFS, in cui flink direttamente i file dai server dei fornitori e li avvia durante lo streaming.

La mia opinione era che, in entrambi i casi, i file sono di dimensioni finite e non c'è molto bisogno di trasmetterli in streaming. Quindi ho pensato di avere uno schedulatore autonomo come downloader da scaricare e caricare i file su HDFS. Non appena i file vengono caricati su HDFS, posso attivare l'elaborazione Flink e archiviarla in Cassandra.

La mia domanda qui è che , sapendo che i file sono di dimensioni finite e conteggi finiti irresponsabili del numero di venditori, Lo stream che elabora un overkill o un'elaborazione di batch sarebbe un carico di latenza più tardi?

    
posta nura 22.09.2016 - 08:11
fonte

1 risposta

1

La soluzione di streaming avrà una latenza inferiore, ma non penso che dovrebbe essere la considerazione principale. Invece, vorrei esaminare la complessità complessiva del sistema. Sia in streaming che in batch, il codice sarà praticamente lo stesso, ma con lo streaming si ottiene un migliore recupero degli errori e non è necessario configurare uno scheduler.

    
risposta data 17.06.2017 - 10:12
fonte