首页 > 解决方案 > Spark中Alluxio(Tachyon)和Tungsten的区别?

问题描述

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

标签: apache-sparkapache-spark-sqlrddalluxio

解决方案


Alluxio 获得了内存速度读/写操作的好处。Spark 能够从 Alluxio 读取数据(在内存存储系统中)。这提供了避免来自硬盘的输入/输出(IO)的好处(任何文件系统,例如位于硬盘上的 HDFS 等)。

Tungsten- 是 spark 的后端优化引擎。编写数据帧/数据集 API 或 Spark SQL 中的代码由 Catalyst Optimizer 以逻辑/优化逻辑计划的形式进行优化。一旦这个阶段结束,tungsten 优化引擎将接管并负责动态生成代码(称为“代码生成”),该代码针对分布式环境的执行进行了高度优化。

对我来说,两者都有不同的目的,我更愿意将它们分开对待。

希望它在一定程度上有所帮助。


推荐阅读