双管齐下,MaxCompute数据上云与生态

简介: 在票选最美云上大数据暨大数据技术峰会上,来自飞天一部的朋春从MaxCompute提供的离线、实时数据通道入手,延伸到DTS、Logstash、DataX等官方/开源软件,向大家介绍如何从数据库、本地文件等多种存储向MaxCompute导入数据,分享最后还介绍了如何在Python和R语言中使用MaxCompute。

玩大数据的第一件事情是将数据上传到MaxCompute,那么数据是通过哪些途径进入MaxCompute中的呢?

665cae4c015b32c39730d9f994541c547be69133 

如上图所示,MaxCompute/StreamCompute是提供给用户用来计算大数据的平台,一般来说,它们本身不直接产生实际的业务数据,业务数据是来自于数据库RDS、APP Logs以及IOT等终端设备,两者之间需要桥梁进行连接。


从上图中间可以看到:数据可以通过Tunnel组件进入MaxCompute,Tunnel是一个非常注意吞吐量同时又尽可能追求数据严格一致的输入输出接口;在这条通道上再往前延伸,还有开源软件Sqoop、Kettle以及阿里巴巴自研的开源软件DataX。事实上,在公司内部所有数据的传输、导入到MaxCompute或者说最后计算完的结果再回流到数据库中,这种对前台数据库冲击不大的情况都在使用DataX。为了实时传输数据,满足流计算的诉求,阿里云提供了DatHub组件,它是一个偏重于实时的增量数据通道,在此基础上,对于ECS上的文本日志支持了业界著名的Logstash、Flume、Fluentd三个开源软件。


如何将数据库中的数据拖进MaxCompute中呢?首先能想到的方法是在数据库中执行select语句,将结果集通过Tunnel写入MaxCompute,这是一个容易上手又方便容错的方式。但这种方式对于数据量较大并且需要长期运行的情况不一定非常合适。一方面在阿里的实践过程中发现执行Select语句会对数据库产生查询压力,当数据量非常庞大时,可能会导致前台业务因为数据库增大而产生响应能力上的降低;其次执行SQL语句会碰到各种各样的情况,例如想用时间过滤前一天的增量,但是在时间字段上因为历史原因没有索引,这在专有云案例中经常发生。对于这种情况,我们尝试解析MySQL的binlog,将其binlog以一种流式的方式源源不断地、实时地传递到DatHub上,然后该数据再通过DatHub再写入MaxCompute,在MaxCompute上再进行数据的合并等操作,还原出前一天的增量数据。


目前,在公共云,DatHub和官方的数据传输产品DTS已经打通,能够无缝完成RDS上的数据库实时变更增量并写入DatHub中,进一步Push到MaxCompute中;另一方面,所有进入DatHub的实时数据都可以被流计算无缝使用,做一些时效性更好的计算作业。

 

数据上云核心问题

0dd9960e78a0d4417ff9da4b90b2e8eb02b00069 

数据上云的核心问题包括四点:

(1)数据要能上传,它主要面临两个痛点包:一是前台存储多样化,包括RDBMS、NoSQL、Logs等,每多一种类型,需要对应地识别其协议,解析Schema,甚至是无Schema的类型还需要按照业务逻辑转变成二维表的格式;二是传输需求多变,例如在传输的过程中需要将字符串转变成ID,将图片变成URL地址等,很难将其抽象成一个标准的模型。

        阿里云为应对该问题,提供了Tunnel和DataHub的官方API和SDK作为兜底,保障了在阿里云生态工具跟不上的情况下,开发者依旧有方法将数据上传到云端。

(2)数据的高效传输,数据传输中最典型的问题就是带宽,尤其是长途传输,长途带宽上的稍微波动都对传输效率起到很大的影响;第二个问题是数据库Dump开销大,影响到核心业务的运转。

       传输问题对应的解决方案一是尽量规避长途传输、长途带宽对效率的影响,在Tunnel通道中,支持压缩协议,可以在客户端进行压缩,然后再大包提交,进而提升吞吐量;第二点采用DTS这类基于增量日志的实时上传方式,拉长传输时间,并且支持断点续传,降低某特定时刻对带宽的需求。

