关于大数据这个概念,你一定不陌生了。但是,你知道大数据的“三生三世”吗?你知道大数据圈子里的“百家争鸣”吗...
如果都不清楚,没关系,不妨就跟着HPE资深大数据架构师刘定强先生一起探索吧!
刘定强先生是HPE资深大数据架构师,Vertica全球*专家之一,海数据社区专家委员;具有多个PB级的大型MPP项目实施经验;熟悉国内大型互联网公司如Facebook,Twitter,Uber等大数据平台架构,及Hadoop等生态开源社区;擅于Vertica,Oracle,PostgreSQL/MySQL等技术;拥有丰富的*、通信和金融等行业大型核心应用架构设计和成功经验;
以下为分享内容,(由于分享内容较长我们做了适当删减并分为上下两篇进行发表):
三生三世,大数据的历史发展
从计算机诞生之日起,“大数据”就一直困扰着人们,Vertica的创始人、图灵奖的获得者Michael Stonebraker也不例外,他曾经说过,“我已经在这个领域研究了三十年,但其实我都不知道我到底研究了什么。等市场上开始有人谈到了大数据这个词,然后我才开始意识到原来我研究的就是大数据相关的技术”。
这是一个笑话,但也是一个真实的事情。其实,四五十年代计算机技术开始起步发展的时候,我们处理数据都是以字节、以K字节这样的来去度量。如果我们现在看一下PPT上所示的照片,这个飞机上运的是一个IBM硬盘,五十年代的时候,存5M字节就需要这么大的体积,5M是那个年代的大数据。
真正“大数据”这个词,是09年《自然杂志》提出的,火遍了全球,像麦肯锡、Gartner分别对大数据做了一些相对比较专业的定义,虽然不太一样,但是本质上都在说这样一个现实:我们目前的大数据已经超过了传统技术手段能够处理的范畴。
所以,我们要用新的技术、新的方法去进行处理。
成熟大数据技术的“洪荒之力”
如今,大数据其实已经是很成熟的一个技术了,我们从Gartner的这个成熟曲线来看,在2012年这个时间点的时候BigData这个技术还处于爬坡阶段,到14年的时候已经到达顶峰阶段,15年的时候开始向下走了,于是这时候Gartner索性把这个词从技术热度当中去掉了,原因在于这时候BigData的技术已经是非常成熟了,大家对于BigData适用于什么业务场景的看法已经回归理性,在BigData的实际应用当中存在的风险,大家已经看得足够了,如何更好地运用它,大家也已经有了新的经验。按照Gartner的说法,BigData已经成为我们生活中的一部分了。
从传统意义上讲,我们原来收集完数据,要做数据的处理、整合、统计、分析以及整理出报表,还要做数据挖掘以及训练模型、验证模型来更好地应用这些数据,到了今天我们更是提高到了人工智能这个角度去看。
其实所有的这些技术都是有交叉的,都是在大数据技术的支持之下存在的。
我们对数据的要求,尤其是性能方面的要求,其实重点在于虽然我们有各种各样的数据,每天都有海量数据在不断产生,我们在具体的业务上有很高的要求促使我们去更好地利用这些数据。但是我们最核心的要求是希望大数据提供快速的处理速度,无论是结构化还是半结构化数据能够快速收集起来,并且我们还要深度的分析并且挖掘这些数据。
能够把这些分析的结果实时、准时的分享出来,并且应用到具体的场景上去才能发挥大数据真正的价值。
我们更好地利用好大数据这个武器,也是逃不开这四个方面的:快速收集、海量存储、深度挖掘、实时分析。
大数据分析的关键技术要领
从大数据纯技术层面讲,我们如何才能满足以上提到的这些要求来去支撑我们的应用呢?核心来讲,它和我们传统的数据处理、分析技术不太一样的地方,就在于强调用并行的计算去解决海量数据的高效存储、处理分析这样的要求。
因为到现在,我们的数据量已经增长到不能仅仅靠一个两个的服务器来解决问题了。我们要用到并行处理即MPP大规模并行处理技术,采用分而治之的方法。
我们用几十个、几百个甚至上千个这样的PC服务器组成一个大规模的集群,每个节点都会处理、分析和管理自己的数据,来达到我们大数据处理能力的要求。在很重要的程度上讲,数据的存取能力往往是一个根本的瓶颈,所以我们不仅是用MPP去提高我们的处理能力,更重要是我们要解决I/O的这个瓶颈的问题。
目前最重要的一个办法就是,在数据分析这个角度上,我们把一些传统的按行存储的方式变成按列的方式去存储和计算,这样来降低I/O的开销。
因为一旦把数据按列存储后,我们在分析的时候往往就不需要把所有的维度都再读一遍,这样一来,因为每一次的分析往往专注于某几个维度上,并且数据一旦按列存储之后每一列的特性就会很相像,这样我们就可以去做排序存储以及压缩,进一步降低I/O。
还有一个降低I/O开销的办法就是使用内存计算,使用数据流水线(pipe-line)的方式使它在内存里面流动而不是落到磁盘里头,这样可以大大的降低对I/O的开销,来提升整个大数据分析处理的性能。
大数据生态圈子的“百家争鸣”
大数据发展这么多年来,很多人认为大数据就是Hadoop,Hadoop就是大数据。事实上,通过Gartner之前对业内的调查,我们在大数据相关技术的选择中,相当一部分还是传统的数据仓库,当然也会有云计算、Hadoop这样的一些技术。不过,企业数据仓库还是占相当大的比例。
从2006年 Hadoop诞生开始,Hadoop的核心便是分布式存储—HDFS、并行计算的框架-MapReduce以及Hbase,即便到现在10年过去了,Hadoop的声势更壮大了,但是现在的Hadoop和10年前相比已经有很大的差别了。
但是大家发现使用MapReduce处理数据速度会比较慢,它做的是批量式的数据处理,这时候我们想要做交互式的处理分析就很难,所以由此就衍生出了各种各样的框架替代MapReduce,比如Spark;
有时候,大家也会去怀念关系型数据库的SQL语言、SQL思想带来的便捷性;然后便带来了Hive这样的框架,但是Hive是基于MapReduce的,性能还是很慢的。于是乎又出现了Impala,HAWQ等等这样一些SQL on Hadoop的方案。包括在Spark框架的基础之上,也有一些Spark on SQL的框架诞生出来了,由此可见Hadoop的整体在快速的扩充。
我们在数据处理和分析,尤其是分析上,SQL是描述数据处理逻辑以及分析逻辑非常自然的一个语言或者功能,根源就在于它背后有关系代数这个理论的支持,无论是早期的数据仓库用SQL去做加工、还用BI工具通过SQL去做分析,也无论是固定的分析,还是探索式分析都运用的非常自然。
同样在Hadoop生态当中也是一样。早期没有SQL引擎的时候,大家非常痛苦,需要用Java语言或者其他的Pig、Scala这样的语言去一行一行的写代码,这样的处理逻辑下,你把你的分析逻辑完全地写到你的代码里面去了,那么性能和维护性都会很差:比如这个时代的MapReduce和Hive。
所以在2012年的时候,无论是开源社区还是各个发行版本都不约而同增加了SQL on Hadoop这样的方案,比如TEZ,HAWQ等都在Hive的基础上往前走了很大一步,他们也在Hadoop这个生态里面,借助了MPP数据库的一些理念把SQL引擎做进去。
包括Spark,在Spark2015年发行的版本里面也放进了Spark SQL,原因就是大家还是非常怀念关系代数通过SQL这样的语言给数据处理思路带来的描述。
在大数据时代,传统型的数据库也有了很大的发展。在SQL关系型数据库这样的基础之上,把它所实现的具体技术做了很大的改进,比如说不再使用共享存储而使用分布式的存储,我们用几十个、几百个x86节点组成的集群去做数据的管理、存储。分布式存储可以是共享的也可以是不共享的,不同的产品思路不太一样,那么达到的效果也会不太一样。
除了实现技术细节有很大的变化外,分布式的存储的整个框架结构是非常稳定的,主流的关系数据库基本都是由存储引擎、执行引擎和优化器组成的。
这样架构的好处在于,同样采用了MPP的技术去做并行计算并支撑海量数据的分析和处理,它能提供更强劲的分析能力。同时,采用MPP加列式存储这样的技术等,可以大幅提高性能。更重要的是它延续了40多年来关系数据库的强大优化分析能力。
MPP数据库,能把这些传统数据库的优化能力跟新的MPP并行处理技术(包括列式存储技术)融合到一起,这是它成功的最重要关键因素。
如今无论是商业软件还是开源软件,对于数据量为一个TB以内但很高吞吐量的交易,传统数据做的不错,但是不一定可以满足互联网的要求,所以在去I/O的浪潮下我们可能会引入Cassandra,Mongodb,HBase等这样一些NoSQL的数据库(或者叫数据平台)去做更好的扩展。
在数据分析这个领域,我们有传统的数据仓库,有Oracle,SQL,Server,DB2,TERADATA等产品可以选择。但是在大规模的场景下,比如说上百个TB到PB这个量级的时候,这些传统的数据库可能就无能无力了。对于那些批量且交互性不太高的数据Hadoop,Hive,Spark等都还可以应付;如果有更高的基于SQL的一些分析需求,那么Vertica这样的MPP列式数据库会提供更好的分析性能,并且Vertica可以提供更好的数据处理的时效性。
比如,在通信行业,我们可以对网络的性能做优化;在金融行业,我们可以对交易的风险进行管控,我们希望在秒级甚至秒级以内能够做到这些风险的防范、管控。这些都是我们大数据平台带来的新支撑能力。我们还会引入一些流式处理技术,在数据流动的过程中即可完成对数据的分析及处理。
从现在的企业大数据平台来看,我们不仅要考虑传统的批量数据处理和分析,也要考虑日益增加的准实时甚至实时的数据处理分析能力。
HPE Vertica“技多不压身”
HPE大数据平台,就覆盖在MPP数据库以及跟周边各个环节做连接的组件上。我们拥有和kafka有源生的连接器,通过配置就可以快速地把kafka中topic里的数据纳入到Vertica数据库里面;通过Hadoop连接器,可以快速地把Hadoop的HDFS的数据,各种开放格式的数据,无论是Parquet和ORC,还是Hive里面的表都可以快速地放进MPP数据库里面来。
像非结构化的这些数据,例如视频、音频、文本,我们用IDOL引擎来做数据增强,然后放入我们核心的MPP数据库里面,这样就可以让我们的企业拥有完整全面的一个模型,并更好地支撑业务的预测分析。
下期,我们将继续为您带来刘定强先生关于大数据和MPP高效计算框架的分享。更多实用的干货分享,敬请期待!
HPE Vertica
更灵活的分析引擎,助您快速查询数据
HPE Vertica,适用于包括硬件、虚拟机、云在内的各种运行环境。同时,Vertica易于安装和部署,能满足您的各种业务需要。欢迎您的试用!
号外号外,Vertica China中文网站开!通!啦!