是一个以内存为核心的开源分布式存储系统,也是目前发展最迅速的开源大数据项目之一。Tachyon为不同的大数据计算框架(如Apache Spark,Hadoop MapReduce, Apache Flink等)提供可靠的内存级的数据共享服务。此外,Tachyon还能够整合众多现有的存储系统(如Amazon S3, Apache HDFS, RedHat GlusterFS, OpenStack Swift等),为用户提供统一的、易用的、高效的数据访问平台。本文首先向读者介绍Tachyon项目的诞生背景和目前发展的情况;然后详解Tachyon系统的基本架构以及目前一些重要的功能;最后,分享一个Tachyon在百度大数据生产环境下的几个应用案例。
1.Tachyon简介
随着技术的发展,内存的吞吐量在不断地提高,单位容量的内存价格在不断降低,这为“内存计算”提供可能。在大数据计算平台领域,采用分布式内存计算模式的Spark验证了这一点。Spark相比于MapReduce大大提升了大数据的计算性能,受到了业界和社区的广泛关注。然而,还是有很多问题在计算框架层难以解决,如:不同的Spark应用或不同计算框架(Spark,MapReduce,Presto)间仍需通过基于磁盘的存储系统(如HDFS,Amazon S3等)交换数据;当Spark计算任务崩溃,JVM缓存的数据会丢失; JVM中大量缓存的数据增加了Java垃圾回收的压力。
Tachyon最初出现是为了有效地解决了上述问题,它计划构建一个独立的存储层来快速共享不同计算框架的数据,实现方式上将数据置于堆外(off-heap)内存以避免大量垃圾回收开销。例如,对应Spark应用而言,可以带来以下作用:
不同Spark应用,甚至不同计算平台上的应用需要数据共享时,通过Tachyon进行内存读写,避免缓慢的磁盘操作。
使用Tachyon进行数据缓存,当Spark任务崩溃,数据仍缓存在Tachyon内存中,任务重启后能够直接从Tachyon中读取数据。
多个Spark应用理论上甚至可以共享同一份Tachyon缓存的数据,避免内存资源的浪费,减轻Java垃圾回收的压力。
图1. Tachyon在生态系统的位置
图1给出了Tachyon部署时所处的位置。Tachyon被部署在计算平台之下和现有的存储系统之上,能够在不同计算框架间共
数据/计算/Spark/内存/Tachy/Tachyon/系统/缓存/平台/框架/
数据/计算/Spark/内存/Tachy/Tachyon/系统/缓存/平台/框架/
-->