写点什么

Week_13 总结

用户头像
golangboy
关注
发布于: 2020 年 12 月 20 日

大数据计算引擎 spark

spark 比 hadoop 快

  • spark 以有向无环图的方式将作业切分为多个阶段,计算过程连续。hadoop 只有 map 和 reduce 两阶段,执行完上一个 mapreduce 后才能执行下一个 mapreduce。

  • 中间计算结果,spark 优先使用内存,而 hadoop 写到磁盘上。

  • spark 的 rdd 编程模型更简单

spark 的单词计数

spark 单词计数示例

spark 单词计数的执行流程

spark 以 RDD(分布式弹性数据集 Resilient Distributed Datasets)为基础进行运算的。是对数据的进一步抽象。

RDD

一、将数据处理过程分为多个阶段:

  • hadoop 则只有两个阶段

  • spark 通过 rdd 的方式,定义为多个阶段,不同阶段的数据集,以 rdd 的方式进行计算转换


二、rdd 的计算函数,有两种

  • 转换(transformation)函数

  • map,filter,union,reduceByKey,join,groupByKey 等

  • 返回结果是一个 RDD

  • 动作(action)函数

  • 不返回 RDD

三、RDD 物理上的数据分片

  • (窄依赖,无 shuffle 操作)通过计算后,数据内容改变,但数据还在当前节点上,表示 rdd 进行了转换,没有生成新的 rdd

  • (宽依赖,有 shuffle 操作)通过计算后,如 reduce 操作,将不同分片 key 进行聚合,产生新的 rdd 分片


spark 作业管理

spark 的调度器遇到有 shuffle 操作时,生成新的计算阶段,遇到 action 动作时生成新的作业。

每个计算阶段包含多个计算任务,每个计算任务对应 RDD 里的一个数据分片,这些计算任务分布到不同节点上完成计算。


spark 执行过程如下图

应用提交 --> 准备执行环境 --> 调度任务执行任务 --> 返回结果


spark 生态体系

底层是 spark,之上有 sparksql 计算,流计算,机器学习,和图计算等,这些构成了 spark 的大数据计算的生态体系。

流处理计算

Storm

  • Storm(实时计算系统)

  • 低延迟

  • 高性能

  • 分布式

  • 可伸缩

  • 高可用

  • 对应 hadoop 概念

  • 流处理的处理过程(以实时车辆超速监控为例)

  1. 分布在不同地点的摄像采集设备,将采集到的信息写入到各节点的日志中

  2. 通过 storm 中定义的 spout 监控不同的日志文件,经过 bolt 阈值计算后,得到超速的车辆信息

  3. 然后将这些超速的车辆信息,通过 DBwriterBolt 写入数据库

代码示例如图

  • storm 应用场景

  • 实时日志处理

  • 实时统计

  • 实时风控

  • 实时推荐

  • storm 配合分布式存储服务一起使用。

  • 个性化搜索实时分析项目中的架构:timeTunnel+HBase+Storm+UPS,用户行为从产生到完成分析秒级延迟

Spark Streaming

spark streaming 是 spark 中用于流式计算的组件。原理是数据以流式传入,spark streaming 将一定时间内的数据组成一批,然后通过 spark 计算引擎,执行批计算

Flink

大数据基准测试

HiBench 由 intel 开源的大数据测试工具,用于验证大数据集群的处理能力

大数据分析与可视化

互联网运营常用指标

  • 新增用户数:日新增,周新增,月新增

  • 用户留存率

  • 活跃用户数

  • pv:网页访问统计

  • GMV:营业流水,反映营收能力

  • 转换率

数据可视化图表与数据监控

  • 折线图:通常展示时间维度上数据的变化规律

  • 散点图:展示数据分布规律与趋势

  • 热力图:展示热点区域的分布状态

  • 漏斗图:展示各业务流程转换分布规律

PageRank

网页排名

原理

  • 简述:页面 a 有指向页面 b 的链接,则表示 a 给 b 投票。依据投票数和投票目标的等级决定新的等级,经过多次迭代计算后,投票数趋于稳定,以此来决定排名顺序

  • 公式

分子是当前页面的 pagerank 值,分母是当前页面总的链接数。各页面 pagerank 值除以各页面总链接数之和,等于指向的目标页面的 pagerank 值。

  • 问题

