【大数据】阿里巴巴的大规模数据流处理系统
随着阿里系的应用几乎覆盖了移动互联网的全行业,阿里巴巴开始致力于搭建世界一流的计算引擎。
在2015年,阿里巴巴开始将视线转向Flink,发现表现不错,于是开始将其投入到计算引擎的测试中,并定义内部名称为Blink。在随后的一年克服了稳定性和可靠性的问题;而到了2017年,就开始专注于Blink各组件性能的提升,包括SQL的功能及平台。
在Blink的生态系统中,自下而上分别是资源管理及存储、Blink运行引擎、数据流API及数据集API、统一的SQL API。在SQL API之上,阿里开发了两个平台,一个是SQL平台,允许用户使用SQL编译,或部署SQL任务;另一个平台是机器学习平台,这个平台是纯图形化UI,用户可以在界面上拖动任务或组件,以达到配置和连接的目的。有了这两大平台,就足以支撑阿里系上述的所有互联网产品。
阿里为何选择SQL作为整个平台的底层接口(Blink的上层接口)呢?SQL有以下5大特点:
- 通用性:各种平台的开发人员都熟悉SQL
- 易于理解:更易描述业务逻辑
- 性能优化:SQL系统的核心优化器能使任务更快捷地执行
- 稳定性:甚至可以平滑替换运行引擎
- 统一性:即可用户Batch任务,也可用于Streaming任务
这里大家可能就会有疑问了,为什么SQL会适用于Streaming的任务呢?我们知道SQL适用于表的查询,而在流处理任务中根本没有表啊,即使有也是不断在更新变化的表。阿里就率先提出了动态表的概念:用户可以通过标准SQL语句查询数据流,也就是说数据流和表之间可以无缝转换。这其实也不难理解,只要我们把数据流看作是表的变更日志,就得到了动态表;把表的变更日志导出就得到了数据流,阿里称之为“表流二相性”。
当然,在对历史数据做查询时,还要用到SQL的DDL,DML以及QueryConf语句。在查询涉及多个数据流的时候,可以用SQL的JOIN语句将数据流与数据流、数据流与表组合在一起。组合方式分为lookup JOIN和snapshot JOIN。前者指当系统收到SQL指令需要查询表的结果时,这时需要在JOIN语句中加入处理时间(PROCTIME()),这样SQL运行优化器就会找到对应时刻的查询结果;后者需要用户输入一个常量时间,在系统支持版本数据的情况下将对应时刻的数据返回给用户。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
MaxCompute,基于Serverless的高可靠大数据服务
摘要:2019年1月18日,由阿里巴巴MaxCompute开发者社区和阿里云栖社区联合主办的“阿里云栖开发者沙龙大数据技术专场”走近北京联合大学,本次技术沙龙上,阿里巴巴高级技术专家吴永明为大家分享了MaxCompute,基于Serverless的高可用大数据服务,以及MaxCompute低计算成本背后的秘密。 以下内容根据演讲视频以及PPT整理而成。一、什么是MaxCompute Big Data in Alibaba首先为大家介绍阿里巴巴大数据技术的一些相关背景。正如下图所示,阿里巴巴其实在很早的时候就开始布局大数据技术,甚至可以说阿里云的成立就是为了帮助阿里巴巴解决大数据相关的技术问题。如今,阿里巴巴几乎所有的BU都在使用大数据技术。而在阿里巴巴内部,大数据技术不仅应用范围非常广,同时也非常深入。此外,整个集团的大数据体系最终都
-
下一篇
Spark初窥
标签(空格分隔): Spark [toc] intro dataset和operation Spark对数据集合的基本抽象叫做Dataset。Dataset可以从文件直接创建,也可以从其他dataset经过transform变换而来。具体变换操作比如: textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b) 这个transform会将数据映射为数字并计算最大值。这里有map操作,有reduce操作,每个操作后都会转换为一个新的Dataset。而这就是Spark支持的MapReduce模型的data flow。 cache Spark也支持把数据集拉倒cluster-wide下的内存cache中进行缓存。这对于数据重复读取非常
相关文章
文章评论
共有0条评论来说两句吧...