2.1.Spark 共享 RDD
Apache Ignite 提供了一个 Spark RDD 抽象的实现,他允许跨越多个 Spark 作业时方便地在内存内共享状态,不管是在同一个应用内部还是在不同的 Spark 应用之间。 IgniteRDD 作为 Ignite 分布式缓存的视图,既可以在 Spark 作业执行进程中部署,也可以在 Spark workder 中部署,也可以在他自己的集群中部署。 根据预配置的部署模型,状态共享既可以只存在于一个 Spark 应用的生命周期的内部(嵌入式模式),或者也可以存在于 Spark 应用的外部(独立模式),这种模式下状态可以在多个 Spark 应用之间共享。
特性一览
2.1.1. 共享 Spark RDD
IgniteRDD 是原生 Spark RDD 和 DataFrame API 的一个实现,除了所有的标准的 RDD 功能,还会跨越其他的 Spark 作业、应用和 worker 共享 RDD 的状态。
2.1.2. 更快的 SQL
Spark 不支持 SQL 索引,但是 Ignite 可以,由于先进的内存索引功能,IgniteRDD 在执行 SQL 查询时比 Spark 原生 RDD 或者 DataFrame 有百倍的性能提升。
2.2. 内存文件系统
Ignite 一个独有的技术就是叫做 Ignite 文件系统(IGFS)的分布式内存文件系统,IGFS 提供了和 Hadoop HDFS 类似的功能,但是仅仅在内存内部。事实上,除了他自己的 API,IGFS 实现了 Hadoop 的文件系统 API,并且可以透明地加入 Hadoop 或者 Spark 应用。 IGFS 将每个文件中的数据拆分为独立的数据块然后将他们存储在分布式内存缓存中。然而和 Hadoop HDFS 不同,IGFS 不需要一个 name 节点,并且用一个哈希函数自动地确定文件数据位置。 IGFS 可以独立部署,也可以部署在 HDFS 之上,不管是哪种情况,他对于 HDFS 中存储的文件都是一个透明的缓存层。 Tachyon 替代 在 Spark 环境中 IGFS 可以透明地替代 Tachyon 文件系统,鉴于 IGFS 是基于久经考验的 Ignite 数据网格技术,他会比 Tachyon 有更好的读和写性能,并且更稳定。 Hadoop 文件系统 如果打算使用 IGFS 作为 Hadoop 文件系统,可以参考 Hadoop 集成文档,这时 IGFS 和 HDFS 并没有什么不同。
