宋怀明:曙光大数据存储和处理技术

2014年12月2日DOIT编辑北京报道:2014(第十届)中国存储峰会今天在北京召开,大会以“掌控数据经济,重塑商业价值”为主题,诠释在IT走向DT时代下,如何通过数据重塑商业价值。大会共邀请了 16位顶尖第三方嘉宾,数十位专家,带来了35场前瞻性演讲+2场圆桌讨论,并首次推出硅谷创始人访谈和存储夜宴活动!

在当天下午的大数据分论坛上,来自曙光大数据研发经理宋怀明带来他的《曙光大数据存储和处理技术》。

以下是演讲实录:

宋怀明:各位存储界的朋友,大家下午好!下面我给大家汇报一下曙光大数据存储的处理技术。我们知道随着云计算和大数据技术的兴起,系统架构发生巨大的变化。传统的系统架构通常前端是PC,后端是服务器,再后端是数据库,或者文件系统,随着云计算和大数据的兴起,系统架构变成前端是一堆智能终端,包括手机、Pad,或者智能手持设备,中间服务器被云所取代,通过虚拟化技术,把服务器虚拟成公共的存储的计算资源,文件系统换成大数据系统,包括海量的结构化数据和非结构化数据融合的存储。

我们知道大数据发展其实经历了三个阶段,第一个阶段我们把它叫做数据落地的阶段,它实际上解决的是数据的采集和存储的问题。在这个阶段,主要是存储厂商发力的时候,占主导。第二个阶段,随着数据越积越多,采集的数据越积越多,我们要解决怎么对这些数据进行处理,就出现了很多计算的框架,包括Hadoop的框架,包括云计算的框架,它都是解决怎么对这些数据进行计算的问题。实际上是提供一些计算的方法和计算的平台。这个阶段主要是数据处理的平台厂商在主导。第三个阶段,通过第一阶段采集的这些数据,第二的阶段提供这些计算的方法,把这些数据转化为真正应用的价值,实现数据的分析价值的实现,实际上我们把它叫做应用落地。它实际上经历了数据落地、计算落地和应用落地这三个阶段。

曙光在这里面的战略主要依托曙光自己的存储和计算的技术来支撑大数据这一块的应用,与广大的ISV厂商进行合作,实现数据价值,推动应用的落地。曙光大数据的技术分成几块。右边这个小的框是曙光为Hadhoop的发行版,红色部分是曙光自己研发的,灰色是我们兼容开源社区的一些组件,黄色部分是我们对一些开源的组件进行优化。我们可以看到,曙光的Hadhoop发行版最主要是提供了一个建议的Hadhoop的管理软件,另外地下存储,就是曙光应用自研的P200替代了Hadhoop开源的问题。这里面有几个关键的组件我们进行了优化。还有一块就是数据转换器,主要用于简化现有的一些信息系统,这些数据怎样向曙光的Hadhoop发行版里面,做数据迁移用的。这里面除了包括数据的移动,还包括数据的转换,模式这一块的变化。这是曙光Hadhoop发行版所具有的一些特点。

左边还有一块曙光自己的MPP的数据库的中间件,它实际上是基于无共享架构的Hadhoop集群技术,底下可以支持多个相互独立的Oracle数据库,把十台或者八台独立的数据库,通过中间件的技术虚拟承担一的主体,这块做的主要还是面向数据分析的应用。我们把MPV数据库和Hadhoop发行版整合在一起,加上曙光大数据专用存储服务器,称之为一体机。目前支持JAVA和C++,提供一些支撑工具,像ETL,数据的导入、到处,备份这样的工具。另外,由于我们底下采用自己的文件系统,它跟开源社区的HDFS是不一样的。我们可以通过普通的文件系统接口访问底下的数据,另外也支持第三方的一些开源的编程的接口和分析挖掘的工具。这是ParaStor的系统架构,这种并行的架构可以满足高并发的IO的需求。另外,对它的源数据节点是集群方式,可以提升海量的小文件处理能力。另外,条带化的数据方式可以提高很高的单流,基于带宽也可以线性的扩展。

