Categories
程式開發

大数据架构&数据应用/分析&机器学习(二)


随着近年来,信息技术迅猛发展,尤其以移动互联网、物联网等为代表的技术,通过各种终端设备收集大量的用户信息、操作行为等日志,数据的来源和数量正以前所未有的速度增长。可通过对这些数据进行分析、挖掘、机器学习,实现个性化营销、智能推荐等应用场景,为公司挖掘更多的商业价值,为用户带来更好的体验。

Spark

1. 生态体系

大数据架构&数据应用/分析&机器学习(二) 1

2. 特点

DAG切分的 多阶段计算过程更快速,也利于多次迭代计算;使用内存存储中间计算结果,性能更高效;RDD编程模型更简单;

3. RDD

弹性数据集(Resilient Distributed Datasets),即是编程模型,也是数据分片的存储单元。

编程模型数据分片

大数据架构&数据应用/分析&机器学习(二) 2

4. 计算阶段

Spark可根据应用的复杂程度,分割更多的计算阶段stage,这些计算阶段组成一个DAG, 任务调度器可根据DAG依赖关系执行计算阶段。

大数据架构&数据应用/分析&机器学习(二) 3

用DAG图,切分成多个阶段,根据每个阶段要处理的数据量生成相应的任务集合taskset,每个任务分配一个任务进程去处理。负责DAG生成和管理的组件是DAGScheduler。 RDD代表一个数据集,每个RDD里面包含多个小块,每个小块代表RDD的一个分片。

计算阶段划分的依据是shuffle,遇到shuffle时,会生成一个计算阶段,不是转换函数的类型。如下图:

大数据架构&数据应用/分析&机器学习(二) 4

5. 作业管理

RDD函数有两种:

转换函数:调用后还是一个RDD, RDD计算逻辑主要通过转换函数完成;action函数:调用后不再返回RDD,如count(), saveAsTextFile(path),遇到一个action函数操作后,会生成一个作业job;

6. 执行过程

Spark支持standalone, Yarn, Mesos, K8s等多种部署方案,都一样,只是不同组件角色命名,核心功能和运行流畅都差不多。

大数据架构&数据应用/分析&机器学习(二) 5

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中运行的一个实时应用程序;

大数据架构&数据应用/分析&机器学习(二) 6

Spout: 类似Hadoop Map, 从外部数据源中读取数据,然后转换为Topology内部的源数据。是主动角色;

大数据架构&数据应用/分析&机器学习(二) 7

Bolt:类似Hadoop Reduce, 可执行过滤、函数操作、合并、写数据库等任何操作。是被动角色;

大数据架构&数据应用/分析&机器学习(二) 8

Tuple: 一次消息传递的基本单元,是一个value list;Stream: 源源不断传递tuple就组成了stream。

大数据架构&数据应用/分析&机器学习(二) 9

ii) Stream Groupings

定义了一个流在Bolt任务间该如何被切分。storm有6个stream grouping类型:

随机分组:随机分发,保证每个任务获取相同数量的tuple字段分组:指定字段分割数据流全部分组:tuple被复制到Bolt的所有任务无分组:不需要关心流如何分组直接分组:tuple生产者决定tuple由哪个tuple处理这接收自定义分组

iii) 应用场景

实时日志处理:实时统计、实时风控、实时推荐

2. Spark Streaming

使用微批处理实现实时数据处理

大数据架构&数据应用/分析&机器学习(二) 10

3. Flink

与Spark Streaming类型,架构图如下:

大数据架构&数据应用/分析&机器学习(二) 11

4. 大数据平台的验证工具

HiBench是一个大数据基准测试套件,可帮助评估大数据框架的速度,吞吐量和系统资源利用率。

数据分析&数据可视化

1. 互联网运营常用数据指标

