2016-05-25 25 views

risposta

30

La motivazione alla base del fatto che Spark sia indipendente da Akka è ben descritta in SPARK-5293, che è un compito ombrello per i problemi relativi ad Akka.

di citare la descrizione originale:

Spark dipende Akka, [quindi] non è possibile per gli utenti di fare affidamento su diverse versioni, e abbiamo ricevuto molte richieste in passato per chiedere aiuto su questo specifico problema. Ad esempio, Spark Streaming potrebbe essere usato come ricevitore dei messaggi Akka - ma la nostra dipendenza da Akka richiede che gli attori Akka a monte utilizzino anche la versione identica di Akka.

Poiché il nostro utilizzo di Akka è limitato (principalmente per RPC e loop eventi a thread singolo), possiamo sostituirlo con implementazioni RPC alternative e un ciclo di eventi comune in Spark.

Come potete vedere, il motivo principale è semplice: offrire agli utenti una maggiore flessibilità nella creazione delle proprie applicazioni.

Rimuovere anche dipendenze complesse come Akka, che comunque non è stato ampiamente utilizzato da Spark, il che significa minori costi di manutenzione.

+7

Akka è stato sostituito da 'org.apache.spark.rpc' che fornisce un'interfaccia simile a Akka, ma utilizza NIO e NIO Java. Vedi [questo commit] (https://github.com/apache/spark/commit/bc1babd63da4ee56e6d371eb24805a5d714e8295). –