大数据应用
大数据计算引擎 Spark
Spark vs Hadoop
Spark 多个处理过程阶段:通过 DAG 将一个复杂作业切分程多阶段计算过程
hadoop 处理阶段 map,reduce 两个阶段
spark 可以通过内存存储中间计算结果, hadoop 每一个处理过程中间结果存放 hdfs;
RDD 的编程模型更简单。
算法也存在特殊性
编程模型 RDD
弹性分布式数据集 RDD (Resilient Distributed Datasets)
MapReduce: 过程处理:map,reduce 两个阶段处理
Spark: 数据抽象程 RDD,RDD 之间的转换,完成结算
窄依赖 vs 宽依赖: 是否进行 shuffle
窄依赖数据内容改变分片结构不改变
宽依赖产生新的 RDD 分片, 数据在会从原有 RDD 到新的 RDD
惰性计算
当物理上没有生成一个新的 RDD 上, 不会执行操作,只有到执行 shuffle 的时候才进行计算。
Spark 的计算过程
当 spark 进行计算是遇到 shuffle 做为一个新的计算阶段,如使用 groupby ,join 的操作, 各个阶段内则包含,map,union,由于不会产生 shuffle 会包含在一个计算阶段内。
rddB = rddA.groupBy(key)
rddD = rddC.map(key)
rddF = rddD.union(rddE)
rddG = rddB.join(rddF)
这些计算阶段组成有向无环图, DAG,根据计算分片提交给对应的计算进程, 计算进程完成分片的计算任务, 进行 shuffle 传给一组新的计算进程完成。
DAGScheduler 根据代码生成 DAG, 将程序分发到分布计算计算, 按照计算阶段的先后调度执行。
Spark 的作业管理
RDD 两种函数 :
转换函数:调用以后得到的还是一个 RDD
action 函数:调用以后不反悔 RDD
DAGScheduler 遇到 shuffle 生成一个计算阶段, 遇到 action 函数时生成一个作业(job), 针对每个 RDD 创建一个计算任务 task, 每个任务有一个 job
Spark 的执行过程
Spark 支持 Standalone、Yarn、Mesos、Kubernetes
应用运行在 Driver Program 进程上, 通过 SparkContext 完成 RDD 编程, 生成 DAG, 执行作业各个阶段
根据 DAG,启动第一批待处理任务, 根据数据分片量,计算需要多少个计算任务,
通过 Cluster Manager 调度计算资源, CM 通知 WorkNode,
WorkNode 检查各自的计算资源(CPU, 内存)。 WorkNode 反馈相关计算资源到 Driver Program。
DP 根据反馈的资源,发送相关数据分配,分配计算任务。
当 WorkNode 计算当前阶段完毕后反馈, DP 启动下一个计算阶段, WN 领取新的任务,完成下一个阶段计算
中间计算结果通过内存保存
Spark 的生态系统
流计算
Storm 实时的 Hadoop
低延迟
高性能
分布式
可伸缩
高可用
Nimbus: 负责资源分配和任务
Supervisor: 接收 Nimbus 分配的任务, 启动和停止属于自己的管理的 Worker 进程
Worker: 运行具体处理组件逻辑的进程
Task: Worker 中每一个 Spout /Bolt 的线程成为一个 Task
增加 Spark 说明
----
Spark Streaming
流处理转成小批处理
Flink
HiBench
HiBench 是 Intel 开放的一个 Hadoop Benchmark Suit,包含 9 个典型的 Hadoop 负载
Micro benchmarks
Sort
WordCount
TeraSort
HDFS benchmarks
DFSIO
Web search benchmarks
Nutch indexing
PageRank
Machine learning benchmarks
Mahout Bayesian classification
Mahout K-means clustering
Data analytics benchmarks
Hive Query Benchmarks
大数据分析和可视化
数据大屏
可视化的数据给人的视觉冲击, 更能吸引别人的注意,内正其心的同时要做到外正其容
互联网运营常用数据指标
新增用户数
用户留存率
用户流失率: 1- 用户留存率
活跃用户数
PV:用户每次点击每个页面跳转
GMV: 成交总金额
转化率: 有购买行为的用户数/总访问用户数
数据可视化图标与数据监控
折线图:可以查看用户量,订单交易量变化。
散点图:
热力图:
漏斗图: 显示访问用户路径每一步转换
打开->收索->详情->购买
机器学习
网页排名算法 PageRank
PageRank 核心思路:通过链接来进行投票,如果一个页面被其他页面引用, 在其他页面中有指向这个页面的超链接,说明这个页面更有价值。具体量化过程通过投票方式来完成。
B,C,D 都有指向 A 页面有链接, A 的连接数
分配除去各自的包含的超链接的个数:
漏洞:增加自己指向自己的链接可以增加 PR(A)的分数:
增加随机跳出。
增加一个 Dampling factor
网页的 PR 值之和为 N, 原始论文中所有网页的 PR 值之和为 1
再次抽象
集合中所有页面的 PR 值可以由一个特殊的邻接矩阵的特征向量表示
可以转化为下面的方程组的解:
MapReduce 实现;
分类聚类算法
KNN 分类算法
提取文本的特征值 TF-IDF 算法
贝叶斯分类算法
K-means 聚类算法
推荐引擎算法
基于人口统计的推荐
基于商品属性的推荐:根据同类商品进行推荐
基于用户的协同过滤推荐: 根据用户喜好商品判断他们是不是同类。
基于商品的协同过滤推荐: 根据商品维度喜好分类, 喜欢商品1也喜欢商品2,商品1,商品2是同类。
机器学习系统架构
样本
样本就是通常我们常说的“训练数据”,包括输入和结果两部分。
T=(x1,y1),(x2,y2),…,(xn,yn) 其中 xn 表示一个输入,比如一篇新闻;yn 表示一个结果,比如这篇新闻对应的类别。
模型
模型就是映射样本输入与样本结果的函数,可能是一个条件概率分布,也可能是一个决 策函数
算法
算法就是要从模型的假设空间中寻找一个最优的函数,使得样本空间的输入 X 经过该函 数的映射得到的 f(X),和真实的 Y 值之间的距离最小。
损失函数用来计算模型预测值与真实值的差距, 常用的有
0-1 损失函数
平方损失函数
绝对损失函数
对数损失函数等
引入模型复杂度防止函数过于复杂(过拟合)
机器学习的数学原理
机器学习要从假设空间寻找最优函数,而最优函数就是使样本数据的函数值和真实值距 离最小的那个函数。数学上求极小值就是求一阶导数,计算每个参数的一阶导数为零的偏微分方程组,就可 以算出最优函数的参数值。这就是为什么机器学习要计算偏微分方程的原因。
感知机
感知机算法的实现过程:
选择初始值 w0,b0。
在样本集合中选择样本数据 xi,yi。
如果 yi(w⋅xi+b)<0,表示 yi 为误分类点,那么 w=w+ηyixi、b=b+ηyi,在梯度方向校 正 w 和 b。其中 η 为步长,步长选择要适当,步长太长会导致每次计算调整太大出 现震荡;步长太短又会导致收敛速度慢、计算时间长。
跳转回 2,直到样本集合中没有误分类点, 即全部样本数据 yi(w⋅xi+b)≥0。
神经网络
参考及引用
架构师训练营作业-李智慧老师相关讲义
Photo by Lisa Fotios from Pexels
评论