从技术上解读:大数据的应用现状和开源未来

栏目:百货 来源:雕塑家网 时间:2019-07-28

小贴士

本期全是干货,喜欢大数据技术的小伙伴儿们赶紧看过来。

以您领先的战略眼光,独具慧眼、善于联想才能发现其潜在的商业价值

摘要:近年来,随着大数据系统的快速发展,各式各样的开源基准测试集被开发出来,以评测和分析大数据系统并促进其技术改进。然而,迄今为止,还没有就这些基准测试集进行系统调研。因此,本文对当前最前沿的开源大数据基准测试集进行全面总结,阐述其历史、现状并展望下一步研究方向。

首先,我们从大数据系统的角度对大数据基准测试集进行了定义和分类。

随后,我们回顾了基准测试技术的三个重要方面——工作负载生成技术、输入数据生成技术和系统评估指标。

最后,论文从这三个方面对现有基准测试集进行归类,并重点描述其中具有代表性的测试集,进而讨论未来研究方向,以推动该领域工作的持续发展。



1、介绍



近年来,大数据在应用领域获得了广泛和毋庸置疑的成功,这些领域包括互联网服务(如搜索引擎、社交网络和电子商务)、多媒体(如视频、照片和音乐流)以及科学研究(如生物信息学、天文学和高能物理)等。在大数据时代,不断增长的数据量、快速处理数据(数据速度)的需求以及数据类型、结构和来源的多样性给我们带来了全新的挑战,传统的数据管理系统已经捉襟见肘。高效数据存储和处理的需求促使多种新的大数据系统被开发出来,这些系统通常被分为三个阵营,如图1所示:

(1)Hadoop相关系统 (涵盖高级语言和结构化查询语言(SQL))已成为多数大数据应用的实际解决方案;

(2)数据库管理系统(DBMSs)和NoSQL数据库在线上事务及分析中被广泛使用;

(3)在大数据领域,人们对于图数据、流数据和复杂科学数据的特殊处理需要产生了对专用系统的需求。

图1. 大数据系统分类与总述

在此背景下,对大数据系统进行基准测试已经成为许多领域研究开发工作的最重要驱动力之一,这些领域包括数据管理系统、硬件架构、操作系统和编程系统。首先,它有助于评估现有大数据系统的进展,从而推动其工程开发并且指导其性能提高。其次,它有助于评估新兴大数据应用的需求,从而促进大数据技术的进步。尽管大数据系统的基准评测已经吸引了学术界和产业界人士的广泛关注,但是到目前为止还没有对当今最先进的大数据基准测试集展开的全面评估。因此,基于作者自身积累的经验(创建BigDataBench项目以及召开多届大数据基准、性能优化和新兴硬件的国际研讨会(BPOE)),本文试图尽填补这一空白。该调查总结归纳了当前流行的开源基准测试集。图2显示了这些基准测试集的词云图,其中词的大小和流行度成比例。

图2. 开源大数据基准的标签云


表1. 最新开源大数据基准测试集总览表


本文第1章,首先提供了大数据基准测试集的概述和分类,如表1所示。

第2章详细介绍理解大数据系统和基准测试的必要概念

第3章节,我们将就三个重要方面(工作负载生成技术、输入数据生成技术和系统度量指标)对现有大数据基准测试集进行回顾。同时,我们将分别根据基准测试集在这三个方面的不同分为不同的类别,并描述每一类别中具有代表性的基准测试集。首先,对于一个基准测试研究来说,工作负载中的操作实现了大多数应用的数据处理逻辑。因此相关的、可移植的和可伸缩的工作负载的生成,决定了基准测试集的代表性和可用性。鉴于此,第3章将从两个互补的方面来回顾现有基准测试集的工作负载生成技术:工作负载实现技术和运行时负载执行模式。其次,数据量大、产生速度快和数据种类多是大数据最重要的特性,因而产生具有3V特性的工作负载输入数据的同时保证数据的真实性和可靠性是大数据基准测试集成功的先决条件。

第4章,通过把现有的输入数据生成技术分为四类:现有数据集、基于指定分布的数据集生成器、基于真实数据的数据集生成器以及混合数据集生成器。

第5章,总结了评估系统性能、价格和能耗的指标,并介绍了未来大数据基准测试中应该考虑的性能参数。


