从小数据分析到大数据平台,这十几年来大数据开源技术是如何演进的?

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

首先,介绍两个使用案例。

第一个是OLTP流程,主要指的是整个商业应用和流程。我们会收集交易数据,在业务过程当中收集数据,比如要销售一些网上产品,可能希望把每一单都能够记录下来。

第二个主要案例是OLAP,主要指的是分析数据,我们让所有收集的数据能够有意义,可以帮助我们生成报告,根据数据分析,进行业务决策。这个应用场景下,我们会把一些数字,比如说收益,将整个数据维度Dimensions以及Measures和数据整合在一起。

Small Data Analytics

在一个小数据里可以做以上两个应用,单个系统都可以应用,非常简单。我们主要做什么呢?我们会像微软表格当中收集数据,之后进行一系列视觉化。

大数据

我们提供的解决方案对于小的数据而言主要使用单个系统,这个单个系统主要通过一个系统解决所有的问题和所有的应用场景,而且能够快速提取出关键数据,并且很容易的去创建各种不同的数据展现形式。

在过去几年里,数据一直在快速发展,人们意识到有些解决方案针对小数据已经无效了。数据已经不能够通过一台机器或设备来解决,所以我们需要通过多台设备共同来解决大数据的问题。

当数据快速发展的时候,当时我们确实也存在很多数据解决方案,这些解决方案主要是由IBM等等公司提供。这些解决方案看起来非常并行,是企业数据的解决方案。但是对于这些解决方案存在的问题就是针对专属的数据,要付出高昂的代价解决这些问题。在大数据世界里,很多中小公司也会产生大量的数据,他们无法支付得起高昂的企业解决方案。

The rise of Hadoop

1.history of Hadoop

2003年,谷歌发布了一篇Google GFS论文,论文介绍了如何将GFS系统用于大型的、分布式的、对大量数据进行访问的应用。2004年,谷歌公布了另外一篇关于MapReduce的介绍一种用于大规模数据集(大于1TB)的并行运算编程模型,即MapReduce编程模型。

2005年初,雅虎启动了Nutch项目,同时,Nutch项目的开发者在Nutch上有了一个可工作的MapReduce应用,到当年年中,所有主要的Nutch算法被移植到使用MapReduce和HDFS来运行。

在2006年2月,他们从Nutch转移出来成为一个独立的Lucene子项目,称为Hadoop。大约在同一时间,Doug Cutting加入雅虎。Yahoo提供一个专门的团队和资源将Hadoop发展成一个可在网络上运行的系统。

2008年1月,Hadoop已成为Apache顶级项目,证明它是成功的,是一个多样化、活跃的社区。通过这次机会,Hadoop成功地被雅虎之外的很多公司应用。

今天有很多不同的技术存在于整个大数据的技术空间里,大多数的技术像Hadoop一样都是开源的技术。很多人当他们最开始关注大数据空间的时候,他们觉得太复杂了,他们很难理清每个系统到底做什么的,或者他们应该什么样的系统解决现实存在的问题。

2.Early Open Source Stacks

早期的应用都是直接现将数据存储到数据库中,应用/用户直接/间接从数据库中获取所需数据。

随着数据量的增大,人们开始关注Hadoop进一步替代他们使用的传统方法。Hadoop有两个重要的组成部分,一个是存储引擎,这都是以谷歌HDFS作为依据,一个是数据处理模型MapReduce。Hadoop是一套很灵活的解决方案,它也是最常用的一种数据处理方式。但是它在某些方面表现的比较乏力。

3.Rise of Open Source Data Infrastructure

当一项技术变得被广泛采纳的时候,那么他的局限性也变得众所周知了,Hadoop也不例外,下文罗列了Hadoop的部分缺点

1)、快速查询;

2)、(流式)事件的传递;

3)、流处理;

4)、内存计算

为了解决Hadoop的缺点,许多新的技术被创建出来。

Data Infrastructure Space Today

1.Modern Open Source Stacks

当下的数据处理模型如下图所示:

当我思考当今的大数据现状的时候,大多数技术都会归为四类,第一个是整个传输数据,第二加工数据,第三存储数据,以及数据的问询或分析。现在关于技术有很多不同的领域,因为谈到大数据的时候,人们已经意识到即使简单的问题也需要很多复杂的解决方案,和一种专署的技术,或者大规模的技术才能够解决。比如说从一个位置向另外一个位置进一步传输数据的数据是比较简单的,但对大量数据就是非常复杂的问题了,这些都需要非常先进的技术才能够解决。