(3)数据的正确性,首先MaxCompute是一个强Schema的数据库,从Oralce到MaxCompute传导数据时,在字段类型的映射上或浮点数的操作上一定会存在精度误差,那么精度误差如何处理?第二点是正确性无法避开的Timeout重传导致的数据重复。

       Tunnel提供两阶段提交的功能,先Write后Commit,提供了数据严格一致的可能性;相反地,DataHub流式传输无法实现两阶段提交,这是由于要考虑效率和吞吐量导致。

(4)安全是使用云计算必须面临的问题,数据存储是否可靠以及会不会第三方被嗅探。

       MaxCompute采用pangu的三副本存储,本身提供了非常高的可靠性。另一方面,MaxCompute默认不同用户之间的数据完全隔离, 并且在传输过程中全部采用HTTPS协议,使得数据被第三方嗅探到的可能降到最低。

下面来具体看一下Tunnel和DataHub。

批量、历史数据通道Tunnel

6e8a9d19c581555fa337e8282563afd5edb12a9d 

Tunnel是针对历史数据的批量数据通道,它的典型特征是支持大包传输,Write&Commit两阶段提交,最大可能性保证数据一致。用户可以使用ODPSCMD命令对数据进行上传、下载等操作。

Datax是阿里开源的一款工具,可以适配常见的数据源,包括关系数据库、文本文件等,这是一款单机的软件,适用于中小数据量的传输。使用Datax传输数据到ODPS时,在ECS机器或一台物理机器上部署好DataX,此机器要能够同时连通数据源与MaxCompute(原ODPS)服务。Sqoop可以并行起多个任务导出数据,相比Datax可以取得更好的性能。

实时、增量数据通道DataHub

DataHub是实时、增量数据通道,目的是为支持流计算和实时数据。在编程友好性上,DataHub要优于Tunnel,解决了Tunnel的小包效率问题,并且能够容忍少量的数据重复。

80af20f95a22be3cc518d2b0b7d67e0d6a4563a7 

DataHub摒弃了两阶段提交的方式,使用时不停地写入数据即可,技术特征是面向高吞吐,因此在DataHub上并没有提供严格一致的语义支持;在阿里集团内部,DataHub每天有数百TB数据压缩后写入,PB级别的数据消费。消费的数据之所以是写入数据的数倍是因为一份数据会被多方使用,例如一份数据进入MaxCompute进行离线加工,另一份甚至多份用于实时处理,给用户提供更实时的数据。


在DataHub通道上,要尽可能保障数据低延迟,目前,理论上数据库中的用户订单可以做到毫秒级流入流计算或MaxCompute中;在阿里的实际生产经验中,为了平衡延时和吞吐,在绝大数情况下,前台订单流入后端计算平台的总时间在1s-2s左右,但这种时效性已经能够满足绝大多数业务需求。

DataHub和流计算产品紧密结合,可以在流计算中非常方便的重复使用多份数据;DataHub是基于Topic/Shard(s)模型,每个主题(Topic)的数据流吞吐能力可以动态扩展和减少,最高可达到每主题256000 Records/s的吞吐量。

源头数据库到DataHub数据库之间可以通过DTS、Oracle GoldenGate连接;App Logs到DataHub之间可以通过Logstash、Fluentd等开源软件连接。

 

MaxCompute生态思路

0928e2dea3a47739ca2c764bbe0f5e3d515e95dc 

上述提到的数据上传是整个MacCompute生态的一部分,MaxCompute整体思路如上图所示:最底层是MaxCompute Restful API(Tunnel&DataHub);在中间层(黄色部分)提供了Java、RODPS、PyODPS、Ruby/PHP(社区贡献)等语言的SDK,这两层是兜底方案,当上层提供的组件无法满足需求时,开发者依旧有方式将数据传到计算平台上;最上层是生态的思路,包括官方大数据DataIDE、IntelliJ IDEA Plugin(MaxCompute Studio)、Jupyter Notebook、导入导出模块等。