采用ParaStor 200代替HDFS带来主要的性能的提升。主要先在这样几个方面。ParaStor 200采用源数据集群的方式,也由于源数据集群每个都对外提供服务,任何一个源数据节点故障都不会影响系统的性能。第二、数据冗余,提供N+F的技术,可以提高整个系统的存储利用率,相比原生的HDFS系统,它的副本的利用率可以达到80%以上。第三、可以提供多套网络负载均衡,多套网络高可用性,提升数据访问的带宽。在数据处理这一块,我们也做了大量的工作。首先,在数据写入的时候,可以按照数据应用的属性进行划分,可以把舆论某一种特性的数据放到特定的地方,这样可以有效处理数据的性能。因为我们底下支持结构化数据和非结构化数据统一的存储和处理。对于结构化数据这一块,因为我们底下采用分布式,不共享的数据库,比如我是多台Oracle数据库,它是相互独立我们把数据獬入的时候,可以按照一定的属性、特性分到不同的机器上。比如可以按照时间范围进行划分,或者按照区域的特性,或者按照一些其他的号码段等等,根据不同的应用,不同数据的类型目前可以支持Hash、Range、List、Round-Robin等划分方式。有多个分区的数据可以放在相同的节点上,,这个分区叫虚分区,支持规模动态扩展,无须重新计算分区。可以支持用户自定义数据节点的分析。

对于非结构化数据,由于我们底下采用集成文件系统的方式,实际上我们没法在应用这一层控制数据具体写到哪一个节点,我们采用目录的方式做应用级的分区,也是支持Hash、Range、List、Round-Robin方式。只不过我们底下采取目录的划分。

我们采用这种虚分区的方式,其实这个技术也是比较成熟的,我们只是使用了业界这种技术来支持这个节点数据的动态扩展。因为在节点数据扩展的时候,我们不需要对所有数据技术重新的分区计算,只需要把一部分虚分区迁移到新增的节点上,把节点和分区对应的源数据进行区分就可以。

第二部分,对于类似SQL的请求,用户的请求可以是SQL语句,或者MR/UDF作业。我们把计算分成这么几个级别。首先,最小的是算子,可以在单个节点上执行计算的操作。计算的任务是有一个四元组所组成的,包括计算的算子,执行节点的列表,目标节点的列表和数据分析的方法。它是什么意思?这一个计算的算子在执行节点列表上去执行,它的结果以数据分派方法的方式发布到所有节点上,这里数据分派方法包括Hash和Range,Range只是在特殊操作的时候才需要使用。比如后续要进行排序,这种情况下我们把默认的Hash改成Range,然后在每个节点上进行排序,最后结果是需要一个简单的拼接,而不需要整体的排序,每个节点分到的是一个具体的范围。

在查询任务概念之上,有一个整体的查询的任务流,它实际上有一组查询的任务,按照一定的顺序进行组合的一个执行计划的数,我们目前只支持竖行的方式,不支持这种图。它描述的就是多个任务之间的分析以及它之间同步的关系。右边这个图描述的是一个简单的查询作业任务流的示意图,包含五个任务,每个任务又包含在一组节点上执行的算子。我们看到这个图里面,任务一和任务二执行完是需要进行同步,然后进行任务三,然后再进行同步,任务四,最后做一个结果的汇聚,最后得到最终的结果。

在执行控制这一块,实际上是把前面所做的任务流作为它的一个Flex,然后得到最终的结果。对于请求解析,我们采用类SQL的请求,通过包括对语法和词法的分析,分解成一个作业任务流,然后通过执行引擎进行同步控制和数据传输的控制,得到最终的结果,底下的处理是可以根据我们每一个任务它的类型,比如它SQL就是在底下,它是MR的作业,就是在Hadhoop上执行,最终得到计算的结果。这里面也有一些数据处理的优化技术,因为所有的处理结果,目前的这种方式是采用文件进行固化存储,在任务流的每一个分支上,如果出现计算故障,我们可以在这个故障里按照它保存的结果继续执行。中间需要维护一个多个集群上执行的全局的状态。这就避免了如果出现故障,就从头完全执行,整个重来这样的一个操作,可以在断点处进行计算,提高整个计算的效率。特别是在有一些作业计算时间比较长的时间,这个是非常适用的。

对于Hadhoop发行版这一块,我们提供了一个图形化的管理软件,它的提供的是包括三个层面的功能。首先最基本是运维层面,包括监控告警等。还有运行层面,主要包括作业的察看,比如对存储对象的察看,再上面是运用这一层,我们现在做的相对来说比较好,主要是提供应用开发使用,比如一些可视化的东西,一些报表等等,这样的一些知识。

