大数据培训
美国上市大数据培训机构

400-111-8989

热门课程

大数据专栏 | 移动应用的大数据分析

  • 发布:大数据培训
  • 来源:大数据教程
  • 时间:2018-01-17 14:26

1背 景

移动应用的场景非常广泛,将互联网和人们生活紧密联系在一起。依托于智能手机、平板电脑等移动终端的普及,以及无线网络环境的持续改善,游戏、社交、电商等互联网应用真正做到了随时随地的服务。同时,物联网应用首先在消费者领域实现了大规模突破,如可穿戴硬件、智能家居、智能车载终端等。

热潮背后,用户数据空前激增,任何一个提供移动应用的服务商都会面临用户数据的分析问题。同时,由于业务层面持续向以用户为中心的服务演进,大数据分析成为任何一个移动应用平台需要解决的问题之一

2典型场景

移动应用数据分析的典型场景包括用户统计、业务统计、安全审计、运营分析和行为分析。

用户统计

这是移动应用数据分析最为基本和重要的一环,典型的分析指标包括用户总数、每日新增用户数、每日活跃用户数(DAU)、每月活跃用户数(MAU)、留存率等。数据来源主要是用户打点数据,即活跃用户的移动应用上报后台的周期性数据。

业务统计

业务统计与移动应用的内容和平台所提供的服务紧密相关,主要目的是提供针对业务的各类统计报表,如游戏付费用户统计、社交网络的大V排名、电商应用的热度商品等。数据来源主要是平台业务数据。安全审计出于平台安全和商业利益方面的考虑,

安全审计

主要关注异常访问、无效访问、欺诈用户等方面。数据来源包括用户打点数据和系统日志。

运营分析

运营分析主要面向业务相关团队或产品运营人员,需要灵活支持不确定的逻辑和模型,并可以快速返回结果,通过即时、多维的平台数据挖掘来优化产品设计或运营 。数据来源包括上面三个场景的结果,以及平台业务数据。行为分析行为分析可以基于策略或规则,也可以基于机器学习。然后,平台根据用户行为分析的结果,结合用户上下文做出推荐。数据来源主要是平台业务数据。 

 3 解决方案

移动应用的数据分析主要包含数据的收集、存储、处理和分析4个阶段,同时具有离线和实时两个维度。AWS服务对各个阶段的支持,如图1所示。Amazon S3

大数据专栏|移动应用的大数据分析
Amazon Simple Storage Service(Amazon S3)属于对象存储,通过HTTP(S)方式存取,支持权限设置,数据持久性达99.999999999%,在数据分析的整个生命周期中作为“数据湖”(Data Lake)。如果使用Amazon EMR运行Spark或Hive,Amazon S3可以用来替换HDFS。
大数据专栏|移动应用的大数据分析

图1 AWS服务对各个阶段的支持

Amazon Kinesis

大数据专栏|移动应用的大数据分析

Amazon Kinesis是完全托管的云服务,用于实时数据流的收集。通过Amazon Kinesis Client Library(KCL),应用程序可以读取流数据来完成数据的实时展示,也可以将数据发送到其他模块或服务中,如Amazon Simple Storage Service(Amazon S3)和Amazon Elastic Map Reduce(Amazon EMR)。此外,Amazon Kinesis Firehose可以通过完全托管的方式,将Kinesis数据推送到Amazon S3或Amazon Redshift。

Amazon DynamoDB

大数据专栏|移动应用的大数据分析

Amazon DynamoDB是完全托管的NoSQL数据库服务,性能按需配置,并能无缝扩展。Amazon DynamoDB可自动将表的数据和流量分布到足够多的服务器中,以提供指定的请求容量和数据存储量,同时保障个位数毫秒级的响应。

Amazon RDS

大数据专栏|移动应用的大数据分析

Amazon Relational Database Service(Amazon RDS)是关系型数据库服务,支持设置、操作和扩展的自动化。Amazon RDS提供的数据库引擎包括Amazon Aurora、Oracle、Microsoft SQL Server、PostgreSQL、MySQL和MariaDB。

AWS Lambda

大数据专栏|移动应用的大数据分析

