本文主要是介绍1.Tachyon简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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之间数据共享的桥梁。
通过下面的部署结构来观察他们之间的关系:
这篇关于1.Tachyon简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!