页面中如果只有对自己的出链,会导致该页面 pagerank 不断增大,因此算法需要进行改进

  • 改进

引入概率系数,减弱自链接对 rangpage 的影响,增加其他页面跳转到该页面的概率

分类聚类算法

分类算法

在以知道分类类别的情况,通过判断数据特征,将一组数据分到不同的类别中

KNN

k 近邻算法

  1. 样本集合已经分类

  2. 待检测数据通过距离计算,得到最近的 k 个样本

  3. 判断这 k 个样本中,大部分归属于哪一类,则该数据就属于这一类别

数据距离算法
  • 欧式距离计算

特征值之间的距离长度


  • 余弦相似度

特征值之间的相似性,相关程度。算的是余弦夹角

特征值提取算法
  • TF-IDF

TF:词频,单词出现在文档中的频率


IDF:逆文档频率,单词在所有文档中的稀缺程度

TF-IDF 特征值

贝叶斯

  • 公式

在事件 A 发生的前提下,事件 B 发生的概率

  • 垃圾邮件识别

  1. 针对样本集,进行人工识别垃圾邮件

  2. 计算垃圾邮件与非垃圾邮件的概率

  3. 计算每个特征值在所有类别中的条件概率

  4. 待分类样本进入,提取特征值

  5. 将取得的所有特征值,代入贝叶斯公式进行计算,取最大的概率的类别为样本类别

聚类算法

在不知道类别的情况下,将数据分为几类

K-Means

  1. 随机从数据集中选取 k 个种子数据,表示要将数据集分为 k 类

  2. 计算所有数据到这个 k 个种子数据的距离,离某种子节点最近的距离表明,该数据属于这一类

  3. 对分好类的数据,进行计算,获取中心点

  4. 重复计算所有数据到相应中心点的距离,直到中心点不在移动。此时每个中心点附近的数据就是一类

推荐引擎算法

基于人口统计的推荐

对喜欢同一件商品的,不同的用户,针对用户的特征,向相同特征的用户推送该商品

基于商品属性的推荐

针对商品类别进行推荐,商品属于某一类,用户在浏览相关商品时,推荐同一类的商品

基于用户的协同过滤推荐

不同用户喜欢商品 A 的同时,也喜欢商品 B。当有用户浏览商品 A 时,认为该用户也属于这一类,于是将 B 也推荐给该用户

基于商品的协同过滤推荐

很多用户喜欢商品 A 的时候,也喜欢商品 B。为浏览商品 A 的用户,推荐商品 B

机器学习与神经网络

机器学习

原理

  1. 样本数据 + 学习算法 = 数据模型

  2. 预测数据 + 预测系统 + 数据模型 = 预测结果

通过计算,确定样本输入与样本结果之间的映射关系 f(x)。

f(x)中根据输入与输出,确定函数的相关参数

算法

要确定 f(x)的参数空间是否是最合适的,即如何保证参数空间的最优解,需要有相应的机制来评估是否是最优。评估机制在这里定义为损失函数,用来计算模型预测值与真实值的差距。

常用损失函数
  • 0-1 损失函数

  • 平方损失函数

给定一个样本集

每个样本的损失函数求和平均值,称为经验风险

在样本集足够大的情况下,只要判定使经验风险最小的 f(x)函数就是模型的最优解。

由于样本是有限的,模型拟合的过程中会出现过拟合的情况,为了防止这种情况,引入结构风险

结构风险 = 经验风险 + a * 模型复杂度

因此,判断是否是最优解,转换为结构风险的最小值的计算。

  • 绝对损失函数

  • 对数损失函数

数学原理

在给定模型的情况下,寻找结构风险最小的函数表达式,这就是机器学习算法根本

求解极小值就是要解一阶导数为 0 点,因此,每个参数的确定就是计算各参数的一阶导数为零的偏微分方程,进而得到最优函数参数。

感知机示例

  1. 确定感知机模型 f(x) = sign(w*x+b)

  2. 构建损失函数

  1. 使用梯度下降算法迭代计算更新 w 和 b,直到使损失函数降到零为止,取得模型参数

神经网络

以感知机为基础,构建感知机的网络,通过输入样本的特征值,在多层感知机网络中,得到结果

用户头像

golangboy

关注

还未添加个人签名 2018.09.18 加入

还未添加个人简介

评论

发布
暂无评论
Week_13 总结