所以这四类技术所有的开源的大数据技术都可以归为四类当中的一类技术,很多人都已经开始意识到不同的技术其实可以结合到一起,把它用为一种端对端的技术来对所有的数据进行分析,我会给大家介绍一下四种不同的技术。不同的技术在整个大数据空间如何归为四类当中的其中一类。

这里有很多的不同技术,有很多技术都是彼此竞争关系,我没有时间给大家做逐一赘述,也不能够进一步详细介绍每个技术是什么。但是我希望给大家提供简介,帮助大家了解这些技术是做什么的,以及整个构架是什么样的。

2.Data Delivery

第一类技术是数据传输系统,数据传输系统他们主要负责把事件从一个位置进一步运输到另外一个位置,所以我们可能会产生一些数据的,比如说把数据进一步传到整个数据系统。数据传输系统他们主要专注于短期储存,这些系统通常会和数据流来打交道。这些系统可以分为不同的类别,每个系统都有不同的框架和不同的关键点传输数据。

但是我给大家介绍一下上层的架构,就像kafka,它提供了资源的上分区,把生产数据和消费数据直接分开,现在这个架构是根据分布式逻辑来进行的,你可以把这些数据按照分布的逻辑进行分布,之后从分布式逻辑上来收集数据,这是一个非常好的描述数据的一个方式。

MQ是提取数据的系统,不完全一样,这两个架构有些不同,不同的架构,不同的结构可以产生不同范围,不同规模的表现性能,以提升不同的操作性能。

现在Kafka逐步变成了这个领域的标准。

  3.Storage

数据提供系统是怎么工作的呢?它通常把数据提供到其它地方进行进一步的处理,首先可以把数据提供到存储的机制当中,存储机制只是数据库,会存储数据,也可以从这里调用数据。然而现在更普遍的情况是一种专门的储存数据库,可以看到很多的专门的存储数据的系统。

现在最普遍的存储方式是分布式数据存储系统,也就是说把这些数据无限制地放到HDFS系统当中,随时进行提取数据。文件系统和数据提交系统有一些重叠的地方,如果你在Kafka里长时间存储数据的话,你会考虑它是一种存储的方式。但是有些时候这种数据推送,数据提供需要同样的技术。

4.Processing

数据处理的技术是做什么的呢?也就是说它把数据进行变化,让它更简洁,或者把数据进行变形,以便于更容易的处理。在查询和数据处理方面也有一些重合。我们应该这么理解,处理过程是把数据进行变形,输出的数据和输入的数据量是一样大的,查询系统的输出数据比输入数据比较小一些,这在很多的系统里都是这样的。在大数据系统方面你可以看到这些系统不断来增强处理的性能。另外一些系统重点放到查询方面技术的提高。

5.Stream Processing

有两种子类型,关于处理的,第一个流处理,流处理也就是把数据放到一个流的程序当中进行连续处理。首先数据提供到Kafka里,需要先进行流处理,之后才进入存储器进行存储。还有一种就是直接放到查询系统当中,这是两种不同流处理的流程。

有很多不同的流处理的处理器,有很多的开源的流处理的程序,下面这三种是非常流行的处理方式。

  6.Batch Processing

现在我要给大家介绍批处理。批处理方式在流处理方面当中不是一种真正的流处理的方式,它只是以批的方式来收集数据,然后把它放到一种特定的构架下面,然后来进行批处理。这是两种不同的架构,两种表现也是不同,它们担心的问题也不一样。通过流处理可以得到非常快速处理的结果。

现在有两个非常流行的技术,他们分别是Hadoop和Spark对大型静态数据集的处理,Hadoop是批处理非常流行的一种技术,但是它有很多的局限。在过去几年当中Spark更加受到大家的欢迎。

Spark的工作方式就是考虑你的处理过程,将它想象成一个过程或者一个舞台,Spark做的就是非常有效地利用内存,每一个计算过程都会输出一个结果,Spark会把这些结果做一个统计,这种工作的方法是迭代式的,而且是非常高效的迭代式。Spark会把所有的数据都进行统一的整理,而且Spark比Hadoop的API更加有优势,所以在过去几年当中,Spark几乎慢慢地变成了批处理的标配。

  7.Querying

最后一个环节要说的是查询环节,查询环节目前是最大的一个环节,而且是最先进的一种数据查询。这种查询技术的目的就是为了快速,我们如何来利用查询技术呢?我们要输入一个查询的命令,然后把这个命令进行处理,把输出的数据放到查询环节当中以便用户随时查询,这就需要我们对数据进行预处理,然后把预处理数据放到存储器当中,然后再送到查询处理器当中以便查询。

8.SQL-on-Hadoop

