写点什么

大数据应用

用户头像
garlic
关注
发布于: 2020 年 12 月 20 日
大数据应用

大数据计算引擎 Spark


Spark vs Hadoop



  1. Spark 多个处理过程阶段:通过 DAG 将一个复杂作业切分程多阶段计算过程

hadoop 处理阶段 map,reduce 两个阶段

  1. spark 可以通过内存存储中间计算结果, hadoop 每一个处理过程中间结果存放 hdfs;

  2. 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 两种函数 :

  1. 转换函数:调用以后得到的还是一个 RDD

  2. 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 损失函数

  • 平方损失函数

  • 绝对损失函数

  • 对数损失函数等

   引入模型复杂度防止函数过于复杂(过拟合)


机器学习的数学原理

机器学习要从假设空间寻找最优函数,而最优函数就是使样本数据的函数值和真实值距 离最小的那个函数。数学上求极小值就是求一阶导数,计算每个参数的一阶导数为零的偏微分方程组,就可 以算出最优函数的参数值。这就是为什么机器学习要计算偏微分方程的原因。


感知机


感知机算法的实现过程:

  1. 选择初始值 w0,b0。

  2. 在样本集合中选择样本数据 xi,yi。

  3. 如果 yi(w⋅xi+b)<0,表示 yi 为误分类点,那么 w=w+ηyixi、b=b+ηyi,在梯度方向校 正 w 和 b。其中 η 为步长,步长选择要适当,步长太长会导致每次计算调整太大出 现震荡;步长太短又会导致收敛速度慢、计算时间长。

  4. 跳转回 2,直到样本集合中没有误分类点, 即全部样本数据 yi(w⋅xi+b)≥0。


神经网络


参考及引用


架构师训练营作业-李智慧老师相关讲义

Photo by Lisa Fotios from Pexels


用户头像

garlic

关注

还未添加个人签名 2017.11.15 加入

还未添加个人简介

评论

发布
暂无评论
大数据应用