apache-spark - 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
解决方案
Alluxio 获得了内存速度读/写操作的好处。Spark 能够从 Alluxio 读取数据(在内存存储系统中)。这提供了避免来自硬盘的输入/输出(IO)的好处(任何文件系统,例如位于硬盘上的 HDFS 等)。
Tungsten- 是 spark 的后端优化引擎。编写数据帧/数据集 API 或 Spark SQL 中的代码由 Catalyst Optimizer 以逻辑/优化逻辑计划的形式进行优化。一旦这个阶段结束,tungsten 优化引擎将接管并负责动态生成代码(称为“代码生成”),该代码针对分布式环境的执行进行了高度优化。
对我来说,两者都有不同的目的,我更愿意将它们分开对待。
希望它在一定程度上有所帮助。
推荐阅读
- r - 在R中获取直方图的bin宽度
- string - oracle字符串函数的开始和结束位置
- javascript - 更改光标状态时是否可以添加过渡?
- android-studio - 热门从片段导航到活动
- c# - 使用 HTML 扩展的自定义 Ajax 表单提交器
- javascript - Three.js - 平面之间的角度
- javascript - 如果 td 满足 javascript 中的条件,如何显示隐藏 tr
- javascript - D3 - 添加元素但链中的下一个 .append("path") 永远不会执行
- javascript - 我想在 js 中添加 css 到 document.write
- c# - 如何在 .NET Core 3.1 的 Azure Functions 中将 Serilog 配置为默认日志提供程序?