「架构师训练营 4 期」 第十三周 - 001&2
作业一:
(至少完成一个)
你所在的行业,常用的数据分析指标有哪些?请简述。
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
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:图计算
流计算技术
不同于批处理计算的小时或者是天级别的延时,对于 s 或者 ms 级别宕计算需求下,Flink Storm 和 Spark Streaming 实时大数据技术发展出来。
Strom
Storm 基本概念
下面是 Storm 和 Hadoop 的整个架构不同角色的对应关系。
Storm 计算框架
Storm 计算实例
对于超速宕数据记录到日志中,然后把日志数据通过流计算进行处理和计算。
topology:拓扑结构
Spout 监控文件输出,然后提交给 CalculatorBolt 进行计算处理(超速),交给 DBWriteBolt 进行写入。
Spout:源数据流组件
监听不同的数据文件进行实时监控,然后转换为内部数据传递给 Bolt
Bolt:计算组建
这里面有两个 Bolt 组建,一个是计算组建来确定是否超速,一个是写入组建对于计算之后的数据写入到数据库。
Spark Streaming 流计算
对比 Spark 相比,把 hdfs 作为数据源修改为流式数据(例如 file listenner 或者 kafka 队列投递),然后小的时间段(100ms 1s 等)缓存的数据作为小的批处理任务交给 Spark 进行处理,然后使用正常批处理的计算方式进行计算和输出。
Flink 流计算
Flink 是以流计算来作为批处理的支持,当批处理时间便很小就是批处理,同样的流处理的时间片很大就是批处理。架构方案的实现跟 Spark 是非常相似的。
大数据测试工具 HiBench
大量数据构建
常用算法测试
这里不做过多描述。
大数据分析与可视化
大数据之前说宕是基础的技术,这里面要讲的是数据的应用,主要是通过算法构建模型来进行数据的分析和应用。
大数据可视化
互联网运营常用数据指标
新增用户数
用户留存率
PV
GMV 总成交额
转化率=购买用户/总用户
网页排名算法 PageRank
思路:让链接来进行投票,即 A 页面能够跳转 B 页面,就是 A 页面给 B 页面投了一票,根据投票来计算分数。
分类与聚类算法
分类:一个数据分都某个类别里面
聚类:一大批数据分成几个类别
KNN 分类算法
K 近邻算法,目前已知分类完毕的一批样本,计算需要分类采样到各类样本的距离,取距离最近的 K 个样本,根据最近的 K 个样本进行归属分类。
提取文本特征值TF-IDF 算法
根据词频和逆文档词频来计算,然后取词频比较高的词作为特征词
贝叶斯分类算法
计算方式 = 男生穿长裤*男生概率/穿长裤的概率
K-means 聚类算法
第一步:选择随机种子 K,需要聚集的种类
第二步:计算每个点到种子点的距离,距离更近归属于对应种子点,对于没有更近的点
第三步:重新计算种子点(均值),重新计算没有确定聚类的种子点
第四步:重复二和三继续分类,直到完成分类
推荐引擎算法
基于人口统计的推荐
针对于用户特征
基于商品属性的推荐
针对于商品特征
用户协同过滤推荐
针对于喜欢的商品来确定用户来推荐商品
基于商品的协同过滤推荐
喜欢 A 商品都喜欢商品 B,可以对于喜欢商品 A 的推荐商品 B
机器学习与神经网络
机器学习系统架构
样本数据
训练算法
确定模型
预测系统
预测结果
算法迭代(根据结果重新训练)
版权声明: 本文为 InfoQ 作者【凯迪】的原创文章。
原文链接:【http://xie.infoq.cn/article/69ab84dc0860583cb8d8be826】。文章转载请联系作者。
评论