黑马程序员技术交流社区

标题: 【上海校区】【大数据实战】在线数据收集与存储 [打印本页]

作者: 不二晨    时间: 2018-11-12 09:32
标题: 【上海校区】【大数据实战】在线数据收集与存储
MaxCompute(原名ODPS),是阿里巴巴自主研发的海量数据处理平台。 主要服务于批量结构化数据的存储和计算,可以提供海量数据仓库的解决方案以及针对大数据的分析建模服务。支持PB级别数据分析,常用场景如下:大型互联网企业的数据仓库和BI分析、网站的日志分析、电子商务网站的交易分析、用户特征和兴趣挖掘等。
我们接入MaxCompute主要做两个工作,一是网站的日志分析,二是用户特征和兴趣挖掘。其中网站日志分析项目组内(就是高德开放平台)已经玩的比较溜了,“用户特征和兴趣挖掘”还在探索中。
无论是做数据分析还是数据挖掘,都离不开数据。而MaxCompute不负责收集数据,他只负责处理数据,就好比你有台酸奶机但是没牛奶(MaxCompute比作酸奶机,数据比作牛奶)。所以先把海量的日志数据收集起来是第一步要做的工作。
MaxCompute中的元数据存储在阿里云计算的另一个开放服务Table Store(表格存储服务)中,元数据内容主要包括用户空间元数据、Table/Partition Schema、ACL、Job元数据、安全体系等。
概念清晰了,我们就可以开始动手,下面说说如何将海量的日志收集起来。
一. 数据收集
数据来源我们并不关心,可以是来自MySQL,也可以是文本文件。不过我们的业务场景主要是生产大量的log(文本文件)。比如Nginx请求日志、PHP,Java,Node的服务日志、自建的埋点日志等。
如果你的数据不是文本文件,可以参考这篇文章将数据导入MaxCompute的方法汇总
首先我们要将这些日志收集起来,这里我们使用Fluentd服务(类似的服务还有kafka、LogHubDataX等,都大同小异,这里我用Fluentd作描述只是方便),通过Fluentd我们轻松的创建任务去按时读取各台服务器上的日志文件。简单点说就是你只需要配置服务器上日志的路径,Fluentd就帮你把日志存储到MaxCompute的Table Store中,然后你就能愉快的通过MaxCompute分析数据了。
使用Fluentd去管理数据收集方式确实能帮我们节省大量人力,而且方式相当便捷,分分钟就能上线泡咖啡!但Fluentd带来便利的同时就需要我们遵守它的规则。比如创建的Table Store表(这样说好别扭,还是叫MaxCompute表吧),必须按照Fluentd定义的字段写,默认四个字段如下
PS:如果个人使用Fluentd是可以自定义字段的,不需要像我们一样。我们团队之所以规范字段信息,主要是为了之后的扩展和统一管理(上百个项目)。当然我也建议大家像我们一样规范字段,这样做的好处是之后你能基于Fluentd做平台。
如上可以看到真正能控制的字段只有content,其他字段Fluentd都帮你自动生成。所以在你要做数据分析时就需要用到无数的LIKE,这样不但会导致查询速度慢,最主要和最痛苦的是稍微复杂点的数据分析都无法实现,用LIKE去模仿等于、不等于、包含、不包含难度太高。你好不容易(其实并没有很不容易)把平台搭建好,并说这个服务多牛。一个月后PM要你产出一个报表你发现没办法,PM会觉得你做的啥玩意儿…
这个时候我们可以在埋点时对数据格式做下处理,用些小技巧。比如用各种符号做分隔符,定义一套log格式标准,总归有很多总办法解决问题。但是马总不是说过嘛,解决问题的最好办法就是不给他发生的机会……所以看下文
二. 自建MaxCompute数据源
MaxCompute本身提供了Fluentd的所有功能接口,不过调用接口虽然简单,配置环境却很复杂。如果业务需要对数据做深入的分析和挖掘,就不得不自己配置环境。当然,这也是MaxCompute强大的体现(一般使用成本高的都让人觉得很强大)……
三. 流程介绍
在实际项目中使用MaxCompute有4种通用的方案,这里贴出流程图供大家参考;
四. 总结
直接在生产环境上调用DHS对我们的PHP环境来说成本太高,所以暂时使用的是Fluentd收集日志数据,然后通过PyODPS将数据下载到本地,处理后再传到MaxCompute Table中。我们的业务场景比较麻烦所以流程显得略复杂,如果你不需要做复杂的数据分析,建议直接使用Fluentd上传数据就行。
五. 最后
最后贴出核心代码,供参考,语言使用Python。


作者: 不二晨    时间: 2018-11-14 15:46
~(。≧3≦)ノ⌒☆
作者: 梦缠绕的时候    时间: 2018-11-15 15:00

作者: 魔都黑马少年梦    时间: 2018-11-15 16:51

作者: 小影姐姐    时间: 2018-11-15 17:18
奈斯~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2