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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 在票选最美云上大数据暨大数据技术峰会上,来自飞天一部的朋春从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中进行交互式数据分析的能力。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
356 7
|
1月前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
53 2
|
1月前
|
数据采集 监控 数据管理
数据治理之道:大数据平台的搭建与数据质量管理
【10月更文挑战第26天】随着信息技术的发展,数据成为企业核心资源。本文探讨大数据平台的搭建与数据质量管理,包括选择合适架构、数据处理与分析能力、数据质量标准与监控机制、数据清洗与校验及元数据管理,为企业数据治理提供参考。
90 1
|
1月前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
69 4
|
1月前
|
存储 大数据 数据管理
大数据分区简化数据维护
大数据分区简化数据维护
24 4
|
1月前
|
存储 大数据 定位技术
大数据 数据索引技术
【10月更文挑战第26天】
58 3
|
1月前
|
存储 大数据 OLAP
大数据数据分区技术
【10月更文挑战第26天】
71 2
|
1月前
|
消息中间件 分布式计算 大数据
数据为王:大数据处理与分析技术在企业决策中的力量
【10月更文挑战第29天】在信息爆炸的时代,大数据处理与分析技术为企业提供了前所未有的洞察力和决策支持。本文探讨了大数据技术在企业决策中的重要性和实际应用,包括数据的力量、实时分析、数据驱动的决策以及数据安全与隐私保护。通过这些技术,企业能够从海量数据中提取有价值的信息,预测市场趋势,优化业务流程,从而在竞争中占据优势。
117 2
|
1月前
|
数据采集 分布式计算 大数据
数据治理之道:大数据平台的搭建与数据质量管理
【10月更文挑战第27天】在数字化时代,数据治理对于确保数据资产的保值增值至关重要。本文探讨了大数据平台的搭建和数据质量管理的重要性及实践方法。大数据平台应包括数据存储、处理、分析和展示等功能,常用工具如Hadoop、Apache Spark和Flink。数据质量管理则涉及数据的准确性、一致性和完整性,通过建立数据质量评估和监控体系,确保数据分析结果的可靠性。企业应设立数据治理委员会,投资相关工具和技术,提升数据治理的效率和效果。
117 2
|
1月前
|
存储 安全 大数据
大数据隐私保护:用户数据的安全之道
【10月更文挑战第31天】在大数据时代,数据的价值日益凸显,但用户隐私保护问题也愈发严峻。本文探讨了大数据隐私保护的重要性、面临的挑战及有效解决方案,旨在为企业和社会提供用户数据安全的指导。通过加强透明度、采用加密技术、实施数据最小化原则、加强访问控制、采用隐私保护技术和提升用户意识,共同推动大数据隐私保护的发展。

相关产品

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