Tachyon内存文件系统

Tachyon内存文件系统

     Tachyon是以内存为中心的分布式文件系统,拥有高性能和容错能力,能够为集群框架(如Spark、MapReduce)提供可靠的内存级速度的文件共享服务。

      从软件栈的层次来看,Tachyon是位于现有大数据计算框架和大数据存储系统之间的独立的一层。它利用底层文件系统作为备份,对于上层应用来说,Tachyon就是一个分布式文件系统。

     从Tachyon项目的介绍可以看到, tachyon解决Spark/MapReduce框架数据共享的性能问题。 大数据业务一般是一个任务流, 任务流由一组相互依赖的任务组成, 一个任务的输出往往是另外一组任务的输入, 任务间数据共享是一个强需求。 最常见的数据共享方式是HDFS, 这种方式性能低下, 主要问题有: (1) HDD或者是SSD带宽都比较有限, (2) HDFS三副本写入性能损失较大, (3) 文件可能被多次缓存, 浪费内存。 Tachyon的目标就是解决数据共享的性能问题, 解决方法也很极端 —— 内存单副本。 当然简单的内存单副本会导致数据丢失, Tachyon采用lineage数据恢复技术保证数据可靠性。 根据相关论文的测试数据, Tachyon的写性能是HDFS的110倍, 任务流执行时间降低到1/4。

     如上图所示, tachyon介于存储系统和计算框架之间, 缓存计算任务读写的文件, 目前Tachyon支持HDFS, S3和GlusterFS这几个后端文件系统。 引入Tachyon后, Spark/MapReduce任务程序不需要修改, 但是Spark、MapReduce框架自身要做一个200~300行代码的小Patch, 因为计算框架在产生输出之前, 必须先将数据lineage关系告知Tachyon, Tachyon记录lineage信息到磁盘, 用于实现数据的故障恢复。

     如上图所示, Tachyon文件系统的架构非常类似HDFS, 全局有一个Master管理元数据, Woker负责数据读写, 文件数据存储到在Ramdisk中。

      容错机制: 作为分布式文件系统,Tachyon具有良好的容错机制,Master和Worker都有自己的容错方式。

从之前的系统架构图中也可看出,Master支持使用ZooKeeper进行容错。同时,Master中保存的元数据使用Journal进行容错,具体包括Editlog——记录所有对元数据的操作,以及Image——持久化元数据信息。此外,Master还对各个Worker的状态进行监控,发现Worker失效时会自动重启对应的Worker。

      对于具体的文件数据,使用血统关系(Lineage)进行容错。文件元数据中记录了文件之间的依赖关系,当文件丢失时,能够根据依赖关系进行重计算来恢复文件数据。


                                              Tachyon内存文件系统_第1张图片
       心跳机制:

在Tachyon中,心跳(HeartBeat)用于两个方面:Master, Worker, Client之间的定期通信;Master, Worker自身的定期状态自检。具体地:

  • Client向Master发送心跳信号:表示Client仍处于连接中,Client释放连接后重新连接会获得新的UserId
  • Client向Worker发送心跳信号:表示Client仍处于连接中,释放连接后Worker会回收该Client的用户空间
  • Worker自检,同时向Master发送心跳信号:Worker将自己的存储空间信息更新给Master(容量,移除的块信息),同时清理超时的用户,回收用户空间
  • Master自检:检查所有Worker的状态,若有Worker失效,会统计丢失的文件并尝试重启该Worker
   参考资料: 
http://tachyon-project.org/Tachyon: Reliable, memory speed storage for cluster computing frameworks

你可能感兴趣的:(分布式与大数据系统,分布式文件系统)