美图数据统计分析平台架构演进
美图拥有十亿级用户,每天有数千万用户在使用美图的各个产品,从而积累了大量的用户数据。随着App的不断迭代与用户的快速膨胀,产品、运营、市场等越来越依赖于数据来优化产品功能、跟踪运营效果,分析用户行为等,随之而来的有越来越多的数据统计、分析等需求,那么如何应对和满足不断膨胀的数据统计与分析需求?业务的不断发展又怎么推进架构实现的改造?本文将介绍大数据业务与技术的碰撞产物之一:美图大数据统计分析平台的架构演进,希望通过这次分享能给大家带来一些解决数据业务与架构方面的思考。
美图统计平台的架构实现:更进一步,在做这个平台时,我们可能需要考虑以下几个比较重要的点:第一,我们可能需要对统计任务有一个比较清晰的元数据描述,可以描述出这些统计任务的计算方式是什么样子,算子是什么。第二是这个统计任务的数据源来自于哪里,以及数据需要存储在什么地方更合适业务查询。第三个是需要有一个调度中心来统一调度所有统计任务的执行。第四要确保任务的最终的正确执行。
基于上面这几个点,考虑需要有一些不同的模块来负责上面的说的几大功能。我们大概有设计三个模块:第一个模块是JobManager,主要是提供平台,供应用方比较方便的配置,能管理任务元数据信息以及其他的数据仓库、app信息的管理等。第二个模块是Scheduler,就是任务的调度中心,负责调度所有的统计任务。第三是任务执行模块JobExecutor,负责任务从查询、聚合到最终的结果落地存储。
随着大数据越来越被重视,数据采集的挑战变的尤为突出。这里有几款数据采集平台:
Apache Flume:Flume 是Apache旗下的一款开源、高可靠、高扩展、容易管理、支持客户扩展的数据采集系统。 Flume使用JRuby来构建,所以依赖Java运行环境。Fluentd:Fluentd是另一个开源的数据收集框架。Fluentd使用C/Ruby开发,使用JSON文件来统一日志数据。它的可插拔架构,支持各种不同种类和格式的数据源和数据输出。最后它也同时提供了高可靠和很好的扩展性。Treasure Data, Inc 对该产品提供支持和维护。Logstash:Logstash是著名的开源数据栈ELK (ElasticSearch, Logstash, Kibana)中的那个L。Chukwa:Apache Chukwa是apache旗下另一个开源的数据收集平台,它远没有其他几个有名。Chukwa基于Hadoop的HDFS和Map Reduce来构建(显而易见,它用Java来实现),提供扩展性和可靠性。Chukwa同时提供对数据的展示,分析和监视。很奇怪的是它的上一次github的更新事7年前。可见该项目应该已经不活跃了。Scribe和Splunk Forwarder。
综上所述,我认为任何完整的大数据平台,一般包括以下的几个过程:数据采集、数据存储、数据处理和数据展现(可视化,报表和监控)。按照这个流程下去才能对自身所拥有的数据进行最好的使用。
文章来源:
https://mp.weixin.qq.com/s?__biz=MjM5OTcxMzE0MQ==&mid=2653370211&idx=1&sn=cd4f8a3499dcb5bbe091252b68bc014c&chksm=bce4d7798b935e6faf306c223b8482d61ea8b9dd1f40dd269d56c6d75abb4bbd69ce9abff26b&scene=21#wechat_redirect