https://developer.aliyun.com/article/727331
摘要:
日常工作中,企业需要将通过ECS、容器、移动端、开源软件、网站服务、JS等接入的实时日志数据进行应用开发。包括对日志实时查询与分析、采集与消费、数据清洗与流计算、数据仓库对接等场景。本次分享主要介绍日志数据如何同步到MaxCompute。具体讲解如何通过Tunnel,DataHub,日志服务SLS以及Kafka将日志数据投递到MaxCompute的参数介绍和详细同步过程等内容。
1.方案介绍
日志数据同步到MaxCompute的场景主要有四个方案。
方案一:使用Tunnel命令上传日志数据到MaxCompute。
方案二:通过DataHub投递数据到MaxCompute。DataHub DataConnector是把DataHub服务中的流式数据同步到其他云产品中的功能,目前支持将Topic中的数据实时/准实时同步到MaxCompute、OSS、ElasticSearch、RDS Mysql、ADS.、TableStore中。用户只需要向DataHub中写入一次数据,并在DataHub服务中配好同步功能,便可以在各个云产品中使用这份数据。
方案三:通过SLS实时采集与消费( LogHub )投递数据到MaxCompute。也可通过DataWorks的数据集成( Data Integration )功能投递至MaxCompute。
方案四:通过Kafka订阅实时数据投递至MaxCompute。
其中方案二(DataHub)和方案三(SLS------ LogHub )差异化不强,均属于消息队列。一般来说DataHub用于进行公测或自研。
2、方案比较及场景应用
-
Tunnel(或者叫 ODPS tunnel,Maxcompute tunnel; tunnel是隧道的意思)------ 可以对MaxCompute进行批量上传和下载 (如 ODPS表里的数据,应用利用tunnel批量下载后,对其进行加工,新增到redis------如风控离线名单)
Tunnel主要用于批量上传数据到离线表中,适用于离线计算的场景。对于特殊格式日志,一般建议将日志作为一个整体字段上传到MaxCompute表中,再进行拆分。 -
DataHub
DataHub用于实时上传数据的场景,主要用于流式计算场景。数据上传后会保存到实时表里(消息队列),后续会在几分钟内通过定时任务的形式同步到离线表里,供离线计算使用(如风控数据上云,sevent数据到ODPS)。
- Datahub(弹内产品叫TT:time tunnel)本质上也是消息队列: 是一款服务于大数据和人工智能的云原生实时数据总线,提供对流式数据的采集,存储和分发的功能,让用户可以轻松构建基于流式数据的分析和应用
- 应用:解利用数据总线DataHub和实时计算引擎Flink构建实时数仓系统
- 高吞吐单主题(Topic)最高支持每日TB级别的数据量写入;每个分片(Shard)最高支持每日 8000 万 Record 级别的数据量写入。
- 易用性:用户使用这些客户端工具向 DataHub 中写入流式数据,数据自动同步到阿里云产品线的其它服务,目前支持以下服务:MaxCompute、Flink等
3.日志服务(SLS)
LogHub:可适用于数据清洗(ETL)、流计算( Stream Compute)、监控与报警、机器学习与迭代计算等场景。其实时性强,写入即可消费。
Logtail (采集Agent ):实时采集传输,1秒内到达服务端( 99.9%)。写入即可查询分析。此外可支持海量数据,对数据量不设上限。种类丰富,支持行、列、TextFile等各种存储格式。而且配置灵活,支持用户自定义Partition等配置。
LogShipper(投递数仓):可支持稳定可靠的日志投递。将日志中枢数据投递至存储类服务进行存储。支持压缩、自定义Parition,以及行列等各种存储方式。可以进行数据仓库、数据分析、审计c推荐系统与用户画像场景的开发。支持通过控制台数据接入向导一站式配置正则模式采集日志与设置索引。
4.Kafka
Kafka是一款分布式发布与订阅的消息中间件,有高性能、高吞量的特点,每秒能处理上百万消息。Kafka适用于流式数据处理。可应用场景分别是大数据领域和数据集成。大数据领域主要应用于用户行为跟踪、日志收集等场景。结合数仓将消息导入MaxCompute、 OSS、RDS、Hadoop.、HBase等离线数据仓库。