AWS Lambda是无服务器计算(Serverless Computing)服务,可运行代码来响应事件。同时AWS为用户自动管理底层计算资源。Lambda可以通过事件驱动(Event-Driven)的方式,更加高效地实现模块或服务之间的数据交互。

Amazon EMR

大数据专栏|移动应用的大数据分析

Amazon EMR是云上的Hadoop平台,通过EMR的图形化或命令行接口,用户可以快速搭建和部署基于Amazon EC2实例的Hadoop平台,并能动态扩展集群。Amazon EMR支持Hive、Pig、Spark、Presto、Hue、HBase等常见组件,并可以读写其他AWS数据存储服务,例如Amazon S3和Amazon DynamoDB。

Amazon Redshift

大数据专栏|移动应用的大数据分析

Amazon Redshift是一个完全托管的PB级数据仓库服务,基于PostgreSQL 8.0.2构建,提供JDBC和ODBC接口,因此可以兼容现有的各类BI软件。Amazon Redshift内部是一个MPP集群,基于列式存储,提供了有效的数据压缩和冗余,要求导入数据必须为结构化数据。

Amazon Machine Learning

大数据专栏|移动应用的大数据分析
Amazon Machine Learning提供可视化的工具和向导来创建机器学习模型,支持通过API让应用程序获得预测能力,同时无需管理任何基础设施。Amazon Machine Learning采用与Amazon内部数据科学家社区多年来一直使用的机器学习技术相同的技术,具有稳定可靠、容易扩展的特点。Amazon Machine Learning具有极强的可扩展性,每天可以生成数十亿条预测结果,并以高吞吐量实时地将其送出。

一个典型大数据平台的架构如图2所示,覆盖多种数据来源,集成实时和离线分析,并通过Lambda实现事件驱动和定时任务。

大数据专栏|移动应用的大数据分析

图2 典型大数据架构

数据来源

移动客户端上传实时数据到Amazon Kinesis时,需要通过Amazon Simple Token Service(STS)获取相应权限的Token,以便正常读写。或者,移动客户端使用SDK,通过Amazon Cognito服务来获取能够访问Kinesis服务的Identity。

EC2服务器上传服务器日志到Kinesis,可以在服务器上安装Kinesis Agent来监控指定的日志文件,当日志文件有更新时,Kinesis Agent会将增量更新以数据流的方式写入到Kinesis。关于访问Kinesis的权限,建议EC2服务器以IAM Role的方式运行,避免静态绑定Access Key和Secret Key。EC2服务器上的平台应用上传业务数据到Kinesis,可以使用API/SDK或KPL(Kinesis Producer Library)实现。同样,EC2服务器以IAM Role的方式运行。

实时数据收集

Amazon Kinesis是实时数据收集的核心服务,完全托管,无缝扩展,可以省去自己搭建Kafka等流数据平台的运维工作。其关键概念如下。

分 片

分片是Amazon Kinesis流的基本吞吐量单位。一个分片的吞吐量为每秒输入1MB数据和每秒输出2MB数据,并且每秒最多可支持1000个PUT记录。需要在创建流时指定所需的分片数量。例如,可以创建具有两个分片的流。此流的吞吐量为每秒输入2MB数据和每秒输出4MB数据,并且每秒最多支持2000个PUT记录。通过重新分片,您可以根据数据吞吐量的变化,在流中动态添加分片或从中移除分片。

数据记录

记录是存储在Amazon Kinesis流中的单位数据。记录由序列号、分区键和数据Blob组成。数据Blob是数据创建器向流中添加的相关数据,大小上限(Base64编码后的数据负载)为1MB。

分区键

分区键用于分离出数据记录,并将其路由至到流的不同分片。您的数据创建器是在将数据添加到Amazon Kinesis流时指定分区键。例如,假设您的Amazon Kinesis流有两个分片(分片1和分片2)。您可以将数据创建器配置为使用两个分区键(键A和键B),将所有带键A的数据记录添加到分片1中,并将所有带键B的数据记录添加到分片2中。

序列号

序列号是各个数据记录的唯一标识符。当数据创建器调用PutRecord或PutRecords API向Amazon Kinesis流添加数据时,Amazon Kinesis会分配序列号。同一分区键对应的序列号通常会随着时间的推移而逐渐增加;各个PutRecord或PutRecords请求之间的间隔时间越长,序列号就会越大。

