图的国内外发展
在计算机领域,图(Graph)是一种数据结构,由结点的有穷集合V(vertex)和边的集合E(edge)组成。在图中,最基本的单元是顶点(vertex),顶点之间的关联关系被称为边(edge)。
图大概是在上世纪5、60年代就已经存在了,当时有一些经典的算法,比如最短路径算法,生成树算法。到了2009年前后,Google发表了一篇论文,内容是关于Google开发了一个系统用于解决大规模图计算的问题,而之后,图开始进入到企业的视野中。当时,Google将图应用在PageRank网页排序方面,由于Google搜索引擎中的网页有很多,用户在搜索时页面排序的前后顺序,就应用了PageRank算法。每个网页是图中的一个顶点,如果有一个链接指向另一个网页,那么这两个网页之间有形成一条边,通过网页之间的互相指向,从而构成一张巨大的图。然后基于图进行分析,给每个网页赋予一个Rank值,Rank值较高的网页,则是相对比较重要以及权威的,因此在用户搜索的时候就会排在前面。
而在国内,图的发展相对较晚,基本集中在学术界,例如清华、华中、上海交大、中科院等高等院校均有团队或项目组进行相关研究。而像阿里、百度、腾讯等互联网头部公司也已经在开展图数据的相关应用。
图这样的结构,和人工智能领域中的知识图谱结构很像,费马科技CEO洪春涛解释说,知识图谱是图的一种应用,通过图这样的数据结构组成知识图谱。谷歌提出来的知识图谱Knowledge Graph是一种特殊的图,每一个属性都会抽象为一个顶点,每个顶点是没有属性。但是有时可以将该属性作为顶点的属性存在,而不需要单独抽象为顶点,这就是Property Graph属性图。例如在搜索某个人物时,他的年龄、身高等就可以作为这个人物的属性。
相比传统的关系型数据,图的逻辑可以很好的解决目前遇到的关联数据分析问题,如绘制用户社交关系图谱做社交影响力排名、好友推荐;通过绘制资金交易图谱做大数据征信、反欺诈等应用;构建设备关系网络图谱实现物联网建模分析、供电网络建模分析等等。
图数据系统的相关代表
目前业界主流的图计算系统和图数据库有GraphX、PowerGraph、Neo4j和Titan,而各个系统都是由利弊的。
GraphX是大家用到最多的图计算产品,是基于Spark的软件系统,而Spark的设计是为了满足通用计算的场景,对于图计算的支持并不是很好。因此,在此之上搭建支持图计算的系统,性能就会大打折扣。洪春涛介绍说,GraphX将所有顶点的数据视为一个不可更改的整体(RDD),如果需要修改其中某些顶点的数据,需要将数据整体拷贝,然后进行修改。这样做的优点是,如果新生成数据的过程中出现机器宕机,那么原始数据还是存在的,还可以从新再运行。但是图计算是需要迭代很多次的,例如前文所述的PageRank就需要运行20-30轮,如果采用GraphX运行,那么每轮迭代都需要增加新的拷贝,***内存就要膨胀几十倍。因此,GraphX的计算能力就会受限,基本无法实现百亿级别的顶点运行。由于GraphX发展比较早,它的设计基本能满足当时的数据量,但随着时间迭代,GraphX的支持能力受限问题就暴露出来了。
PowerGraph也是图计算的系统,用C++来编写的,支持的数据量和性能是GraphX的10倍左右。
图数据库中做的最早的算是Neo4j,发展有十余年了。但是Neo4j主要针对的应用是中等规模的数据,大概量级在一亿顶点左右,因此,面对如今互联网的海量数据,也就显得力不从心。
而国内的BAT,基本上都是基于开源的Titan图数据库进行修改,来满足企业自身的业务需求。Titan可以支持很大的数据量,底层是基于分布式Key Value Store,但是查询速度相对较慢,因此,Titan只能进行简单的查询。
编程语言对于图计算的影响
此外,编程语言对于图数据的计算性能也是有影响的。目前业界主流的图计算开发语言是Java和C++。Java相较于C++是个更高级的语言,编程简单并且不容易出错,但是在图计算领域,使用Java开发的系统却比C++研发的性能有一定的差别。
首先,在底层会有一个Java虚拟机,所有的操作都会经过虚拟机的转译才能进行执行,因此在操作上就会受限,使用Java编写的系统就会多转好几层,影响了执行效率。而C++程序编译完后是二进制代码,编写完成后即可在计算机上直接运行。
其次,Java虚拟机中有一个叫做垃圾回收的机制,当系统内存使用特别频繁的时候就会造成问题,系统会频繁的去进行垃圾回收,从而造成软件性能低下;而在C++中,程序员需要自己管理内存,这虽然对程序员要求较高,却能***的保证软件效率。
第三,是系统调用的问题。C++可以直接通过操作系统调用来修改系统配置,而Java则需要通过Java虚拟机,如果Java虚拟机不提供这个功能,那么Java程序就无法调用该功能。举例说,在图数据库从外存中读取数据时,有时需要利用操作系统的MMAP(将一个文件或者其它对象映射进内存)功能,而操作系统会默认进行预读取,即当系统读取一块数据时,他会默认把后面的数据也预先读取出来放进内存。但是,数据库中的数据是随机访问的,预读取功能会造成大量的资源浪费。Java中是无法关闭系统调用的功能,而C++就可以直接通过系统调用来更改这一设置。
费马科技的多方面优化
由于图是一个高维的数据,不像是二维数据,相对比较规整,因此,图数据在存储和计算的难度也会相对增大。对于传统的规整数据,计算机可以通过软件系统高效实现数据的存储和分析,而图的不规整性导致硬件性能很难发挥。例如用GraphX运行图数据时,基本上占用的内存是原始数据的几十倍,因此,很多机器都运行不起来。另外就是性能问题,即使机器可以运行,效率也非常低,这对业务来说是不可接受的。
北京费马科技有限公司成立于2016年,由多名毕业于清华大学的博士在清华教授的支持下联合组建,是一家专注于图数据技术,为企业提供高性能图数据存储及分析平台的国家高新技术企业。费马图数据平台是费马自主研发的高效大规模图计算平台,主要有两部分构成,包括图分析平台PandaGraph和大规模图数据库LightGraph。PandaGraph图分析平台用于对图数据进行高效的分析,LightGraph图数据库则用于存储和查询图数据。用户可以直接调取PandaGraph对存储于LightGraph中的图数据进行快速分析,并将结果存储于LightGraph中以供后续查询。
费马科技的产品研发全部都是自主研发,而不是使用开源的产品架构,洪春涛坦言,一是开源的产品基础还不够完善,受限制比较多,因此很容易看到天花板,就像是老楼改造,而我们从头开始,相当于建造一个新的大楼,可以从底层到上层全部优化。
从架构层到功能层,费马图数据平台进行了层层优化。在架构层,费马团队选择了更适合底层数据交互的C++语言,而不是主流的Java语言,虽然编写的复杂度高一些,但在应用时能够更灵活。
在存储方面,费马支持多版本并发,将读写操作分开,写操作不影响读操作的性能,不会因为频繁的读写而降低性能;支持事务内并行,多个线程可以在同一快照上执行操作,从而加速长事务分布式处理;采用无锁数据结构,数据读取操作不需要任何锁操作,带来极高的吞吐率;前缀压缩,将相关数据存储在连续的空间中,从而提高遍历操作的效率,减少重复检索操作等等。
在分析方面,费马支持分布式扩展,能够线性扩展到分布式环境,正如闪电一样延伸再延伸;双模式驱动,图数据访问支持推送和拉取两种模式,并在运行中自动选择更优的模式,提高数据访问效率;采用连续数据块划分,在数据划分时,利用真实数据内在的关联性,将有关联的数据划分在一起,高质量的划分方法在分析时大有裨益;细粒度调度,将图数据任务动态映射到设备的CPU、核、线程等多个层级,满负荷利用计算资源。
费马图数据的产品逻辑在数据底层,为存储和分析大规模图数据提供强有力的支持,但是团队在客户实践中经常会帮助客户额外做场景/算法方面的优化。以京东金融为例,京东金融提供“白条”服务,白条的额度取决于用户的风险值,除了常规的数据,参考同一地址等相似信息,通过图数据技术很容易将有关系的用户关联起来,并参考联系人的风险系数计算该用户的风险值。费马科技帮助京东金融实现多账号间的关联关系分析,全量数据处理仅需占用1台服务器资源在10分钟内即可完成,而对比此前基于GraphX需要上百台设备运算6个小时以上的情况,不止性能提升1000倍,同时降低金融风险,给京东金融带来惊喜。
目前,市面上没有一家公司是同时提供图数据库和图计算的,而费马科技的提供的图数据库和图计算产品,可以相互协作,解决存储问题的同时也可以提高分析的效率。当然,作为一家创业不到三年的公司,费马科技的产品也不是全无短板。洪春涛坦诚的说,费马科技目前***的短板就是易用性。对于遇到过的场景,可以进行性能优化,但是很多应用场景都没有遇到过,也就很难找到方法提升性能。因此,还是需要长时间的经验积累。
费马科技的核心竞争力:人
在谈到费马科技***的竞争优势时,洪春涛认为,费马科技的核心竞争力就是人,聚集高水平的程序员,并且长时间的投入到图数据领域中,才会开发出真正高水平的系统软件。的确,从费马科技的组成成员中我们就可以看出,这支初创团队的实力。
费马科技CEO洪春涛,毕业于清华大学计算机系。早在十年之前,他攻读博士期间就编写了世界上***个开源分布式C++图计算系统。毕业后在微软亚洲研究院的6年间,他带领团队主导设计了微软下一代大数据系统平台和分布式机器学习平台,协助Bing搜索团队实现早期原型设计。
费马科技CEO洪春涛
费马科技CTO朱晓伟,保送清华进行硕博连读、***奖学金、西贝尔学者、被国际***期刊重点关注、斩获AMC一等奖等众多科技奖项的学者,其主导的Gemini平台为当前业界最快的图计算软件。
费马科技联合创始人林恒,也是清华大学计算机系博士,是“神威·太湖之光”Graph500作者。林恒博士主导该系统Graph500评选并获得世界排名第二,填补了国产高性能系统在图数据分析领域奖项的空白。
费马科技联合创始人李恺威博士,是GPU加速、机器学习领域专家,也是团队的另一位西贝尔学者、奥赛金牌获得者,曾率队连获世界三大超级计算机比赛(ASC、SC、ISC)的总冠军,在清华计算机系素有“小神童”之称。
聪明的人聚集在一起,自然效率也是出奇的高。费马科技图数据平台的系统重构仅用了三个月的时间,还是在洪春涛博士的严格要求下所用的时间。值得一提的是,这只聪明的团队是由清华大学陈文光教授带领,陈老师敏锐的捕捉到了图数据的大有可为器,于是在陈老师的提议下,一众学霸们纷纷响应,于是有了今天的费马科技。
未来发展
费马科技于2016年成立,先后完成了天使轮、A轮两轮融资,对于未来发展,洪春涛也是有着详细的规划。短期目标是将图计算、图数据库的产品进行优化改进,并且在2-3年内推动行业对图数据的认知,当用户遇到相关问题的时候可以选择像费马科技这样的供应商来解决问题。而长期目标是希望用户不仅知道图数据,还可以将图数据应用的更好,而费马科技则希望可以成为一家Oracle级别的软件公司。
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】