阿里巴巴少杰:大数据处理实践

  1. 云栖社区>
  2. 博客>
  3. 正文

阿里巴巴少杰:大数据处理实践

云迹九州 2018-01-18 19:06:18 浏览4316
展开阅读全文

2018年1月6日的云栖社区数据智能技术论坛上,来自阿里巴巴计算平台事业部高级技术专家少杰带来大数据处理的相关演讲。本文首先浅谈了大数据处理发展历程和MapReduce的诞生,以确定大数据处理系统的实现模式,接着重点分享了Maxcompute和飞天的架构实践,包括盘古伏羲和SQL查询,最后作了简要总结。

以下是精彩视频内容整理:

大数据处理和分布式技术

大数据处理

1


我们在数据中心的设置上,经历了三个阶段。80年代中期以前,我们是对于文件做处理的模式,只能处理KB-MB的数据;2010年以前,这是DataBase辉煌的年代,无论是开发信息平台还是互联网应用,都是以DataBase为中心的,比如Oracle、SQLserver、MySQL等,DataBase上也有很多生态系统,可以处理MB-GB级数据;随着数据量持续爆炸,传统DataBase很难支持下去,所以一批大数据处理平台应运而生,比如Hadoop、Spark、Flink等,可以处理100GB-PB级存储和计算。
传统的大数据用例包括日志分析(网站被如何访问,货被如何移动)、商业智能和数据挖掘(人工智能算法)、图计算、检索、机器学习和人工智能等一些更高级计算都在上面。所以,Maxcompute可以支持多编程模型多用例的开发模式。
每一种应用都有各自的挑战,和传统DataBase系统比较,如果数据量极大,会存在硬件故障、网络带宽和延迟、(存储、计算)成本和效率/时效性等多方面挑战。
伴随这些挑战带来的冲突,我们要重新审视传统数据库设计,传统数据库强调ACID、强调隔离性、强调一致性,这些在分布式环境中很难保证,比如网络时效性需要高性能,写机房时需要异步方式同步到另一个机房,这时很难保证一致性。此外,传统数据库都是结构化/关系型的,如果处理大数据,很多大数据通常不是结构化的,一些新的人工智能应用可能不需要结构化存储,结构化存储可能影响设计;传统并行计算也有很多尝试,包括复杂事件处理和MPI处理,但是事实上还不能打破条件,而且性能和相关指标也达不到要求。

MapReduce

2


因此,MapReduce诞生了。通过数据本身特性,用KEY value数据结构组织数据,每一个worker可以通过Map处理一个KEY value数据结构,KEY value 数据结构用KEY特性重新分布数据,再用下一批任务去做处理,MapReduce可以描述很多复杂的逻辑,MapReduce没有尝试像CEP或MPI去构造一个通用的超高性能高并发计算机,而是通过需要用户去改变编程模型来实现分布式数据处理。
Hadoop是MapReduce论文的参考实现,发表论文一两年后,Hadoop已经成为独立项目,它经历几个代表性阶段Hadoop1.0阶段对应MapReduce、HDFS、HBase、Hive/Pig/Cascades,Hadoop得到飞速发展;Hadoop2.0阶段对应HDFS federation,、YARN、 Tez,Hadoop得到广泛接受,是可以面向企业级的成熟软件;现阶段,Hadoop不仅仅局限于自身系统,包括周边系统,像Spark,Flink, Presto/Drill, Cassandra都和Hadoop有千丝万缕联系,共同构建了一个生态圈。
总结来说,大数据系统实现模式表现为:
  1. 层次化设计。通常一个大数据系统下面会有一个分布式文件系统,分布式文件系统下会有分布式调度系统,分布式调度系统下可能会有编程模型的实现,这与Maxcompute实现较类似;
  2. 去中心/弱中心控制。没有中心节点,不必连接某个节点才能接入整个分布式系统;
  3. Commodity Computing。我们希望使用廉价机器,用全分布系统搭建,而非专有昂贵硬件才可以搭建系统。

飞天和Maxcompute

