双管齐下,MaxCompute数据上云及生态.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
双管齐下,MaxCompute数据上云与生态本文章来自于阿里云云栖社区摘要:?在票选最美云上大数据暨大数据技术峰会上,来自飞天一部的朋春从MaxCompute提供的离线、实时数据通道入手,延伸到DTS、Logstash、DataX等官方/开源软件,向大家介绍如何从数据库、本地文件等多种存储向MaxCompute导入数据,分享最后还介绍了如何在Python和R语言中使用MaxCompute。玩大数据的第一件事情是将数据上传到MaxCompute,那么数据是通过哪些途径进入MaxCompute中的呢??如上图所示,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的实时数据都可以被流计算无缝使用,做一些时效性更好的计算作业。?数据上云核心问题?数据上云的核心问题包括四点:(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的三副本存储,本身提供了非常高的可靠性。另一方

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档