写点什么

「架构师训练营 4 期」 第十三周 - 001&2

用户头像
凯迪
关注
发布于: 2021 年 04 月 04 日

作业一:

(至少完成一个)

  • 你所在的行业,常用的数据分析指标有哪些?请简述。

  • Google 搜索引擎是如何对搜索结果进行排序的?(请用自己的语言描述 PageRank 算法。)

作业二:

  • 根据当周学习情况,完成一篇学习总结


答题一

题目一


  • 你所在的行业,常用的数据分析指标有哪些?请简述。


以电商为例,日常分析的指标内容包括但不限于如下

  • 用户数据指标

  • 新增用户

  • 活跃用户

  • 留存用户

  • 行为数据指标

  • PV(次数)

  • UV(人数)

  • 转发率

  • 转换率

  • K 因子

  • 商品数据指标

  • 成交总额

  • 成交总量

  • 人均付费

  • 人均时长

  • 付费率

  • 复购率

  • 热销商品

  • 好评/差评商品


题目二

  • Google 搜索引擎是如何对搜索结果进行排序的?(请用自己的语言描述 PageRank 算法。)


整体思路:让链接来进行投票,即 A 页面能够跳转 B 页面,就是 A 页面给 B 页面投了票,再根据页面本身的重要性确定得票数,通过递归算法可以计算出一个页面的重要程度和得分,即可确定页面等级。


第一步,投票得分计算:通过 N 单位互相投票,各个单位的 PR 分数为 PR(N),那么对于假如需要计算 PR(A),已知跟他相连的 PR(N),已经每个单位包含的链接数量 L(N),那么可以得出 (吐个槽,公式太难打)

PR(A) = PR(1)/L(1) + …… + PR(N)/L(N)


第二步,引入随机因子,为了避免一个网页只包含自己的链接,这样子一个递归计算会导致这个网页的 PR 无穷大,所以引入了随机值 d 来跳转到其他的随机网页,这样子假设总网页数量为 N,链接跳转到 X 网页的数量为前 M 个,可以得出公式

PR(X) = (1-d)/N + d*PR(1)/L(1) + …… +d*PR(M)/L(M)


第三步,对于整个网站,或者说我们记录跳转算分数的 N 个网站,每个网站的 PR 定义为 R,可以通过如下公示表示(请原谅我盗图,infoq 里面矩阵没法打。。。。)

公式就展示为


答题二

大数据计算引擎 Spark

Spark 特点(比 hadoop 更快)

  • DAG 切换成多阶段计算过程

  • 使用内存存储

  • RDD 编程模型更加简单

Spark 编程示例

不做赘述

RDD 编程模型

RDD 是 Spark 的核心概念,是弹性分布式数据集(Resilient Distributed Datasets)

从 MapReduce 到 Spark 也是从面向过程编程到面向对象编程的一种转换,对于 Spark 来说所有的操作都是 RDD 对象的转换和操作,根据新 RDD 结构进行处理。


作为数据集合中的数据切片,RDD 操作会有两种结果,第一种是窄依赖,RDD 操作在之前的分片上,也不会产生新的分片,仅仅是分片的方式进行了转换;第二种是宽依赖会产生新的分片,例如 reduceByKey 来自不同宕分片宕相同的 key 需要聚合操作,这样子会产生新的分片。

Spark 作业计算

spark 根据就按宕复杂度分割成为多个计算阶段(stage),这些阶段组成有向无环图 DAG,然后根据 DAG 进行执行。

  • 阶段一:RDDA 操作产生 RDDB

  • 阶段二:RDDC 窄依赖操作成为 RDDD,RDDD 和 RDDD 经过 union 产生 RDDF

  • 阶段三:RDDB 与 RDDF 进行 join 后产生 RDDG


代码实现及阶段依赖

编排方式:通过 DAGScheduler 根据代码关系生成 DAG,DAG 依赖于是否产生 shuffle 进行阶段分割,然后把阶段的任务产生任务集合(TaskSet),每个任务分配一个任务进程赉实现分布式计算。

Spark 作业管理

转换函数:RDD 之间转换实现 RDD 之间宕的计算逻辑

action 函数 : 作业 RDD 不产生新的 RDD


image.png