RODPS

637fc9d99439c54d832bc1e14660a6eead72f6af 

RODPS提供了一种桥接的方式,使得可以在R语言环境中无缝的使用MaxCompute(原ODPS)里面的数据、计算资源,类似于开源社区的RHive和Rhadoop的功能;R语言开发者可以在R语言中直接执行MaxCompute SQL,并将结果集转换为Rdata.frame,便于进一步研究。RODPS很适合在MaxCompute中预先完成计算,缩小结果集再进行单机分析的场景。

未来RODPS将致力于将本地算法和数据处理运作在分布式系统上面,致力于让用户无缝迁移R社区的开源包,提供类似于sparkR那样的强大的能力。

PyODPS

76aaa8f31a6a948dd0c6d0f7c13c2a9832889854 

PyODPS 是ODPS的Python版本的SDK, 它提供了对MaxCompute对象的基本操作,在Python中运行MaxCompute SQL语句的需求促进了PyODPS的出现;与RODPS类似,在Python中也可以做MaxCompute DataFrame,甚至MaxCompute结果的DataFrame还可以和Pandas DataFrame进行Join操作;除此之外,通过PyODPS还为开发者提供了基于第三方软件(如Jupyter Notebook)连接到MaxCompute中进行交互式数据分析的能力。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
分布式计算 DataWorks IDE
MaxCompute数据问题之忽略脏数据如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
47 0
|
2月前
|
SQL 存储 分布式计算
MaxCompute问题之下载数据如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
38 0
|
2月前
|
分布式计算 关系型数据库 MySQL
MaxCompute问题之数据归属分区如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
35 0
|
5天前
|
数据采集 搜索推荐 大数据
大数据中的人为数据
【4月更文挑战第11天】人为数据,源于人类活动,如在线行为和社交互动,是大数据的关键部分,用于理解人类行为、预测趋势和策略制定。数据具多样性、实时性和动态性,广泛应用于市场营销和社交媒体分析。然而,数据真实性、用户隐私和处理复杂性构成挑战。解决策略包括数据质量控制、采用先进技术、强化数据安全和培养专业人才,以充分发挥其潜力。
11 3
|
7天前
|
运维 供应链 大数据
数据之势丨从“看数”到“用数”,百年制造企业用大数据实现“降本增效”
目前,松下中国旗下的64家法人公司已经有21家加入了新的IT架构中,为松下集团在中国及东北亚地区节约了超过30%的总成本,减少了近50%的交付时间,同时,大幅降低了系统的故障率。
|
17天前
|
机器学习/深度学习 分布式计算 数据挖掘
阿里云 MaxCompute MaxFrame 开启免费邀测,统一 Python 开发生态
阿里云 MaxCompute MaxFrame 正式开启邀测,统一 Python 开发生态,打破大数据及 AI 开发使用边界。
197 1
|
1月前
|
SQL 分布式计算 监控
大数据计算MaxCompute等长时间没有查出来结果的原因可能有以下几点:
【2月更文挑战第24天】大数据计算MaxCompute等长时间没有查出来结果的原因可能有以下几点:
18 2
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks报错问题之dataworks同步rds数据到maxcompute时报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
存储 监控 大数据
数据仓库(11)什么是大数据治理,数据治理的范围是哪些
什么是数据治理,数据治理包含哪些方面?大数据时代的到来,给了我们很多的机遇,也有很多的挑战。最基础的调整也是大数据的计算和管理,数据治理是一个特别重要的大数据基础,他保证着数据能否被最好的应用,保证着数据的安全,治理等。那么数据治理到底能治什么,怎么治?
64 0
|
2月前
|
JSON 分布式计算 MaxCompute
MaxCompute问题之创建数据集失败如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
33 0

相关产品

  • 云原生大数据计算服务 MaxCompute