近年来,大数据得到了学术界、产业界和政府的广泛关注。信息技术的迅猛发展,使得大数据的获取、传输、存储和分析成为可能,从中挖掘数据的价值,在促进科学发现、工程优化、商业风险控制、决策支持等领域取得了广泛的应用。
如何对大数据进行高效的存储和处理,是对计算机系统提出的重大挑战。正如维基百科对大数据的定义所描述的:“大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。”这里所说常规软件系统,指电子表格、传统关系型数据库等,无法有效管理和处理大数据系统。因而,大数据处理系统的研制非常重要,也是近年来学术界和工业界的研究热点。
谷歌在2003~2004年发表的GFS分布式文件系统(Google File System)和MapReduce编程框架,是大数据处理系统的先驱性工作。GFS通过多个数据备份的方法既提供了磁盘或服务器故障情况下的数据可用性,也提高了数据读取时的I/O带宽,为大数据分析提供了基础性的数据管理功能。MapReduce程序可以在分布式系统上运行,并能够实现自动容错和负载平衡,使得在故障率较高的大规模商用服务器集群上进行大规模数据处理的编程和运行维护大大简化。
尽管GFS和MapReduce系统在大数据处理方面取得了重要进展,但它们都是谷歌的专有系统,外界无法直接使用。开源社区研制了Hadoop系统,其核心包括了类似GFS的分布式文件系统HDFS、用Java实现的MapReduce框架、以及资源管理和任务调度器YARN等。以Hadoop核心系统为基础,Hadoop还有一些功能扩展组件,如支持大表数据的HBase、支持工作流的Tez、以及机器学习和数据挖掘算法库Mahout等。事实上,目前Hadoop已经成为大数据处理的标准。
尽管MapReduce取得了很大的成功,但人们也发现其处理模式需要对中间结果进行大量的I/O读写,这大大影响了处理性能,限制了其进一步的推广应用。为了解决这个问题,美国加州大学伯克利分校的艾恩·斯托伊卡(Ion Stoica)等提出了Spark系统,通过在内存中保存中间结果的方式来优化性能,在典型应用上可以比MapReduce系统快一个数量级。目前Spark也已经集成到Hadoop系统中,成为一个重要的扩展部件,并得到广泛应用。
然而,Spark系统自身也存在严重的局限性。为了能够容错,Spark采用了名为弹性分布式数据集(Resilient Distributed Datasets, RDD)的数据模型。Spark的计算是由数据集的变换来完成的,数据集一经创建,就不能修改,只能通过变换产生新的数据集。这种数据模型虽然对容错带来了很大的便利,但在很多大数据分析任务中会带来内存占用的巨大浪费和性能的显著下降。在实现层面,Spark基于Java虚拟机(JVM),数据表示非常不紧凑,垃圾回收对性能也会产生不可预测的巨大影响。
综上所述,大数据处理系统取得了很好的进展,并已在很多领域获得了应用,但在性能、内存占用等方面仍然存在不少亟待解决的问题。另一方面,大数据的需求和应用也呈现多样化的特点。
1.数据的种类持续增加,例如图状数据在社交网络、金融交易网络等方面具有很强的表达性,而树状数据(也称文档数据)在Web Service、物联网等领域可以表达嵌套的数据结构,对这些数据类型的高效支持是大数据处理系统面临的挑战。目前出现了一些专用的图状和树状数据管理的计算系统,如图数据库Neo4j、图计算系统Pregel和GraphLab、基于Spark扩展的图计算系统GraphX,以及文档数据库MongoDB等。
2.数据处理模式的多样化,对数据进行实时处理的流处理模式在金融风险控制、舆情监控、精准广告等领域有很强的需求,现有的流数据系统包括Storm、Heron以及基于Spark的SparkStream等。
3.机器学习成为大数据的重要应用领域,如何在分布式环境下高效完成基于大规模数据的机器学习训练,对数据与模型的共享、通信等机制,以及系统与机器学习算法的配合方面提出了新的需求,参数服务器(Parameter Server)是这方面的代表性系统。
本次专题,针对上述大数据领域需求和应用的变化,邀请了国内该领域的专家开展了研讨。
由百度公司、北京大学王晓阳等人撰写的文章《统一批处理和流式计算框架》,介绍了如何在一个系统中同时支持大数据的批处理和流处理模型,从而降低用户在两个计算引擎中分别编写代码带来的软件维护、数据结果合并等的复杂性和时间、空间开销。
由清华大学朱晓伟等人撰写的文章《Gemini:以计算为中心的分布式图计算系统》,对图计算系统进行了综述与回顾,认为现有图计算系统在系统设计上过于注重通信量的减少,忽视了对计算的优化,使得整体性能较差。文章介绍了以计算优化为中心的设计理念及基于该理念实现的图计算系统Gemini。
由中科院计算所陈世敏撰写的文章《树状大数据管理系统Steed》,介绍了数状数据的重要性以及已有数状数据管理系统的不足,并介绍了自行设计的树状大数据管理系统Steed,通过存储结构、语法树自动构建以及基于简单路径的优化等技术,显著提高了数状数据的管理性能。
由北京大学崔斌等人撰写的文章《ANGEL:一个新型的分布式机器学习系统》,讨论了基于大数据的机器学习系统,指出现有系统在共享参数的高效更新和同步操作、生产环境中异构信息的处理、数据稀疏性或分布式支持等方面存在缺陷,因此开发了一个新型的分布式机器学习系统——Angel。它采用混合并行的方式加速蒙特卡罗随机抽样方法的收敛速度,并通过感知真实环境中的异构信息来提升分布式随机梯度下降算法的收敛速度。
由中科院计算所程学旗等人撰写的文章《BDA:一种开放的大数据分析引擎》,认为现有单一系统很难对实际大数据应用时需要的预处理、分析挖掘、知识推断、决策研判、可视化交互、领域应用等冗长的分析链路提供高效支持。因此,他们研制了一套新型的大数据分析系统软件栈BDA,既要打通各类复杂分析任务链路,又能给用户提供简单易用的使用模式和交互方法。
我国在系统软件领域长期处于弱势,从操作系统、编译器到最近出现的大数据管理与处理系统以及区块链系统等,真正由我国自主研制、维护并广泛应用的产品凤毛麟角,与我国经济发展水平和计算机领域的学术水平是非常不相称的。可喜的是,我国在大数据系统方面产生了一批有特色的工作。本期邀请的五篇文章中,有两篇来自互联网公司与学术界的合作,这些系统都已在相关公司得到了应用。另外的系统也在性能、可用性等方面较现有技术有了实质性的进展。希望通过本期专题的讨论,在以大数据处理系统为代表的新型系统软件领域,促进工业界与学术界的进一步交流讨论,启发更多的领先研究、系统构建和实际应用。■
所有评论仅代表网友意见