内存分布式文件系统

1.背景

Spark平台以分布式内存计算的模式达到更高的计算性能,然而,分布式内存计算的模式也是一柄双刃剑,在提高性能的同时不得不面对分布式数据存储所产生的问题,具体问题主要有以下几个:

1)  当两个Spark作业需要共享数据时,必须通过写磁盘操作。比如:作业1要先把生成的数据写入HDFS,然后作业2再从HDFS把数据读出来。在此,磁盘的读写可能造成性能瓶颈。

2)  由于Spark会利用自身的JVM对数据进行缓存,当Spark程序崩溃时,JVM进程退出,所缓存数据也随之丢失,因此在工作重启时又需要从HDFS把数据再次读出。

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

仔细分析这些问题后,可以确认问题的根源来自于数据存储,由于计算平台尝试自行进行存储管理,以至于Spark不能专注于计算本身,造成整体执行效率的降低。所以,需要一个专门的分布式的内存文件系统,来减轻Spark内存压力的同时赋予了Spark内存快速大量数据读写的能力,把存储与数据读写的功能从Spark中分离,使得Spark更专注在计算的本身,以求通过更细的分工达到更高的执行效率。

2.调研

业界特别受欢迎的分布式内存文件系统—Tackyon,在经过一系列环境部署和配置调整,使用spark-sql进行测试,速度没有提升。

而tachyon也是Spark 默认的 off-heap 内存方案,因此,Spark 的安装包已经 build-in 了 Tachyon 的 Client。配置spark进行测试,速度有显著提升,但是功能上有限制。

于此同时,又调研了另外一个内存分布式文件系统 —Ignite文件系统(IGFS),IGFS提供了和Hadoop HDFS类似的功能,但是只在内存中。事实上,除了他自己的API,IGFS还实现了Hadoop的文件系统API,可以透明地加入Hadoop或者Spark的运行环境。 
      IGFS将每个文件的数据拆分成独立的数据块然后将他们保存进一个分布式内存缓存中。然而,与Hadoop HDFS不同,IGFS不需要一个name节点,它通过一个哈希函数自动确定文件数据的位置。 
      IGFS可以独立部署,也可以部署在HDFS之上,这时他成为了一个存储于HDFS中的文件的透明缓存层。

3.测试结果

1)ignite测试

使用专车测试用例,在不同数据量和spark配置环境下执行的时间进行对比,外加count(*)语句,执行结果如下图所示:

根据测试结果,ignite在存储与计算在同一个集群的情况下,计算速度并没有显著提升。考虑到实际应用中,跨集群进行计算的业务方数据量都太大,不适用于内存存储。

2)spark内建的tachyon client测试

4.将表结构改为非map结构

观察应用程序,占用大量时间的语句是查询map结构表中的某一列,尝试将那一列提取出来,新建一个非map结构的表,再进行同样的查询,速度显著提升:

时间: 2024-10-24 12:52:18

内存分布式文件系统的相关文章

分布式文件系统--GFS

分布式文件系统      Google File System:是由google开发并设计的一个面向大规模数据处理的一个分布式文件系统. 我们首先来简单的说明一下这个分布式,我们都知道现在要存储的数据量越来越大,但是一台电脑的存储能力是有限的,尽管我们可以通过提高某台电脑的存储能力来解决这个问题,但是这是无法根本解决这个问题,所以我们通过很多很多台廉价的电脑来分布式存储这些数据.简单说就是把要存的文件分割成一份一份存到许多台电脑上. 为了满足Google迅速增长的数据处理需求,Google设计并

分布式文件系统之——mogilefs

本节我们将来认识下分布式文件系统,不过我主要讲的是关于其中的一个比较流行的mogilefs进行介绍,好了其他的不多说了,下面我们就开始吧. 什么是分布式文件系统? 什么是分布式文件系统(Distributed File System)?顾名思义,就是分布式+文件系统.它包含了2方面,从文件系统的客户端的角度来看,他就是一个标准的文件系统,提供了API,由此可以进行文件的创建.删除.读写等操作:从内部来看的话,分布式文件系统则与普通的文件系统不同,它不在是本地的磁盘中,它的内容和目录都不是存储在本