数据的操作语言是SQL,因此很多工具的开发目标自然就是能够在Hadoop上使用SQL。这些工具有些只是在MapReduce之上做了简单的包装。SQL-on-Hadoop工作的原理就是从某些地方提取数据,提取数据可能是分布式处理,把数据放到自己引擎当中,这样就可以控制数据,改变数据,并且创造数据。所以SQL是非常灵活的一种过程,这是它的主要的特点。

很多SQL on Hadoop都支持SQL查询的功能,SQL可以帮助你非常便捷得到想得到的数据。但是缺点是处理速度非常慢,因为中间涉及到一些过程要从HDFS提取数据,处理数据,然后再放到存储器当中。这样就会非常慢,如果需要快速反应的话,这种小的延迟期的操作还需要进一步的提升。所以我们就需要进一步提高优化存储。

9.Key/Value Stores

另一种加速查询速度的方法就是要把资料库进行优化,这样就能够打造一种非常快速的查询的架构。它可以支持非常快速的查找,也可以进行快速的写入,我们有很多时间序列的数据库都有键值存储。

键值存储有两种方式,第一个方式就是预计算,预计算方面要把每个查询命令都进行预测,然后把这些查询命令进行预处理,把数据进行预存储。左边是非常分散的数据,右边根据键入的信息进行分类,这样的话在某种程度上是非常有效的。在你预计算之后查询将变得非常之快,因为它会快速来查询一些映射。

但问题是一些数据库的预计算可能会耗时很长,有些时候预计算会花几个小时才能得到数据,所以提前进行预计算是非常省时的方式。常用的键值存储引擎如下:

  以下是在键值存储进行预计算时得到的数据:

从上述的结果我们可以看出,即使是使用了键值存储,在对数据进行查询时依旧很慢。

10.Column stores

另外一个方式就是,也是非常流行的技术,就是范围扫描。关于范围扫描的理念就是主间直是井号,对维度和特性进行分类,这种问题方式关于性能方面的问题。首先需要预计算的时间,这个扫描也是很花时间的。所以现在有些人仍然用键值存储方式加速查询速度,但是今年来突然出现了一种列存储的技术,马上就变得十分流行。你可以存储并且扫描你的数据,然后把这些数据进行列存储,根据查询的关键字,电脑可以快速查询各个列,这样的话你就可以在不同的列当中创造不同的关键字,以及指标。这是性能查询方面非常大的进步。

  11.Druid

下面我给大家介绍一下Druid,它是一种列存储的方式,一种交互式操作系统,它会以列的形式来存储数据,它十分擅长于对数据进行并发的读取,而且也可以实现低延时的查询,在事件创建的毫秒内就可以被查询到。

12.面对如此多的选择,我们究竟选择哪一个呢?

现在大数据非常复杂,我们在评价不同技术的时候应该首先考虑的是这个技术是不是真正解决了我们的问题,其次技术是否得到了积极快速的发展,是不是有新技术的加入提升了新的功能。在不同的技术之间可能差别不是很大,我们可以随便选某一种技术来为我所用。但在未来我们可能是会有更加集中化,一体化的技术出现。

现在我要给大家介绍一下未来的发展趋势,在未来几年当中将会出现的一些技术。

我觉得开源大数据项目几乎已经达到了饱和点,可能是大数据当中一旦出现一个问题,大概就会同时出现五个解决这个问题的项目,索引很多问题都可以被快速的解决。

在最近几年中很多人都特别地注重流计算,流计算已经变得越来越流行了,在过去几年当中我们也看到很多人注意到内存计算,因为内存变得越来越便宜,在很多的系统当中内存计算可能会成为大数据处理方面的一个标配。

现在这些大数据的技术还是比较新的技术,还需要一些时间才会出现共同的标准。但是我觉得在不久的将来,我们很快就会出现大数据方面通用的标准。

我不相信有单一的一种技术会解决所有的问题,我觉得有很多不同的数据就需要有很复杂的大数据库来处理。但是我觉得未来的开源大数据的堆栈包括以下几个部分,其中必须要有一个处理单元,要有一个储存单元,当然肯定要有查询单元,没有查询单元就没有快速的目标的实现了。

在数据提交方面,Kafka已经达到了这个标准,对于流处理方面Spark已经成为了标准的工具,我觉得Druid查询方面也做得很好。

所以基础设施的架构也会不断成熟,不断地改善。在我们的架构不断变得稳定之后,会出现很多的应用,我们现在已经看到一些可视化的工具,以及虚拟现实的工具已经应用到了开源数据。

在未来几年当中还会有更多的开源数据。在虚拟现实之外,架构和设施稳定了,可以做很多很酷的事情,比如可以更多研究AR,更多研究深度学习,人工智能,这都是建立基础网络,基础系统上的未来发展,这也是非常流行的趋势。我觉得现在IT社区会变得越来越庞大。