Maxcompute是阿里巴巴在大数据方面的离线在线分布式大数据处理系统,飞天相当于底层,可以理解为底层文件系统和底层调度系统。飞天和Maxcompute合起来称为阿里巴巴自研大数据处理系统,该系统运行在全球超过8万台物理节点,支持每日几百万次查询,阿里内部也有几千人在使用该系统进行日常分析和处理操作。Maxcompute具备有竞争力的技术实现和性能指标,按照相同的硬件来看,已经可以超过最新Hive2.1版本性能90%,超过Spark实现性能30%,Maxcompute目前以专有云和公有云的形式对外售卖。

3


Maxcompute和飞天也是分层设计,其架构总图如图所示,最下面是一套文件系统;上面是Maxcompute Framework,可以理解为一个调度框架,框架下有很多调度单元,包括SQL、Graph、Streaming等,还有Metadata元数据,可以用来解析和优化数据查询;最上面是SDK、Studio等用户接口,我们也有DataX和Datahub等访问工具。
可以看出,Maxcompute是全功能的,可以支持数据导入导出、支持文件存储调度、支持多编程模型的分布式大数据处理平台。

盘古

4


盘古和所有分布式文件系统比较类似,它需要去中心化快速访问底下所有存储,分布式系统中不能有单点限制流量和稳定性,所以盘古有分离设计,对于顶层目录服务来说,只需要存储一个file和对应的block数据存储单元,block层对应的block就可以存储在不同的chunkserver。所以,上面可以是若干台机器组成的目录服务,下面是非常多机器存储的具体文件块,每次请求一个块时,只要访问一次master后,即可直接和chunkserver交互。

伏羲

5


伏羲是一个资源调度系统,我们针对于不同的编程模型和应用,都需要兼容,伏羲希望做成完全不关系底部应用,只关心如何调度一个资源。比如一个应用请求需要1000台机器,SQL对resource manager提出请求,底下有application master可以用应用来实现,SQL会实现application master来具体调度1000台机器如何使用。

Maxcompute SQL

6


Maxcompute SQL包含两部分,一部分是planning,是指如何将SQL解析成执行计划,包括用户SQL statement——Parse Tree——Algebraic Tree,进而生成执行计划;一部分是执行,执行计划移到计算集群上,伏羲调度系统给到一系列机器,这些机器对应去具体文件存储地方访问文件,每次访问文件client都会直接访问盘古master,盘古master给到具体存储后就可以直接访问了。

案例分析

7


如图SQL查询,首先会生成一个TOK Tree,将词法解析成具体的TOK;然后生成一个关系代数树;优化后生成一个执行计划,对应了算法选择等。

8


执行计划又是如何执行呢?如图两张表,一张表是foo table,一张表是bar table,这两张表对应数据在join时,需要把key对应到join key重新分发到下面一堆机器,保证join key在相同机器上都是独立的,都是经过表名做排序的,每一台机器对应execution plan做出最后结果。
Maxcompute上还有其它知识组件,包括块数据传输服务Tunnel,流式数据传输服务DataHub
,数据交互工具DataX。Maxcompute在用户终端上也支持ODPS Studio、ODPS Console、pyOdps / Pai等。

9


在更高层的调度上,我们支持D2系统,帮助用户实现任务集依赖管理。

总结

综上,对大数据处理的原理和系统实现以及Maxcompute进行分析后,得出如下总结概括:

  1. 现代大数据处理使用大规模分布式系统搭建的廉价集群。
  2. 大数据处理系统不是单一系统,通常是分层的设计。
  3. 飞天/Maxcompute是一个全系统栈、多编程模型、广泛接口支持的大数据处理系统。

本文由云栖社区志愿者小组毛鹤整理编辑,程弢审核
活动相关文章
蚂蚁金服西亭:智能金融的技术挑战与方案
阿里云朱金童:深度揭秘ET大脑
阿里巴巴阿外:客服全链路智能解决方案
浙江大学杨洋:社交网络中的群体用户行为分析与表示学习
阿里巴巴iDST杨森:智能决策在电商平台的应用
阿里巴巴布民:图计算是生产力

网友评论

登录后评论
0/500
评论
云迹九州
+ 关注