大数据架构 & 数据应用 / 分析 & 机器学习 (二)
随着近年来,信息技术迅猛发展,尤其以移动互联网、物联网等为代表的技术,通过各种终端设备收集大量的用户信息、操作行为等日志,数据的来源和数量正以前所未有的速度增长。可通过对这些数据进行分析、挖掘、机器学习,实现个性化营销、智能推荐等应用场景,为公司挖掘更多的商业价值,为用户带来更好的体验。
Spark
1. 生态体系
2. 特点
DAG切分的 多阶段计算过程更快速,也利于多次迭代计算;
使用内存存储中间计算结果,性能更高效;
RDD编程模型更简单;
3. RDD
弹性数据集(Resilient Distributed Datasets),即是编程模型,也是数据分片的存储单元。
编程模型
数据分片
4. 计算阶段
Spark可根据应用的复杂程度,分割更多的计算阶段stage,这些计算阶段组成一个DAG, 任务调度器可根据DAG依赖关系执行计算阶段。
用DAG图,切分成多个阶段,根据每个阶段要处理的数据量生成相应的任务集合taskset,每个任务分配一个任务进程去处理。负责DAG生成和管理的组件是DAGScheduler。 RDD代表一个数据集,每个RDD里面包含多个小块,每个小块代表RDD的一个分片。
计算阶段划分的依据是shuffle,遇到shuffle时,会生成一个计算阶段,不是转换函数的类型。如下图:
5. 作业管理
RDD函数有两种:
转换函数:调用后还是一个RDD, RDD计算逻辑主要通过转换函数完成;
action函数:调用后不再返回RDD,如count(), saveAsTextFile(path),遇到一个action函数操作后,会生成一个作业job;
6. 执行过程
Spark支持standalone, Yarn, Mesos, K8s等多种部署方案,都一样,只是不同组件角色命名,核心功能和运行流畅都差不多。
i) spark应用程序启动在自己JVM进程里(Driver进程),启动后调用sparkContext初始化执行配置和输入数据,启动DAGScheduler构造执行DAG图,切分成最小的执行单元(计算任务);
ii) Drive向Cluster Manager请求计算资源,将Driver的主机地址等信息通知给集群的所有计算节点Worker;
iii) Worker与Driver通信并注册,然后根据自己的资源情况向Driver通报自己可以领用任务数,根据DAG向Worker分配任务;
iv) Worker收到任务后,启动Executor进程开始执行任务。先检查有Driver的执行代码没,如果没有,从Driver下载执行代码,通过Java反射加载后开始执行。
实时流计算
1. Strom
实时的Hadoop,具有特点:低延迟、高性能、分布式、可伸缩、高可用。
i) 基本概念:
Nimbus: 类似Hadoop JobTracker, 负责资源分配和任务调度;
Supervisor:类似Hadoop TaskTracker,负责接受Nimbus分配的任务,启动/停止自己管理的worker进程;
Worker:类似Hadoop Child, 运行具体处理组件逻辑的进程;
Task: Worker中每一个Spout/Bolt的线程称为一个Task;
Topology:类似Hadoop Job, storm中运行的一个实时应用程序;
Spout: 类似Hadoop Map, 从外部数据源中读取数据,然后转换为Topology内部的源数据。是主动角色;
Bolt:类似Hadoop Reduce, 可执行过滤、函数操作、合并、写数据库等任何操作。是被动角色;
Tuple: 一次消息传递的基本单元,是一个value list;
Stream: 源源不断传递tuple就组成了stream。
ii) Stream Groupings
定义了一个流在Bolt任务间该如何被切分。storm有6个stream grouping类型:
随机分组:随机分发,保证每个任务获取相同数量的tuple
字段分组:指定字段分割数据流
全部分组:tuple被复制到Bolt的所有任务
无分组:不需要关心流如何分组
直接分组:tuple生产者决定tuple由哪个tuple处理这接收
自定义分组
iii) 应用场景
实时日志处理:实时统计、实时风控、实时推荐
2. Spark Streaming
使用微批处理实现实时数据处理
3. Flink
与Spark Streaming类型,架构图如下:
4. 大数据平台的验证工具
HiBench是一个大数据基准测试套件,可帮助评估大数据框架的速度,吞吐量和系统资源利用率。
数据分析&数据可视化
1. 互联网运营常用数据指标
新增用户数:一个产品不同的发展期间,有不同的关注点,统计的口径有多种方式;
用户留存率:用户留存率=留存用户数/当前新增用户数, 用户流失率=1-用户留存率;
活跃用户数:打开使用磁盘的用户数包含:日活跃用户数、月活跃用户数等;
PV:Page View ,用户每次点击,每个页面跳转称为一个PV;
GMV:成交总金额 Gross Merchandise Volume;
转化率:产生购买行为的用户与访问用户之比, 转化率=有购买行为的用户数/总访问用户数;
2. 数据可视化/监控
折线图:展示时间维度上的数据变化规律
散点图:可有效快速发现数据分布上的规律与趋势,也称为肉眼聚类算法
热力图:分析网站页面被用户访问的热点区域
漏斗图:用户再访问路径中每一步转化
大数据算法&机器学习
1. 网页排名算法 PageRank
参考:https://xie.infoq.cn/article/1998be41b1b6b86abce4f9aca
2. KNN分类算法
对一个需分类的数据,将其和一组已分离标注好的样本集合进行比较,得到距离最近的K个样本,K个样本最多归属的类别,就是这个需分类数据的类别。
计算距离的计算公式:
3. TF-IDF算法
其实就是看这个特征是不是具有发散性,也就是方差比较大的特征效果比较好。
4. K-means聚类算法
算法可分为:分类、聚类两种。
i) 随机选两个种子点
ii) 计算所有点与种子点的距离, 离的近的分为一个组;
iii) 在各组中求中心点,迭代ii) iii) 步,直到分组中中心点不再移动,聚类完成。
5. 推荐算法
可分为以下几种:
基于人口统计的推荐:具有用户的画像进行分类,然后对同一类的用户推荐该商品;
基于商品属性的推荐:对商品进行分类,然后对用户进行相同类商品的推荐;
基于用户协同过滤推荐:同类用户,也可能喜欢同类用户中其他用户喜欢的商品;
基于商品的协同过滤推荐:同类商品,也可能喜欢同类商品中其他用户喜欢的商品;
6. 机器学习
i) 系统架构
ii) 概念
样本:常说“训练数据”,包含输入、结果两部分。
模型:映射样本输入与样本结果的函数,可能是一个条件概率分布,也可能是一个决策函数。所有可能的函数构成了模型的假设空间,y=ax+b, 参数的取值空间,称为参数空间。
算法:从假设空间中寻找一个最优的函数,使得样本空间的输入X经过函数的映射得到f(x)和真实Y值之间的距离最小。这个最优解通常没有解析解,需要用数值计算的方法不断迭代求解。如何寻找到f函数的全局最优解,使得寻找过程尽量高效,就构成了机器学习的算法。就是损失函数最小值,就是一阶导数为0,也就是多参数的偏导数为0,转换成求微分方程组,一般无法得到解析解,只能用数值分析找到数值解,方法有:有限元的方法、数值逼近、插值方法。
为了损失函数最小,校验风险就是最小;但同时存在结构风险,也就是模型太复杂。
iii) 感知机
感知机是一种比较简单的二分类模型,模型如下:
损失函数为:
用统计求和函数表示,无法计算解析解。可采用梯度下降发求损失函数的极小值,就是求导过程的数值计算方法。使用梯度下降更新w,b ,不断迭代使得损失函数不断减小,直到为0。
iv) 神经网络
模拟人脑的神经元,构建神经网络结构。
使用感知机构建的简单的深度学习神经网络
版权声明: 本文为 InfoQ 作者【dony.zhang】的原创文章。
原文链接:【http://xie.infoq.cn/article/52a58fca94e935caf22327ad1】。文章转载请联系作者。
评论