人物名片:Fangjin Yang 是 Druid 项目联合发起人、核心开发者,Imply 联合创始人。Imply 是位于美国旧金山的一家技术创业公司。Fangjin 之前曾在 Metamarkets 和 Cisco 等公司任高级工程师。加拿大滑铁卢大学电气工程专业本科,计算机工程专业硕士。





====================================分割线================================


本文转自d1net(转载)

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
2月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
119 1
|
3月前
|
机器学习/深度学习 搜索推荐 算法
技术感悟之数据分析的演变与未来
本文探讨了数据分析技术的发展历程,从简单的数据收集到复杂的机器学习算法,揭示了技术进步对商业决策、科学研究和社会发展的深远影响。同时,文章也展望了数据分析在未来可能的发展方向和挑战。
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
构建高效数据分析系统的关键技术
【10月更文挑战第5天】构建高效数据分析系统的关键技术
46 0
|
3月前
|
机器学习/深度学习 传感器 人工智能
AI与未来医疗:重塑健康管理新格局随着人工智能(AI)技术的飞速发展,医疗行业正迎来一场前所未有的变革。AI不仅在数据分析、诊断支持方面展现出巨大潜力,还在个性化治疗、远程医疗等多个领域实现了突破性进展。本文将探讨AI技术在医疗领域的具体应用及其对未来健康管理的影响。
人工智能(AI)正在彻底改变医疗行业的面貌。通过深度学习算法和大数据分析,AI能够迅速分析海量的医疗数据,提供精准的诊断和治疗建议。此外,AI在远程医疗、药物研发以及患者管理等方面也展现出了巨大的潜力。本文将详细探讨这些技术的应用实例,并展望其对健康管理的深远影响。
|
2月前
|
SQL 数据采集 数据可视化
深入 Python 数据分析:高级技术与实战应用
本文系统地介绍了Python在高级数据分析中的应用,涵盖数据读取、预处理、探索及可视化等关键环节,并详细展示了聚类分析、PCA、时间序列分析等高级技术。通过实际案例,帮助读者掌握解决复杂问题的方法,提升数据分析技能。使用pandas、matplotlib、seaborn及sklearn等库,提供了丰富的代码示例,便于实践操作。
166 64
|
2月前
|
分布式计算 大数据 Serverless
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
在2024云栖大会开源大数据专场上,阿里云宣布推出实时计算Flink产品的新一代向量化流计算引擎Flash,该引擎100%兼容Apache Flink标准,性能提升5-10倍,助力企业降本增效。此外,EMR Serverless Spark产品启动商业化,提供全托管Serverless服务,性能提升300%,并支持弹性伸缩与按量付费。七猫免费小说也分享了其在云上数据仓库治理的成功实践。其次 Flink Forward Asia 2024 将于11月在上海举行,欢迎报名参加。
220 6
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
|
27天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
2月前
|
机器学习/深度学习 算法 数据挖掘
技术感悟之数据分析的奇妙旅程
这篇文章旨在分享我在数据分析领域的探索和心得。通过深入浅出的方式,带领读者了解数据分析的核心概念、工具和应用。希望这些分享能帮助大家更好地理解和应用数据分析,为生活和工作带来更多便利和价值。
|
3月前
|
机器学习/深度学习 数据挖掘 大数据
大数据时代的“淘金术”:Python数据分析+深度学习框架实战指南
在大数据时代,数据被视为新财富源泉,而从海量信息中提取价值成为企业竞争的核心。本文通过对比方式探讨如何运用Python数据分析与深度学习框架实现这一目标。Python凭借其强大的数据处理能力及丰富库支持,已成为数据科学家首选工具;而TensorFlow和PyTorch等深度学习框架则为复杂模型构建提供强有力的技术支撑。通过融合Python数据分析与深度学习技术,我们能在各领域中发掘数据的无限潜力。无论是商业分析还是医疗健康,掌握这些技能都将为企业和社会带来巨大价值。
106 6
|
4月前
|
Java Spring 安全
Spring 框架邂逅 OAuth2:解锁现代应用安全认证的秘密武器,你准备好迎接变革了吗?
【8月更文挑战第31天】现代化应用的安全性至关重要,OAuth2 作为实现认证和授权的标准协议之一,被广泛采用。Spring 框架通过 Spring Security 提供了强大的 OAuth2 支持,简化了集成过程。本文将通过问答形式详细介绍如何在 Spring 应用中集成 OAuth2,包括 OAuth2 的基本概念、集成步骤及资源服务器保护方法。首先,需要在项目中添加 `spring-security-oauth2-client` 和 `spring-security-oauth2-resource-server` 依赖。
56 0