数据存储

业务数据存储使用Amazon DynamoDB和Amazon RDS服务,日志数据存储使用Amazon S3服务,EMR集群可以通过emrfs来访问Amazon S3。Kinesis Firehose可以将目标设置为Amazon S3,将收到的数据流无缝存储到Amazon S3。此外,当Kinesis Firehose将目标设置为Amazon Redshift,将数据流写入Amazon Redshift数据仓库时,其实也是将数据先写入Amazon S3,然后调用Amazon Redshift的COPY命令加载数据。

实时分析

Spark作为实时分析平台,可以根据用户上下文,基于MLLib实现协同过滤,实时给出推荐。图2中的实时分析采用了Spark,运行在EMR集群上。Spark支持从Kinesis读取数据,通过KCL(Kinesis Client Library)简化代码编写。KCL会创建DynamoDB Table来维护状态信息。

离线分析

Hive作为常见的数据聚合工具,可以聚合非结构化数据,统计每日新增用户数、每日活跃用户数等指标,并能够将大量不同来源的数据处理为针对不同场景的不同类型的数据,如BI分析的结构化数据、报表查询的结构化数据、业务相关的半结构化数据等。图2中,对Amazon S3上日志文件的离线分析采用Hive,运行在EMR集群上,同时,EMR支持通过Hive命令读写DynamoDB。Hive一般用于批处理作业,不会常驻运行。EMR集群通过Lambda定时任务的方式被创建,并通过定时任务中的命令行参数装载Hive组件,对Amazon S3上的日志数据进行处理后,通过事件驱动的方式激活Lambda中的验证程序,确认结果有效后销毁EMR集群。图2中Amazon Redshift属于结构化数据仓库,可以通过COPY命令装载经过Hive聚合的数据文件(如CSV等),同时,也可以通过Kinesis Firehose接受实时数据文件。与基于MapReduce任务的Hive不同,Amazon Redshift是高性能的MPP架构,并支持Postgre SQL接口,因此非常适合与BI工具或产品运营工具结合,实现即时数据统计和多维分析。 

4案例分享

Redfin是一家住宅类房产公司,提供在线房产信息和中介服务。公司成立于2004年,总部位于美国华盛顿州的西雅图。用户可以通过移动应用完成房产搜索、预约看房、出价等环节,并可以在房屋详情中查看房屋所在区域的销售情况、平均价格、成交参考建议等。大数据分析是Redfin平台的一大亮点,架构分享如图3所示。

大数据专栏|移动应用的大数据分析

图3 Redfin 大数据平台构架图

Redfin的大数据平台也包含了批处理和实时流处理两个方面。图3中的蓝色模块组成了批处理的业务逻辑,原始数据产生后存储到Amazon S3,然后通过按需调用Amazon EMR进行数据聚合,值得一提的是,Redfin的平台上没有一个EMR是常驻的,EMR在运算完成之后会将结果写入Amazon S3,然后销毁集群。同时,Redfin通过采用Amazon EC2竞价实例,大大降低了EMR集群的成本。基于EMR运算结果,批处理程序再将数据装载到商务智能分析(Amazon Redshift)、市场推广、在线业务(Amazon DynamoDB)等平台中。图3中的绿色模块组成了实时流处理,对房产信息、平台用户操作等事件进行实时处理。数据从服务器以事件流的形式发送到Amazon SQS和Amazon Kinesis,实时处理程序通过SDK获取事件,并结合Amazon DynamoDB中的统计数据,在网站的在线业务平台完成A/B对比测试、定制内容、市场推广等功能。

感谢大家阅读由大数据培训机构分享的“大数据专栏|移动应用的大数据分析”希望对大家有所帮助,更多精彩内容请关注大数据培训官网

免责声明:本文由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除

预约申请免费试听课

上一篇:大数据系统架构分析-实时用户数据采集与分析系统实践
下一篇:如何向妈妈解释大数据分析?厨房里的数据分析

你真的理解了MVC, MVP, MVVM吗?

Spring中定时器实现

Servlet请求和响应

Spring AOP 的实现机制

选择城市和中心
贵州省

广西省

海南省