Разница между аллуксио (тахион) и вольфрамом в искре? - PullRequest
0 голосов
/ 04 октября 2018

Tachyon - это распределенная система хранения в памяти, разработанная отдельно от Spark, которая может использоваться как постоянное хранилище вне кучи во время приложения Spark.

Tungsten - это новый компонент Spark SQL, который предоставляет большеэффективные операции Spark, работающие непосредственно на уровне байтов.Поскольку Tungsten больше не зависит от работы с Java-объектами, мы можем использовать либо хранилище в куче (в JVM), либо в хранилище вне кучи

В режиме вне кучи оба уменьшают накладные расходы на сборку мусора, поскольку данные нехранятся в виде объектов Java.

Итак, могу ли я просто подумать, что Tachyon дает преимущества для общего RDD, тогда как spark-sql выигрывает от Tungsten?

Предположим, следующий код

val df = spark.range(10)

val rdd = df.rdd

df.persist(StorageLevel.OFF_HEAP) // in Tungsten format(bytes)?

df.show

rdd.persist(StorageLevel.OFF_HEAP) // in Tachyon storage ?

rdd.count

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Короче говоря, оба ваших утверждения неверны:

  • Поскольку хранилище Spark 1.6 OFF_HEAP больше не использует Alluxio, а вместо этого использует внутреннее хранилище вне кучи Spark.См., Например, SPARK-16025.
  • Все режимы хранения в Spark SQL хранят данные во внутреннем двоичном формате, который можно дополнительно настроить с помощью spark.sql.inMemoryColumnarStorage.* свойств.
0 голосов
/ 09 октября 2018

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.

0 голосов
/ 04 октября 2018

Alluxio получает преимущества от операций чтения / записи со скоростью памяти.Spark способен читать данные из Alluxio (в системе хранения памяти).Это дает преимущества избегания ввода-вывода (IO) от жесткого диска (любая файловая система, такая как HDFS и т. Д., Расположенная на Hardisk).

Tungsten - это механизм внутренней оптимизации spark.кодированные API-интерфейсы dataframe / dataset или в Spark SQL оптимизируются в форме логических / оптимизированных логических планов с помощью Catalyst Optimizer.Как только этот этап закончен, вольфрамовый механизм оптимизации вступает во владение и отвечает за генерацию кода (называемого «Code gen») на лету, который высоко оптимизирован для выполнения в распределенной среде.

Мне обоим служат разные цели, и я предпочитаю рассматривать их по отдельности.

Надеюсь, это поможет в некоторой степени.

...