Spark 执行过程

  • 应用启动在 Driver Program,通过 SparkContext 完成编程并生成有向无环图

  • 根据阶段启动待处理任务确定需要计算任务,跟 Cluster Manager 通信并申请计算任务(进程)

  • Cluster manager 跟 Worker Node 通信获取资源情况,确定可分配任务数量

  • Cluster Manager 分发任务到不同的 Worker Node,然后 Node 启动 Executor 进行任务执行

  • 执行完毕返回计算结果并继续执行后续任务


Spark 生态

  • Spark:核心计算引擎,迭代版本 MapReduce

  • SparkSQL:类似 Hive

  • Spark Streaming:流计算,类似 Flink

  • MLlib:机器学习

  • Graphx:图计算


image.png


流计算技术

不同于批处理计算的小时或者是天级别的延时,对于 s 或者 ms 级别宕计算需求下,Flink Storm 和 Spark Streaming 实时大数据技术发展出来。


Strom

Storm 基本概念

下面是 Storm 和 Hadoop 的整个架构不同角色的对应关系。


image.png


Storm 计算框架


image.png


image.png


Storm 计算实例

对于超速宕数据记录到日志中,然后把日志数据通过流计算进行处理和计算。


topology:拓扑结构

Spout 监控文件输出,然后提交给 CalculatorBolt 进行计算处理(超速),交给 DBWriteBolt 进行写入。


Spout:源数据流组件

监听不同的数据文件进行实时监控,然后转换为内部数据传递给 Bolt


Bolt:计算组建

这里面有两个 Bolt 组建,一个是计算组建来确定是否超速,一个是写入组建对于计算之后的数据写入到数据库。

Spark Streaming 流计算

对比 Spark 相比,把 hdfs 作为数据源修改为流式数据(例如 file listenner 或者 kafka 队列投递),然后小的时间段(100ms 1s 等)缓存的数据作为小的批处理任务交给 Spark 进行处理,然后使用正常批处理的计算方式进行计算和输出。

Flink 流计算

Flink 是以流计算来作为批处理的支持,当批处理时间便很小就是批处理,同样的流处理的时间片很大就是批处理。架构方案的实现跟 Spark 是非常相似的。


大数据测试工具 HiBench


  • 大量数据构建

  • 常用算法测试

这里不做过多描述。

大数据分析与可视化

大数据之前说宕是基础的技术,这里面要讲的是数据的应用,主要是通过算法构建模型来进行数据的分析和应用。


大数据可视化


image.png

互联网运营常用数据指标

新增用户数

用户留存率

PV

GMV 总成交额

转化率=购买用户/总用户

网页排名算法 PageRank

思路:让链接来进行投票,即 A 页面能够跳转 B 页面,就是 A 页面给 B 页面投了一票,根据投票来计算分数。


分类与聚类算法

分类:一个数据分都某个类别里面

聚类:一大批数据分成几个类别

KNN 分类算法

K 近邻算法,目前已知分类完毕的一批样本,计算需要分类采样到各类样本的距离,取距离最近的 K 个样本,根据最近的 K 个样本进行归属分类。

提取文本特征值TF-IDF 算法

根据词频和逆文档词频来计算,然后取词频比较高的词作为特征词


贝叶斯分类算法

计算方式 = 男生穿长裤*男生概率/穿长裤的概率


image.png


K-means 聚类算法

  • 第一步:选择随机种子 K,需要聚集的种类

  • 第二步:计算每个点到种子点的距离,距离更近归属于对应种子点,对于没有更近的点

  • 第三步:重新计算种子点(均值),重新计算没有确定聚类的种子点

  • 第四步:重复二和三继续分类,直到完成分类


推荐引擎算法

基于人口统计的推荐

针对于用户特征


基于商品属性的推荐

针对于商品特征


用户协同过滤推荐

针对于喜欢的商品来确定用户来推荐商品


基于商品的协同过滤推荐

喜欢 A 商品都喜欢商品 B,可以对于喜欢商品 A 的推荐商品 B


机器学习与神经网络

机器学习系统架构

  • 样本数据

  • 训练算法

  • 确定模型

  • 预测系统

  • 预测结果

  • 算法迭代(根据结果重新训练)


发布于: 2021 年 04 月 04 日阅读数: 33
用户头像

凯迪

关注

环球梦还在,做自己! 2020.06.01 加入

记录一些日常的记录和随笔,回首往事有迹可循,人间一趟,难得清醒难得糊涂。

评论

发布
暂无评论
「架构师训练营 4 期」 第十三周 - 001&2