我们注意到,除了以上三个方面之外,关于大数据系统的基准测试还有其他重要的方面,包括大数据基准测试集的设计和实现方法;如何对基准测试集进行更新和扩展以及它们如何用于对大数据系统和应用的性能分析。所有这些方面都超出了本文的范围,我们推荐了一些最近的参考书目以便读者进一步阅读:面向Hadoop的基准测试集、数据库基准测试集和专用图处理系统的基准测试集;还有一些主流的基准测试集,如Yahoo! Cloud Serving Benchmark(YCSB)、BigBench、HiBench、CloudSuite 和BigDataBench 。


2、大数据基准测试集概述


在本节中,在2.1节中介绍大数据基准测试集的类别。在2.2节、2.3节和2.4节中分别介绍Hadoop 相关系统、数据库和专用系统的基准测试集的发展。


2.1 大数据基准测试集分类

现有基准测试集通常可以根据基准测试范围分为三类:

  • 微基准测试集。这类基准测试集被用于评估单个系统组件或特定系统行为(或代码的功能)。首先,系统组件既包括CPU或网络设备之类的硬件,又包括Hadoop分布式文件系统(HDFS)之类的软件,如NNBench和TestDFSIO用于测试HDFS中的NameNode和网络组件的性能。其次,Hadoop中特定系统行为的例子是grep和sort。

  • 端到端基准测试集。这类基准测试集的目的是使用典型应用场景评估整个系统,每个场景都对应一个工作负载的集合。例如,TPC-E-58提供一组线上事务处理(OLTP)查询,以模拟交易和客户帐户管理等事务。


基准测试集套件是不同的微基准测试集或端到端基准测试集的组合,这些套件的目标是提供全面的基准测试解决方案。例如,HcBench和MRBS等基准测试套件提供了Hadoop相关系统的工作负载,HiBench、CloudSuite和BigDataBench则提供了多种大数据系统的工作负载。在接下来的小节中,我们将分别介绍大数据系统的三大阵营以及为它们设计的基准测试集。

图3. 大数据基准测试集发布时间轴

图3展示了大数据基准测试集十年来的发展,并根据所评估的系统将它们分为四组:

(1)从2006年Hadoop发布开始,Hadoop相关系统的各种基准测试集被开发出来;

(2) 自2009年以来,继承自TPC的为数据库开发的基准测试集不断发展;

(3)专用系统的基准测试是一个不成熟却快速发展的领域,因此相关基准测试集从2013年才开始出现;

(4) 大数据系统的三大阵营均可用HiBench、CloudSuite和BigDataBench进行基准测试。


表1总结了这些基准测试集,并根据它们的发布日期把相同类型的按升序排列。注意,大数据基准测试是一个活跃的研究领域,许多基准测试集在最初发布之后仍在发展(特别是HiBench、CloudSuite和BigDataBench),因此本文将重点讨论它们的最新版本。


2.2 Hadoop相关系统


2.2.1 系统


Hadoop的HDFS和MapReduce。受Google文件系统(GFS)和Google MapReduce的启发,开源社区开发了Hadoop HDFS和MapReduce。随着以Hadoop为中心的系统在工业界取得了巨大的成功,各种各样在Hadoop上开发的系统出现了,我们将讨论其中两类主要的系统——高级语言和SQL。注意,尽管还有其他的大数据系统作为Hadoop的替代品,比如Apache Flink,但这一小节将重点讨论Hadoop相关系统。这是因为很多为Hadoop开发的基准测试集也可以用于测试那些替代品。


Hadoop的高级语言,此类系统开发有两个目标。


第一个目标是简化Hadoop MapReduce作业的开发并自动优化它们的执行,从而使开发人员能够专注于编程逻辑。例如,来自yahoo!的Pig提供一种称为Pig Latin的文本语言,用于描述诸如连接、排序、过滤和用户自定义操作等数据操作符。通过使用Pig Latin,复杂的任务可以转换为一个或多个可在Apache Pig上执行的MapReduce任务。Apache Tez 和Twill的开发都有类似目的。


第二个目标是为了满足不断增长的实时数据提取的需求。传统上,Hadoop MapReduce提供的批处理通常需要几分钟或几个小时才能完成。因此,在Hadoop中添加高级语言的目的是支持实时数据处理。例如,加州大学伯克利分校的AMPLab建议Spark。


通过内存计算来加速Hadoop的数据处理。Spark为不同的应用提供了一个简单易用的编程接口,同时使用RDD来为内存中的计算范式提供高效的容错处理。


