Spark взаимодействует с Alluxio и Tungsten для получения данных на разных этапах.
Для Spark Alluxio - это внешняя распределенная система хранения, такая как HDFS.Spark взаимодействует с Alluxio через интерфейс файловой системы (см. Следующий пример).По сути, это тот же интерфейс, через который Spark получает доступ к HDFS или локальной файловой системе, за исключением того, что Alluxio предоставляет службу хранения, которая может использовать память для носителей.
// save data as text file to Alluxio
> rdd.saveAsTextFile("alluxio://localhost:19998/rdd1")
// read data as text file from Alluxio
> rdd = sc.textFile("alluxio://localhost:19998/rdd1")
// save data as object file to Alluxio
> rdd.saveAsObjectFile("alluxio://localhost:19998/rdd2")
// read data as object file from Alluxio
> rdd = sc.objectFile("alluxio://localhost:19998/rdd2")
Spark взаимодействует с Alluxio только на этапах чтениявходные файлы данных и запись выходных файлов.
Tungsten - это внутреннее представление данных для Spark, направленное на повышение эффективности памяти и ЦП.По сути, компоновка памяти по умолчанию для объектов JVM считается неэффективной для приложений Spark из-за объема памяти и накладных расходов GC (см. блог по Project Tungsten из блоков данных).Tungsten помогает Spark обрабатывать данные из двоичного формата данных напрямую, не мешая JVM создавать объекты JVM.
В результате приложение Spark может читать входные файлы из Alluxio - Alluxio отправляет Spark байты, не понимая этихбайт, затем анализируют данные и представляют их внутри Spark в соответствии с протоколом, определенным Tungsten.