分布式文件系统---GlusterFS介绍

GlusterFS概述 GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够 支持数PB存储容量和处理数千客户端.GlusterFS借助TCP/IP或InfiniBand RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据.GlusterFS基于可堆叠的用户空间设计,可为各种不同的数据负载提 供优异的性能. GlusterFS支持运行在任何标准IP网络上标准应用程序的标准客户端,如图2所

分布式文件系统fastDFS部署

一.部署环境:(CentOS 6.9) tracker server:10.10.1.105 storage server:10.10.1.106  10.10.1.107 client:10.10.1.105 二.FastDFS: 开源的轻量级分布式文件系统: 三个角色: tracker server :跟踪服务器,调度,在内存中记录所有存储组和存储服务器的状态信息: tracker.conf storage server :存储服务器,文件(data)和文件属性(metadata),一组服务

DFS分布式文件系统--基础篇

DFS分布式文件系统--基础篇 DFS是将相同的文件同时存储到网络上多台服务器上后,就可以有以下功能和优点: 提高文件的访问效率:DFS服务器会向客户端提供一个服务器列表,列表中的这些服务器内部有客户端所需要的文件.DFS会将最接近客户端的服务器,放在列表最前面,以便让客户端优先从这台服务器来访问文件 . 提高文件的可用性:当提供资源的服务器列表中的某一台服务器出现故障,客户端仍然可以从列表中的下一台服务器获取所需要的文件,即DFS提供排错功能. 服务器负载平衡功能:由于存放相同文件,有可能有多

分布式文件系统元数据服务模型[转]

随着非结构化数据的爆炸,分布式文件系统进入了发展的黄金时期,从高性能计算到数据中心,从数据共享到互联网应用,已经渗透到数据应用的各方各面.对于大多数分布式文件系统(或集群文件系统,或并行文件系统)而言,通常将元数据与数据两者独立开来,即控制流与数据流进行分离,从而获得更高的系统扩展性和I/O并发性.因而,元数据管理模型显得至关重要,直接影响到系统的扩展性.性能.可靠性和稳定性等.存储系统要具有很高的Scale-Out特性,最大的挑战之一就是记录数据逻辑与物理位置的映像关系即数据元数据,还包括诸如

分布式文件系统以及对相关节点的简单理解

Distributed File System 1.数据量越来越多,在一个操作系统管辖的范围存储不下来,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,分布式文件系统由此产生. 2.它是一种允许文件通过网络在多台主机上分享的文件系统,可以让多台机器上的用户分享文件和存储空间. 3.通透性,让实际上是通过网络来访问文件的动作,由程序与用户看来,就像访问本地的磁盘一般. 4.容错性,即使系统中有些节点脱机,整体来说系统任然可以持续运作而不会有

分布式文件系统:原理、问题与方法

本地文件系统如ext3,reiserfs等(这里不讨论基于内存的文件系统),它们管理本地的磁盘存储资源.提供文件到存储位置的映射,并抽象出一套文件访问接口供用户使用.但随着互联网企业的高速发展,这些企业对数据存储的要求越来越高,而且模式各异,如淘宝主站的大量商品图片,其特点是文件较小,但数量巨大:而类似于youtube,优酷这样的视频服务网站,其后台存储着大量的视频文件,尺寸大多在数十兆到数吉字节不等.这些应用场景都是传统文件系统不能解决的.分布式文件系统将数据存储在物理上分散的多个存储节点上,

分布式文件系统

分布式文件系统(Distributed File System,DFS)可以提供文件的访问效率,提高文件的可用性并减轻服务器的负担. 分布式文件系统概述 通过分布式文件系统将相同的文件同时存储到网络上多台服务器后,即可拥有以下功能. 提供文件的访问效率:当客户端通过DFS访问文件时,DFS会引导客户端从最接近客户端的服务器来访问文件,让客户端快速访问到所需的文件.实际上,DFS是提供客户端一份服务器列表,这些服务器内都有客户端所需要的文件,但是DFS会将最接近客户端的服务器,例如客户端同一个AD