Hadoop的SQL。为了解决实时查询数据的问题,此类系统将SQL接口添加到Hadoop中。比如,受Google BigTable的启发,Apache HBase 5是在HDFS上建立的基于列的分布式数据库。在HBase中,表被用作Hadoop MapReduce作业的输入和输出。类似地,Hive是由Facebook开发的一个流行的数据仓库,它提供了一种名为HiveQL的类似SQL的语言,用于支持Hadoop上的交互式SQL查询。这一类别的其他系统包括Apache Tajo(一个关系数据仓库)、Apache Tajo(一个并行的数据库)和Spark SQL(支持关系处理的Spark的一个组件,Shark是它的之前的版本)。


2.2.2 基准测试集


在Hadoop的发布中,有几个内置的微基准测试集(即 WordCount、Grep 、Sort和TeraSort),它们是目前最常用的MapReduce基准测试集。通过引入性价比和能源消耗指标,TPCx-HS对TeraSort进行了扩展。Hadoop发行版的更高版本进一步提供了几个基准测试集来测试其组件,包括HDFS(基准测试集是TestDFSIO、DFSCIOTest和NNBench)和进程间通信(基准测试集是ThreadedMapBench)。HiBD (High-performance BigData)也测试了Hadoop网络组件的性能。此外,HiBench和PUMA是两组微基准测试集,它们应用在不同计算需求和不同数据传输量的领域。


GridMixMap和SWIM(Statistical Workload Injector for MapReduce)是两种流行的端到端基准测试集,它使用混合的合成工作负载来评估Hadoop集群。MRBench将TPC-H查询转换为MapReduce作业。PigMix是用来测试Pig的数据处理性能和可伸缩性的。


许多基准测试套件支持多个大数据系统。HcBench和MRBS是用来评估Hadoop的MapReduce和Hive的。CloudSuite提供了流行的、可扩展的工作负载,以评估在云架构中部署的Hadoop MapReduce和NoSQL数据库。BigDataBench全面覆盖了Hadoop相关系统(包括Spark、Hive、Spark和Impala在内)的工作负载。


2.3 数据库

2.3.1 系统


数据库管理系统。几十年来,并行的DBMSs被用作管理大规模数据的主要解决方案。除了传统的关系型DBMSs(如MySQL 36和Oracle 41),在遵循原子性、一致性、隔离性、持久性属性的基础上(ACID),最近人们还提出了处理大数据的新型数据库。这些数据库(如Megastore、Mesa和Spanner)旨在提供数据库的高可伸缩性,同时为用户提供方便的基于SQL的查询语言。此外,NewSQL数据库(例如HStore)是另一种为高吞吐量的在线OLTP而设计的关系型数据库,但它仍然保持ACID属性。


NoSQL数据库。然而,许多大数据应用并不需要严格的ACID约束,比起一致性和可靠性,它们更注重低延迟、高吞吐量这样的性能。在遵循了基本的可用性、软状态、最终基本的一致性后,种类繁多的NoSQL数据存储遵守如下要求:基本可用性、软状态(软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性)、最终一致性。对于大数据的处理,三种常用的NoSQL数据库分别为Key/Value数据库(如Amazon Dynamo、Cassandra和Linkedin Voldemort)、基于列的数据库(如BigTable 和Hypertable)和基于文档的存储(如CouchDB和MongoDB)。


2.3.2 基准测试集


在过去的几十年里,TPC基准测试集是评估DBMSs的实际标准。在13个TPC基准测试集中,6个活跃的基准测试集是:针对线上事务处理数据库(OLTP Database)的TPC-C和TPCE,针对决策支持系统(DSSs)的TPC-H、TPC-DS和TPC-DI,而TPCVMS则将来自上述基准测试集的工作负载混合在一起来评估虚拟化系统。这些基准测试集仍是DBMSs大数据基准测试解决方案的一般选择。此外,最近人们还开发了一些基准测试集来比较DBMSs和MapReduce系统。CALDA提供基于Hadoop的分析工作负载,将Hadoop与基于行的DBMS(DBMS-x)和基于列的DBMS(Vertica)进行比较。AMPLab基准测试集使用CALDA的工作负载比较了几个数据分析系统,包括Apache Tez、一个NoSQL数据库(Amazon Redshit)以及Hadoop上的三个SQL系统(Hive, Shark, and Impala)。由TPC-DS发展而来的BigBench提供了在线服务工作负载和离线分析工作负载,可以用来比较Hadoop和Teradata DBMS。