新增用户数:一个产品不同的发展期间,有不同的关注点,统计的口径有多种方式;用户留存率:用户留存率=留存用户数/当前新增用户数, 用户流失率=1-用户留存率;活跃用户数:打开使用磁盘的用户数包含:日活跃用户数、月活跃用户数等;PV:Page View ,用户每次点击,每个页面跳转称为一个PV;GMV:成交总金额 Gross Merchandise Volume;转化率:产生购买行为的用户与访问用户之比, 转化率=有购买行为的用户数/总访问用户数;

2. 数据可视化/监控

折线图:展示时间维度上的数据变化规律散点图:可有效快速发现数据分布上的规律与趋势,也称为肉眼聚类算法热力图:分析网站页面被用户访问的热点区域漏斗图:用户再访问路径中每一步转化

大数据算法&机器学习

1. 网页排名算法 PageRank

参考:https://xie.infoq.cn/article/1998be41b1b6b86abce4f9aca

2. KNN分类算法

大数据架构&数据应用/分析&机器学习(二) 12

对一个需分类的数据,将其和一组已分离标注好的样本集合进行比较,得到距离最近的K个样本,K个样本最多归属的类别,就是这个需分类数据的类别。

计算距离的计算公式:

大数据架构&数据应用/分析&机器学习(二) 13

3. TF-IDF算法

大数据架构&数据应用/分析&机器学习(二) 14

大数据架构&数据应用/分析&机器学习(二) 15

大数据架构&数据应用/分析&机器学习(二) 16

其实就是看这个特征是不是具有发散性,也就是方差比较大的特征效果比较好。

4. K-means聚类算法

算法可分为:分类、聚类两种。

大数据架构&数据应用/分析&机器学习(二) 17

i) 随机选两个种子点

ii) 计算所有点与种子点的距离, 离的近的分为一个组;

iii) 在各组中求中心点,迭代ii) iii) 步,直到分组中中心点不再移动,聚类完成。

5. 推荐算法

可分为以下几种:

基于人口统计的推荐:具有用户的画像进行分类,然后对同一类的用户推荐该商品;基于商品属性的推荐:对商品进行分类,然后对用户进行相同类商品的推荐;基于用户协同过滤推荐:同类用户,也可能喜欢同类用户中其他用户喜欢的商品;基于商品的协同过滤推荐:同类商品,也可能喜欢同类商品中其他用户喜欢的商品;

6. 机器学习

i) 系统架构

大数据架构&数据应用/分析&机器学习(二) 18

ii) 概念

样本:常说“训练数据”,包含输入、结果两部分。模型:映射样本输入与样本结果的函数,可能是一个条件概率分布,也可能是一个决策函数。所有可能的函数构成了模型的假设空间,y=ax+b, 参数的取值空间,称为参数空间。算法:从假设空间中寻找一个最优的函数,使得样本空间的输入X经过函数的映射得到f(x)和真实Y值之间的距离最小。这个最优解通常没有解析解,需要用数值计算的方法不断迭代求解。如何寻找到f函数的全局最优解,使得寻找过程尽量高效,就构成了机器学习的算法。就是损失函数最小值,就是一阶导数为0,也就是多参数的偏导数为0,转换成求微分方程组,一般无法得到解析解,只能用数值分析找到数值解,方法有:有限元的方法、数值逼近、插值方法。为了损失函数最小,校验风险就是最小;但同时存在结构风险,也就是模型太复杂。

iii) 感知机

感知机是一种比较简单的二分类模型,模型如下:

大数据架构&数据应用/分析&机器学习(二) 19

大数据架构&数据应用/分析&机器学习(二) 20

损失函数为:

大数据架构&数据应用/分析&机器学习(二) 21

用统计求和函数表示,无法计算解析解。可采用梯度下降发求损失函数的极小值,就是求导过程的数值计算方法。使用梯度下降更新w,b ,不断迭代使得损失函数不断减小,直到为0。

iv) 神经网络

模拟人脑的神经元,构建神经网络结构。

大数据架构&数据应用/分析&机器学习(二) 22

大数据架构&数据应用/分析&机器学习(二) 23

使用感知机构建的简单的深度学习神经网络

大数据架构&数据应用/分析&机器学习(二) 24