1.Tachyon简介

来源:互联网 发布:php的魔术方法 编辑:程序博客网 时间:2024/06/05 11:14

Tachyon是以内存为中心的分布式文件系统,能够为集群计算框架(如:Spark,MapReduce等)提供内存级速度的跨集群文件共享服务。

 

1.1  Tachyon特征

1)       Tachyon‘s的原生API类似JAVA的文件API

2)       兼容性:Tachyon实现了HDFS接口。故MapReduce和Spark无需任何修改可以运行在Tachyon上。

3)       插件式的底层文件系统:为提高容错性。Tachyon对内存数据通过checkpoint到UFS(例如:HDFS, S3, GlusterFS, and single-node local file systems)。

1.2  Spark内存计算面临问题

1)Spark共享数据问题:当两个Spark作业需要共享数据时,必须通过写磁盘操作。磁盘的读写可能造成性能瓶颈。

2)Spark自身JVM数据缓存问题:Spark程序崩溃时,JVM进程退出,所缓存数据也随之丢失,因此在工作重启时又需要从HDFS把数据再次读出。

3)Spark缓存数据冗余问题:两个Spark作业需操作相同的数据时,每个作业的JVM都需要缓存一份数据,不但造成资源浪费,也极易引发频繁的垃圾收集,造成性能的降低。

 

针对Spark中遇到的这些问题,根本原因可以归结到数据存储问题。作为计算框架的Spark尝试自行存储管理,不能专注Spark计算,造成整体执行效率降低。而Tachyon是一个分布式内存文件系统,可以减轻spark内存压力并且使得Spark快速大量完成数据读写。Tachyon把Spark的存储和计算分离,使用Spark专注计算,通过Tachyon来进行数据存储。

 

1.3  Tachyon如何Spark面临问题

Tachyon通过下面的3中方式来解决Spark内存计算过程所产生的问题

1)Spark共享数据问题:当两个Spark作业需要共享数据时,无需再通过写磁盘,而是借助Tachyon进行内存读写,从而提高计算效率。

2)Spark自身JVM数据缓存问题:在使用Tachyon对数据进行缓存后,即便在Spark程序崩溃JVM进程退出后,所缓存数据也不会丢失。这样,Spark工作重启时可以直接从Tachyon内存读取数据了。

3)Spark缓存数据冗余问题:当两个Spark作业需要操作相同的数据时,它们可以直接从Tachyon获取,并不需要各自缓存一份数据,从而降低JVM内存压力,减少垃圾收集发生的频率。

 

1.4  Tachyon的部署结构

在存储方面:Tachyon提供了多个文件系统的实现(比如:HDFS等);

在计算方面:不需要修改Tachyon代码,仅需要通过简单配置就可以完成Spark,MapReduce与Tachyon的集成,而Tachyon作为中间层,提供Spark和MapReduce与HDFS之间数据共享的桥梁。

通过下面的部署结构来观察他们之间的关系:


0 0