近年来,NoSQL数据库的涌现引发了对新基准测试集的需求。YCSB是一个流行的基准测试集,它提供了云在线服务工作负载(也就是在线事务处理操作的混合)。它可以用来比较两个非关系数据库(Cassandra和HBase)和一个异地分布式数据库(PNUTS)以及一个传统的关系数据库(MySQL)。YCSB+扩展了YCSB以评估NoSQL数据库的高级特性(如提取加速技术)。BG提供了用于仿真社交网络操作的工作负载,这个基准测试集可以用来比较DBMSs(如SQL-X和CASQL)和NoSQL(如MongoDB)。


2.4 专用系统

在学术界、工业界和管理界中越来越多地使用图数据、流数据和科学数据,这促使了许多专用系统的产生。与通用的大数据系统相比,这些专用系统的设计是为了在执行复杂查询或分析特定数据类型时提供更好的性能。根据系统所支持的数据类型,我们介绍三个主流的专用系统。


2.4.1数据系统


随着数据和网络科学的快速发展,越来越多的信息被连接起来形成了个大图。在一个互联的世界里,图自然地模拟出复杂的数据结构,如社交网络、蛋白质相互作用网络和自然网络。图数据被广泛应用于许多领域,如在线零售、社交应用和生物信息学。为了解决图数据日益增长的规模和复杂性所带来的挑战,两类图系统被人们开发出来:(1) 图数据库,如Neo4j;(2) 分布式图处理系统,如Google Pregel要求程序员根据顶点的操作和交互来编写函数,Giraph和Graphx分别是Pregel在Hadoop和Spark中开源的实现,HaLoop是Hadoop中MapReduce的改进版本,它用于迭代图的数据分析。


基准测试集。人们已经开发了许多图基准测试集来评估图数据库、高性能计算(HPC)系统和超算系统(如Graph 500)。在评估大数据应用时,数据量大和图计算的多样性带来了新的挑战——我们需要新的基准测试集。LinkBench和GraphBIG是针对此类问题面向Facebook社交网络和IBM System G的场景开发的。其他的基准测试集包括Waterloo Graph Benchmark (WGB)、Graphalytics、CloudSuite。此外,BigDataBench也提供了工作负载来比较图数据库、分布式图处理系统和Hadoop相关系统。


2.4.2流数据系统


流式数据处理的巨大的潜在价值与大数据的流处理系统的出现息息相关。在这些系统中,数据不断地到达,并且在短时间内处理。传统的流数据主要来自传感器网络和金融交易。今天,大多数流数据是由Web 2.0应用程序和物联网(IoT)设备生成的文本和媒体数据。因此,在处理大量流数据时,需要更强大的流数据处理来提供高可用性和快速恢复能力。为了应对这一挑战,来自开源社区的流分析系统(如Apache Storm、Spark Streaming和Samza)和来自工业界的流分析系统(如IBM的InfoSphere Streams和TIBCO)已经被提出。


基准测试。开发流基准测试集需要解决几个挑战性问题,其中包括生成具有语义有效性的数据、为连续的查询结果生成正确的答案、设计一个查询语言标准。线性负载是一种用于评估流数据管理系统的过时的流基准测试集,它只能支持数值数据。Stream Bench和HiBench提供了7个微基准测试集来评估Storm、Spark Streaming 和Samza。Streams是最新的一个用来比较IBM InfoSphere Streams和Apache Storm的基准测试集,它的工作负载是模拟在线垃圾邮件检测和电子邮件分类。另外,CloudSuite通过一个媒体流基准测试集来测试Darwin Streaming Server。BigDataBench通过三个交互式工作负载来测试Storm。


2.4.3科学数据系统


现代研究仪器可以产生大量的科学数据,它们的数据量和速度都呈指数级增长。例如,欧洲核子研究组织(CERN)的物理学家和工程师储存了200千万亿字节(PB)的数据,每年产生约15千万亿字节的数据。当前和未来的科学数据基础设施对高效捕获、存储、分析和整合这些海量数据集的需求不断增长,这将刺激许多科学大数据系统的发展,例如,SciDB是一个用于管理PB级科学数据的分析

相关文章
评论
新版评论功能开发中
头条推荐
最新资讯