我们对曙光XDATA系统做一个简单的总结,它包括的创新技术主要是这么几个方面。第一、提供类似于SQL的访问终端,可以减小学习的成本。以往的信息系统很多是基于SQL做应用开发,用户或者ISV对数据库非常熟悉,提供SQL的方式,对数据处理的学习成本非常低,基本上可以比较容易的进行新业务的开发。第二、对接口这一块,我们提供JAVA、C++等专用语言的接口,其中C++是直接与后端的服务进行通讯,但是对JAVA我们提供JAVA保准的编程接口。对于以往采用JDBC编程的数据库类的应用是比较容易平滑的迁移过去,只需要进行重新的编译,或者一些兼容性测试就可以上线。第三、数据的统一,底下可以支持分布式的数据库集群的架构,也可以支持HDFS的存储,能够满足结构化数据和非结构化数据的存储和处理这块的需求。第四、我们实现了数据獬入的时候,可以对数据进行系列的划分,这种系列的划分可以在处理的时候快速的定义这些数据,减少单次数据处理里面的IO或者CPU的计算,能够提高数据处理的效率。最后,我们提供软硬一体的优化的技术,底下是采用曙光专用的存储服务器,对于网络还有通讯也做了很多优化,能够充分发挥系统的性能。

刚才说了曙光大数据的相关技术,在这些技术上,我们就把大数据存储和处理产品大概是这么几种。首先,底下这个存储可以单独拿出来作为并行的文件系统,我们产品叫ParaStor 200,是覆盖节点、网络、磁盘等全系统容错技术,提供软硬一体的存储系统。2010年在深圳部署了超过16PB单个的文件系统,目前PB级的文件系统基本上在国内已经是非常多了。

第二、曙光提供的XData的大数据一体机,就是刚才整个大框里包含结构化数据和非结构化数据的存储和处理,提供软硬一体的大数据存储和处理整体的系统。

第三、曙光的Hadhoop发行版,是纯软件的Hadhoop的版本,主要是提供数据Hadhoop系统的管理、运营。Hadhoop的核可以直接采用社区的最新的版本,也可以支持Clud的版本。

最后,曙光大数据的应用,目前曙光是瞄准行业应用,与广大的ISV厂商进行合作,我们也自己做一些大数据应用的开发。因为目前大数据实际上它的应用的需求还没有发展特别明确,所以我们也在通过这个技术的方式帮用户设计它的一些想法。因为用户它实际上有很多时候并不知道技术能够帮它实现成什么样。

这是我们在国内最大的一个媒体单位做的新闻检索和推荐系统。它实际上包含两大块的功能。第一块就是它的新闻的特征,特征分析和它的聚类。第二、它的用户行为的分析。对于第一个底下采用曙光Hadhoop的专业版,底下主要是做的新闻特征的聚类。第二、对用户行为分析,它这里面的用户跟广大电商的用户有一些差别,但是也比较接近。因为它的用户主要是全国的广大媒体,它是要从我们客户那儿购买这些新闻,购买新闻的素材。我们对它的一些浏览技术,还有次数,还有停留时间,还有购买等等做了新闻分析,最后给他们推荐相关的新闻素材,这个系统去年开始建设,今年4月份就已经上线运行了。

这是我们给某个直辖市公安局做的整体的大数据的应用支撑平台。我们承担了里面所有的平台这一块的工作。我们把这个数据的存储分称结构化区域和非结构化区域。结构化区域,采用数据库的架构,非结构化区域,采用后端的Hadhoop发行版,上面通过各加一层数据的汇聚和转化层,把现在大概有20多个系统的数据导入进来,向上面支撑各种各样的应用,曙光在里面就做整个后端数据的存储和汇聚,然后上面是ISV厂商做应用的开发。

这个是我们某安全企业给他做的一个综合的运维的大数据系统,它这个系统的特点就在于,原先的单位内部建了很多运维系统,有大概100多套这样的系统,每个系统有的规模可能几台机器,大的几十台,上百台。原先每一套系统都有一个单独的运维的系统。实际上对于运维的压力也是非常大,因为每个系统需要做的操作,或者运维的这些方式是不太一样的。我们把所有的系统日志,包括操纵系统,还有网络,等等一些设备产生的日志收集过来。第二类日志是中间件的也收集过来,第三个是把应用日志,把这三类日志通过ETL的方式汇聚到系统里面,这里面我们做了一个数据网关,做了内外网的格力,通过数据网关,前端所有应用系统的日志,是不能直接访问到后端的大数据系统,是通过数据网关,这些服务节点才能访问。把所有三类日志收集过来,大概支撑了这么几个应用。一个就是对整个系统的故障进行诊断,因为原先还有一些难点就在于它有些是部署在物理机上,有些部署在虚拟机上,有些物理机可能重叠使用虚拟机,我们把全机升级可以进行故障诊断,第二可以在整个基础上做系统的优化。后面还可以支撑一些用户的行为分析,还有精准推荐,因为它也是向几个口子提供相应的服务。这个也是采用曙光的结构化和非结构化统一存储的大数据一体机的系统。

我的分享就到这里,谢谢大家!