摘要:Sponge是一个简单多层,兼容完全POSIX兼容的分布式NFS、Hadoop,支持对象存储、云存储、SDS、容器机制,集成Spark为计算引擎,基于内存计算技术的分布式系统,将大数据的存储、管理和计算有机融合,具有实时一致性。
使用对象存储、高性能存储、Hadoop、Spark、Storm……等技术来存储、处理和分析大数据很流行,然而海绵数据科技有限公司(以下简称“海绵数据”)说,这些技术各自为政,存在性能、管理、开发、成本等多方面的问题。
5月20日,海绵数据宣布推出其第二代大数据操作系统产品Sponge。海绵数据CEO朱晓明、VP崔斌、CTO李东及COO刘栋接受了CSDN记者的采访,全面解析了Sponge的研发初衷、技术特点、适用场景、部署模式以及市场战略等一系列的问题。
总体来说,Sponge是一个简单多层,兼容完全POSIX兼容的分布式NFS、Hadoop,支持对象存储、云存储、SDS(软件定义存储)、容器机制,集成Spark为计算引擎,基于内存计算技术的分布式系统,将大数据的存储、管理和计算有机融合,具有实时一致性,易于兼容现有系统,相比10年前诞生的第一代产品Hadoop更加简单易用,易于扩展。
三位高管表示,仅仅有作为计算平台的Spark不足以全面应对大数据的挑战,整合后的Sponge技术框架,能够同时支持大数据、云存储、结构化、半结构化和非结构化数据的处理,代表了大数据的发展方向。
需求&理念
Sponge的诞生源于三个理由。首先是大数据市场的刚需。今天已经没有人再怀疑大数据的价值,云计算、移动互联、物联网、机器学习、无人机等前沿技术的普及与大数据的发展相得益彰,不论在美国还是中国,大数据已经在很多的IT企业和传统企业开始落地,譬如互联网金融公司的反欺诈流程,电信运营商的客户服务分析,都贯穿着大数据和机器学习技术的应用,这也刺激着初创企业在这个领域寻找新的商业机会。
目前普遍被采用来应对大数据的是开源软件与廉价的x86服务器的组合,这些开源产品包括Hadoop、Spark、Storm、NoSQL等。传统存储和数据库当然也针对大数据的需求升级,用来存储价值密度低的大量非结构化数据却不现实。这些原本被Google、Facebook、Yahoo等大公司验证在某些场景很成功的开源项目,也存在问题:不同功能模块对应多个相互独立的开源项目,为不同的目的而设计,其关系很复杂,缺乏通用性,系统部署和使用复杂而低效,二次开发困难,并且难以统一管理和监控,维护成本高,所以,需要有一个统一的平台。当前风头正盛的Spark,被其粉丝认为是通用的大数据处理平台,但李东认为,Spark只是一个计算平台,并未涉及到如文件系统等底层的大数据核心技术,不能算是我们需要的大数据操作系统。
在李东看来,第二代大数据操作系统和第一代产品的最本质区别在于设计理念的不同,由此架构和实现方法也不一样。第一代的系统即使再打补丁,因为架构的原因也存在无法添加的功能。海绵数据相信,随着社交媒体、智能设备的普及,Hadoop在其诞生环境下自然采用的传统批处理的方式,已经跟不上现在的交互式处理、实时处理的需求,现在我们需要多样化的处理方式,如果部署Hadoop就可能需要并行的两套系统来提供两种处理模式。另一方面,Hadoop版本众多,现在就有1.0、1.1、2.0,生态系统项目的使用也不是一件简单的事情。
此外,自主知识产权的需求同样作用于大数据技术领域。朱晓明称,大数据操作系统的准入门槛高,如文件系统这样的核心技术,即便是在美国,具有相关开发能力的团队也不多,而海绵数据具有硅谷的研发团队,其中不乏在硅谷20多年的专家,具有这个技术储备。
简单、高效、可靠、经济,这四个词,是海绵数据对第二代大数据操作系统的价值的追求,以及Sponge产品设计的理念。
技术&产品
Sponge集成了现有开源技术的思想或者组件,但并不仅仅是一个简单的打包,而是一套拥有20多项专利技术的技术。我们先来看它的架构。Sponge追求简单易用,并能够整合多层,提供一个高性能的平台,满足不同层面的需求,技术架构如下图所示。
Sponge整体技术架构
其设计要点如下:
- 存储层整合高性能存储、结构和半结构化数据处理、云对象存储和软件定义存储层,采用统一的核心,各层都实现在同一个核心之上,实现高可扩展和整合多层。
-
分析层集成Spark作为计算引擎,包括核心API和其他附加库如Streaming、Spark SQL、GraphX、MLlib等。
-
分布式NFS完全POSIX兼容,易于集成现有的系统、应用和脚本。
-
实现Hadoop文件系统的接口,能够兼容Hadoop生态系统(使用任何Hadoop版本都可以进行数据迁移)。
-
底层存储架构支持细粒度数据块和CDR(持续数据复制)。
-
采用Masterless集群拓扑架构,解决单点故障和小文件数据的限制。
这里要说一下Masterless,也就是Sponge只有一种节点类型,没有Hadoop那样的Master和Slave之分,客户端可以直接和Sponge节点通信,无需经过Master。
Masterless结构
这就带来如下的优势:
- 所有的文件系统的metadata平均分配在每个节点,所以没有单点故障和文件数据的限制,可以处理更多小文件。
-
节点之间没有依赖关系,所有的服务都在单个节点,不需要其他独立的集群协助。
没有NameNode的限制,处理大并发性能更好。
-
此外,Sponge还是模块化架构,这不限于分布式系统拓扑结构,单个实例也是由多个组件和多个服务组成的。
Sponge与Hadoop的对比
下面再展示一些具体的重要特性。
Sponge文件系统(SpongeFS)
不同于以往以磁盘计算技术为核心的文件系统,SpongeFS将集群内存管理提升成为文件系统的重要组成部分,以满足大量文件数据读写IO的高需求。SpongeFS基于分布式设计,上文说的Masterless结构,以及模块化架构,正是由SpongeFS来操盘的。
SpongeFS主要由集群管理层、文件管理层和存储层构成(详见架构图)。当数据进入SpongeFS,就被分成一个个数据块,每个数据块通过文件管理层先存入缓存层,被加入集群间复制队列,一击加入到持久队列等待存入持久层,CDR则把持久层数据块复制到目标集群(目标群数据块也优先存到缓存层)。
文件管理层的基本管理单位是Volume,每个Volume可以有不同的管理设置,如容错性、安全性、物理资源的使用等。
缓存层提供高性能服务的关键。SpongeFS的缓存层由整个集群所有节点的缓存组成,共同协作完成IO操作,缓存层提供自动预加载功能,并通过Ejection内存管理技术,以Low和High为界限保证缓存空间快速、安全地重新分配。
SpongeFS缓存层
最后要说的是,SpongeFS的持久层使用“容器”提供文件数据管理服务。容器是虚拟的文件数据容器。一个容器就是SpongeFS集群里的一个逻辑组物理资源,它可以被 集群里的文件管理层使用。容器提供安全的机制来组织、管理、分析数据存储资源,每个容器由一定数量的虚拟容器构成平均分配在集群每个节点上(详见Masterless结构图)。
SpongeFS采用容器提供高可用、动态重配置、分布式的数据存储,在集群的节点发生故障时,允许集群自我修复并继续提供服务。容器的主要的功能特性如下:
- 数据持久保存。数据异步从缓存层写往持久层,防范服务重启或较小的故障发生数据丢失。
-
副本管理。可以配置数据副本的份数。集群里的每个节汽既保存活跃的数据,又保存数据副本。当某个节点不可用,数据副本虚拟容器可以被提升为活跃的虚拟客器,从而继续提供高可用服务。
-
重新组织。集群里的数据可以重新组织和分布,从而动态增加或删除容器和服务器。
容积改变。可以在需要时动态调整容积容积大小。
文件系统实时一致性
Sponge FSCK是Sponge的文件系统实时一致性检查技术,通过在后台运行的FSCK Deamon完成一致性检查,任何对SpongeFS的修改,都会从各个节点通过一个轻量级的MapReduce引擎实时传输给FSCK Deamon汇总和及时检测,支持完全和增量检查,以提高性能,降低系统开销。
李东介绍,FSCK结果查询可以由用户应用程序查询,Sponge同时有一个FSCK long running service,这个service进行结果查询汇总。
CDR数据同步技术
CDR流程前文已经说过,图示如下。
CDR技术
与Hadoop的distcp(批处理过程)不同,CDR支持集群或数据中心之间接近实时的复制,并支持文件、文件夹、文件卷等不同的筛选规则,以及增量复制、断点恢复、单向和双向复制、内存间复制等。
分布式NFS技术
SpongeFS支持实时随机读写操作,所以Sponge的NFS是完全POSIX兼容的:
分布式NFS技术
- 每个节点都实现完全无状态的Sponge文件系统NFS服务器,都可以被NFS客户端mount。
-
每个NFS服务器运行在CNode上,作为CNode的一个服务,客户端的NFS请求通过CNode解释称对在存储层的文件操作。
-
任何一个Sponge文件系统NFS服务器都可以和所有的节点通讯。
-
Sponge文件系统NFS服务器实现了NFSv3。
数据分析引擎
考虑到Java或Python的支持、shell中的交互式查询、SQL查询、流数据、图表数据处理和机器学习等,Sponge选择了Spark作为分析引擎,Spark在这些领域表现出色,同时架构和Sponge的底层存储架构也非常相似。这里只说Sponge对Spark的“加持”作用:
- Spark在从Sponge文件系统读写文件时,从内存中读取,减少磁盘IO。
-
Sponge帮助Spark通过在数据处理过程中成本更低的洗脾(Shuffle)方式,在mapper和reducer之间建立流通道,提升Spark性能。
-
利用Sponge内存数据存储和接近实时的处理能力提升Spark大数据处理性能。
数据分析引擎
软件定义存储
Sponge的集群管理层是和存储层分离的,而存储层是由集群管理层进行管理。在存储层,Sponge采用Kinetic存储技术来实况SDS。
软件定义存储
Sponge SDS做了以下工作:
- 数据存储。Sponge文件系统在持久层实现了和Kinetic接口的集成,数据通过Sponge 文件系统经过TCP/IP网络中以KV的方式存入Kinetic。
-
集群管理。Sponge集群管理负责管理Kinetic Farm,包括加减Kinetic,数据reblance,Kinetic failover。由于Kinetic Farm的管理是和节点是分离的,所Kinetic Farm的扩展性和Sponge节点的扩展也是分离的,增减Kinetic不需要增减Sponge节点。
-
多租户。Sponge文件系统负责多用户管理,为用尸提供Quota管理,备份,Snapshot。
-
Sponge文件系统的其它功能都可以提供给SDS用户,如CDR(持续数据复制),高性能分析等。
-
支持对象存储协议Swift
支持对象存储协议Swift是Sponge后续版本的功能。Sponge在存储层把云存储和大数据存储结合,不需要多余的ETL,存储空间、网络带宽,通过Sponge对象存储存入到Sponge的数据,可以直接用来做各种工作。
Sponge在CNode内部实现Swift接口,数据通过swift存入到Sponge文件系统可以以NFS的方式获取,反之亦然。
由以上介绍可以看到,Sponge是一套简单多层的系统,同时提供丰富的功能和扩展性,并兼容现有的技术,李东在答记者问的时候明确表示,Sponge的各个组件是松耦合的,也就是说,这些功能可以有单独提供的可能性,以满足用户的个性化需求。
根据海绵数据的介绍,Sponge对部署环境没有特别的需求,而Masterless的集群拓扑结构还使得它需要的节点数据更少,这意味着更少的投资门槛。Sponge还可以与当前热门的容器技术及虚拟机技术配合使用,支持两种方式:Sponge可以部署在容器或虚拟机里,同时SpongeFS也可以被容器或虚拟机所使用。
此外,Sponge不需要另起炉灶推出一套自己的编程框架,这样的好处是开发人员不需要再掌握另外的编程技术。
战略&生态
海绵数据对自身的定位是一个技术驱动的公司,只专注于大数据操作系统,上层的开发有合作伙伴来提供。未来,Sponge还会支持和更多公有云的集成。
海绵数据强调了Sponge的路线:开放,但不开源。朱晓明表示,开源是技术而不是产品,开源社区的规范管理旨在推动技术发展而不是技术产品化,但企业真正需要的是产品。所以,Sponge会开放API提供给二次开发者,让他们做各类行业的数据挖掘、数据分析等应用。朱晓明表示,在智慧城市、智慧金融、物联网、智能穿戴等应用场景,都有Sponge的用武之地。
朱晓明介绍,Sponge在美国和中国市场都已经有用户试用。一家美国硬盘巨头已经在生产环境中测试Sponge;而中国某大型视频监控企业,使用Hadoop一年多仍然存在很多问题没有解决,反而试用Sponge系统获得了超乎想象的性能和吞吐量。
中国和美国两大大数据市场都是海绵数据的目标,不过,海绵数据已经注销了美国公司,未来将以中国的大数据市场为业务重心。当然,从今年下半年年底到明年年初,海绵数据也会布局美国的市场。而在中国的技术推广和生态建设,海绵数据已经开始高校的免费试用,产业联盟/产业基地会是未来的一个重点。
补充问题:文件系统是Sponge的一项核心技术,是否可以把SpongeFS和分布式内存文件系统做一下Tachyon比较?
李东:Tachyon和Sponge都提供了一个In-Memory的分布式存储系统,这一点是类似的。二者主要的三个不同点如下:
- Tachyon 是Hadoop compatible的,Sponge不但是Hadoop compatible的,而且是POSIX compatible的。意思是说用户可以把Sponge的文件系统mount到本地,像local文件系统一样使用。但是如果用户要access在Tachyon里面的数据,则需要使用Tachyon提供的API或者特殊CLI指令,很不方便。
-
Tachyon往往无法独立使用,因为它没有自己的persist文件系统,需要plug-in第三方文件系统比如HDFS,这样用户又要多管理一个系统。而Sponge的分布式内存系统和分布式persist系统是紧密结合的一个整体。
-
Tachyon的HA(High availability)需要Zookeeper的支持,这意味着用户又要多安装和管理一个Zookeeper集群,管理成本和出错可能性也随之增加。而Sponge的HA是本身就提供的,不需要任何第三方软硬件支持。
Tachyon可能的一个优点是对于Spark的RDD off-heap存储的支持。我们也考虑过提供同样的接口给Spark使用,让Spark把Sponge当做Tachyon一样来用。 目前我们暂时没有把提供这个任务作为重点,主要原因是,Spark目前对于Tachyon off-heap的存储还在实验阶段,并且不是对所有 workload都有performance提高。 |