分布式内存文件系统Tachyon
UCBerkeley研发的Tachyon(超光子['tækiːˌɒn],名字要不要这么太嚣张啊:)是一款为各种集群并发计算框架提供内存数据管理的平台,也可以说是一种内存式的文件系统吧。如下图,它就处于这样一个层次:在现有存储系统如HDFS之上,在Spark,MapReduce,Impala等各种计算框架之下。
为什么要有这么一个框架呢?MapReduce就不说了,但像Spark这种内存计算框架,为什么还需要再加一层内存管理的文件系统?因为像Spark这种,框架其实只提供了强大的内存计算能力,但未提供存储能力。那么默认让Spark自己直接在内存管理数据还不够吗?下面就看一下现有的几个问题。
问题1:不同任务或框架间交换数据慢
不同任务或不同计算框架间的数据共享情况在所难免,例如Spark的分属不同Stage的两个任务,或Spark与MapReduce框架的数据交互。在这种情况下,一般就需要通过磁盘来完成数据交换,而这通常是效率很低的。
而引入Tachyon中间层后,数据交换实际上也是在内存中进行的。
问题2:执行引擎和存储引擎是同一进程
这就是前面提到过的,让Spark自己来管理内存会出现的问题。默认情况下,Spark的任务执行和数据本身都在一个进程内。当执行出现问题时就会导致整个进程崩溃,并丢失进程内的所有数据。
而Tachyon这一层的引入,就相当于将存储引擎从Spark中抽离出来,从而每个任务进程只负责执行。进程的崩溃不会丢失数据,因为数据都在Tachyon里面了。
问题3:数据被重复加载和GC
不同的Spark任务可能会访问同样的数据,例如两个任务都要访问HDFS中的某些Block,像下图中的Block1和3。这样就没办法了,每个任务都要自己去磁盘加载数据到内存中。而Tachyon不仅只保存一份数据,而且它还使用堆外内存,避免GC开销。
Tachyon如何容错?
前面我们已经看到了Tachyon如何进一步提升Spark的性能的,包括避免数据落地到磁盘,共享数据以及堆外内存避免GC等。但Tachyon本身又是如何容错的呢?不落地DFS中数据不是照样会丢失吗?而且Tachyon只在内存中保存一份数据拷贝。有一种形象的说法是:Tachyon将lineage从Spark中下移到了自己。既然手握lineage,就有办法了。跟Spark类似,它利用lineage信息(lineage-based recovery)和异步记录的checkpoint来恢复数据 (与Spark类似,都是基于RDD不可变性以及粗粒度操作才能完成的,不同点是Tachyon管理的可以是跨框架的lineage而不限于RDD和Spark的转换?),所以Tachyon放心大胆地积极(aggressively)使用内存。
其次,Tachyon本身的master通过ZooKeeper集群管理,down机时会自动选举出新的leader,并且worker会自动连接到新的leader上。
现在Tachyon版本还只是0.5,资料也比较少。关于其异步checkpointing的图算法也找到什么资料,还没有搞懂。但看起来还挺有意思的,持续关注吧。
参考资料
1 Tachyon-A Reliable Memory Centric Storage for Big Data Analytics
2 Tachyon-Reliable File Sharing at Memory-Speed Across Cluster Frameworks
分布式内存文件系统Tachyon的更多相关文章
- Spark入门实战系列--10.分布式内存文件系统Tachyon介绍及安装部署
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Tachyon介绍 1.1 Tachyon简介 随着实时计算的需求日益增多,分布式内存计算 ...
- Alluxio : 开源分布式内存文件系统
Alluxio : 开源分布式内存文件系统 Alluxio is a memory speed virtual distributed storage system.Alluxio是一个开源的基于内存 ...
- Tachyon:Spark生态系统中的分布式内存文件系统
转自: http://www.csdn.net/article/2015-06-25/2825056 摘要:Tachyon把内存存储的功能从Spark中分离出来, 使Spark可以更专注计算的本身, ...
- 内存文件系统:tachyon(现在叫Alluxio)
此文于2015 年 8 月 10 日发布 Tachyon 是什么 Tachyon 是 AMPLab 开发的一款内存分布式文件系统.它介于计算层和存储层之间,可以简单的理解为存储层在内存内的一个 Cac ...
- spark中使用的内存文件系统-Tachyon FS 简介
转自:http://blog.csdn.net/u014252240/article/details/41810849 发布人:南京大学PASA大数据实验室顾荣 1. Tachyon是什么 Tach ...
- Disque:Redis之父新开源的分布式内存作业队列
Disque是Redis之父Salvatore Sanfilippo新开源的一个分布式内存消息代理.它适应于"Redis作为作业队列"的场景,但采用了一种专用.独立.可扩展且具有容 ...
- 基于英特尔® 至强™ 处理器 E5 产品家族的多节点分布式内存系统上的 Caffe* 培训
原文链接 深度神经网络 (DNN) 培训属于计算密集型项目,需要在现代计算平台上花费数日或数周的时间方可完成. 在最近的一篇文章<基于英特尔® 至强™ E5 产品家族的单节点 Caffe 评分和 ...
- 高性能分布式内存队列系统beanstalkd(转)
beanstalkd一个高性能.轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Facebook ...
- [CareerCup] 8.9 An In-memory File System 内存文件系统
8.9 Explain the data structures and algorithms that you would use to design an in-memory file system ...
随机推荐
- [NOIp 2016]换教室
Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 $2n$ 节课程安排在 $n$ 个时间段上.在第 $i$($1 \leq ...
- [HAOI2008]糖果传递
题目描述 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. 输入输出格式 输入格式: 小朋友个数n 下面n行 ai 输出格式: 求使所有人获得均等糖果 ...
- [POI2007]ZAP-Queries
题目描述 Byteasar the Cryptographer works on breaking the code of BSA (Byteotian Security Agency). He ha ...
- 【网络流问题·我就想建好模】
·为了有助于你读后文,在写题前先列出一些大米饼的代码习惯: 一个提醒:所有的ADD函数无特殊说明均如图:(没有w就直接跳过) 以及: go(i,a,b)=====for(int i=a;i<=b ...
- hdu 5645 DZY Loves Balls
DZY Loves Balls Accepts: 659 Submissions: 1393 Time Limit: 4000/2000 MS (Java/Others) Memory Lim ...
- 修改Linux命令提示符
vim .bashrc export PS1='\e[1;32m\u\e[m\e[1;33m@\e[m\e[1;35m\h\e[m:\W\$'
- Spring使用@Scheduled定时调度
一.spring配置文件中增加对这个注解的支持: 配置文件如下: <?xml version="1.0" encoding="UTF-8"?> &l ...
- Linux下用程序实现统计cpu和内存的利用率
Linux下没有直接可以调用系统函数知道CPU占用和内存占用.那么如何知道CPU和内存信息呢.只有通过proc伪文件系统来实现. proc伪文件就不介绍了,只说其中4个文件.一个是/proc/stat ...
- git pull 报错 You have not concluded your merge (MERGE_HEAD exists).
git pull时报错 解决方案:
- oracle循环插入1万条数据
declare maxnumber constant number:=10000; i number :=1; begin for i in 1..maxnumber loop insert into ...