阿里云大数据组件的基本介绍
注意:本文结合了本人对Hadoop生态和Spark的理解,阅读本文需要对传统的大数据组件有基本的认识和了解。本文不具备权威性,若要准确地了解阿里云大数据组件的特性请直接查看阿里云帮助文档。
目录
1 MaxCompute
1.1 简介
MaxCompute大数据计算服务,原名为ODPS(Open Data Processing Service),为阿里云的数据仓库解决方案,提供大数据量(百TB、PB、EB)的结构化数据的存储和计算服务。
总结:像 Hadoop 里面的 HDFS + MapReduce。
1.2 分布式
MaxCompute为实现超大数据量的存储以及计算性能,它底层采用分布式存储以及分布式计算引擎。
总结:基本所有的大数据组件都是分布式的,这一点没啥好说。
1.3 计算模型
MaxCompute支持SQL、MapReduce、UDF(Java/Python)、Graph、基于DAG的处理、交互式、内存计算、机器学习等计算类型及MPI迭代类算法。
总结:SQL、MapReduce、UDF(Java/Python)这三点是像 Hive + Hadoop 的 MapReduce,没什么好说的,而 Graph 图计算、基于DAG的处理、内存计算、机器学习等计算类型及MPI迭代类算法,这几点 Spark 中也有类似的功能,总体来说支持的计算模型非常全面,融合了 Hadoop 和 Spark 的计算模型。
1.4 系统架构
总结:这个图没什么好说的,只画出了MaxCompute的一些接口、计算模型和功能,有点乱,没有涉及MaxCompute的底层设计。
1.5 数据通道
首先我们要知道数据通道是干嘛的?为什么需要数据通道?
MaxCompute主要的功能是存储以及计算,原始的数据不会直接在MaxCompute中产生,需要从其他的数据库或者导入数据文件到MaxCompute中才可以进行下一步的操作,而负责采集和传输数据的组件在阿里云被称为数据通道,原始数据到MaxCompute的流向是这样的:原始数据 -> 数据通道 -> MaxCompute。
MaxCompute支持的数据通道有两个,分别是Tunnel(批量)和DataHub(实时),下面分开介绍。
Tunnel
Tunnel提供批量数据传输服务,提供高并发的离线数据上传下载服务。支持每天TB/PB级别的数据导入导出,特别适合于全量数据或历史数据的批量导入。Tunnel为您提供Java编程接口,并且可以在MaxCompute的客户端工具中,提供对应的命令实现本地文件与服务数据的互通。
总结:Tunnel适合离线的数据量大的场景。
DataHub
DataHub是针对实时数据上传场景而设计的,它具有延迟低的特点,适用于增量数据的导入。DataHub还支持多种数据传输插件,例如Logstash、Flume、Fluentd、Sqoop等,同时支持日志服务Log Service中的投递日志到MaxCompute,进而使用DataWorks进行日志分析和挖掘。
总结:DataHub适合实时、增量数据导入的场景,功能类似于Kafka。
MaxCompute基本介绍总结:
MaxCompute提供分布式的存储以及计算服务,它融合了HDFS、MapReduce、Hive以及Spark的特性,支持的计算模型非常全面。
由于架构与Hadoop类似,响应速度较慢,不能用于流式数据的实时处理,主要应用于离线数据处理以及存储以及机器学习模型的训练等场景。
MaxCompute需要从其他的数据库或者文件系统中导入数据,这就需要用到数据通道,MaxCompute支持的数据通道有两个,Tunnel和DataHub,其中Tunnel用于离线的,数据量大的场景,DataHub适用于实时的,增量的场景。
还有一个与MaxCompute关系非常紧密的组件叫DataWorks,这个组件为MaxCompute提供可视化的一站式的数据同步、业务流程设计、数据开发、管理和运维功能。其实DataWorks相当于阿里云大数据的PaaS平台,由于DataWorks不属于MaxCompute中的组件所以会分开进行介绍。
2 Tunnel
2.1 场景
上面介绍MaxCompute的时候已经提到了,Tunnel是MaxCompute中的数据通道,主要用于离线场景的数据传输。
下面来介绍一下Tunnel的命令以及支持什么类型的数据。
2.2 命令
Tunnel有Upload(上传)、Download(下载)、Resume(续传)、Show(显示历史任务信息)、Purge(清理session目录)、help(获取帮助信息)。
Upload:上传本地数据至MaxCompute表中。支持文件或目录(指一级目录)的上传,每一次上传只支持数据上传到一张表或表的一个分区。分区表一定要指定上传的分区,多级分区一定要指定到末级分区。
Download:下载MaxCompute表或指定Instance执行结果至本地。只支持下载到单个文件,每一次下载只支持下载一张表或一个分区到一个文件。分区表一定要指定下载的分区,多级分区一定要指定到末级分区。
Resume:因为网络或Tunnel服务的原因造成上传出错,可以通过Resume
命令对文件或目录进行续传。可以继续上一次的数据上传操作,但Resume命令暂时不支持下载操作。
Show:显示历史任务信息。
Purge:清理session目录,默认清理3天内的日志。
help:获取帮助信息,每个命令和选择支持短命令格式。
3 DataHub
3.1 简介
DataHub是流式数据(Streaming Data)的处理平台,提供对流式数据的发布 (Publish),订阅 (Subscribe)和分发功能。
3.2 功能图
以下是整体功能图。
这个功能图最显眼的是最底下的飞天分布式平台,它是阿里云大数据平台的基础,飞天分布式平台是类似于Hadoop生态的一个平台,底层由女娲(Nuwa)高可用协调服务(Coordination Service)、夸父(Kuafu)远程过程调用、钟馗(Zhongkui)安全管理、盘古(Pangu)分布式文件系统、伏羲(Fuxi)资源管理和任务调度、神农(Shennong)集群监控、大禹(Dayu)集群部署,这里不展开介绍。
3.3 插件支持
DataHub还支持多种数据传输插件,例如Logstash、Flume、Fluentd、Sqoop等,同时支持日志服务Log Service中的投递日志到MaxCompute。
3.4 应用场景
应用场景这里官方文档描述得非常笼统,以下是个人的一些理解。
DataHub服务基于阿里云自研的飞天平台,具有高可用,低延迟,高可扩展,高吞吐的特点。DataHub与阿里云流计算引擎StreamCompute无缝连接,用户可以轻松使用SQL进行流数据分析。
DataHub服务也提供分发流式数据到各种云产品的功能,目前支持分发到MaxCompute(原ODPS),OSS等。