写点什么

大数据计算引擎 Spark

用户头像
积极&丧
关注
发布于: 2021 年 01 月 10 日

Spark VS Hadoop

  • Spark 是 MapReduce 的替代者

  • 逻辑回归计算 MapReduce 需要 110s Spark 只需要 0.9s

  • 虽然是这个算法的特殊性对 spark 更友好,但是 spark 在绝大多数情况下都是优于 MapReduce

Spark 特点(Spark 为什么更块)

  • DAG(有向无环图)切分的多阶段计算过程更快速

  • MapReduce 有两个作业阶段 Map Reduce 两个阶段

  • 如果有 join 操作 每 join 一次 都要有 一次 Map reduce 两个阶段。

  • 而 Spark 不需要重新启动结果,中间的输入输出,写入 HDFS 的环节也都可以省略,可以连续不断的计算下去(是因为他的中间结果不落盘,只有发生 shuffer 的时候才会进行落盘)。

  • 使用内存存储中间计算结果更高效(Spark 优先使用内存、不足再用磁盘)

  • MapReduce 计算时 Map 的输出是要写入到硬盘上的,通过硬盘 shuffle 到 reduce 里面去,在 reduce 里面进行数据的排序 merge 合并了以后,相同的 Key 再去交给 reduce 函数去处理,这样子中间很多地方是用磁盘的,会慢一点,但是可靠性高一点。

  • RDD 的编程模型更简单(弹性分布式数据集)

Spark WordCount 编程示例



作为编程模型的 RDD

  • RDD 是 Spark 的核心改了,是弹性分布式数据集(Resilient Distributed Datasets)的缩写。

  • RDD 既是 Spark 面向开发者的编程模型,又是 Spark 自身架构的核心元素。

  • 作为 Spark 编程模型的 RDD。我们知道,大数据计算就是在大规模的数据集上进行一系列的数据计算处理。MapReduce 针对输入数据将计算过程分为两个阶段,一个 Map 阶段,一个 Reduce 阶段,可以理解成是面向过程的大数据计算。我们在用 MaoReduce 编程的时候,思考的是,如何将计算逻辑用 Map 和 Reduce 两个阶段实现,map 和 reduce 函数的输入和输出是什么,MapReduce 是面向过程的。

  • 而 Spark 则直接针对数据进行编辑,将大规模数据集合抽象成一个 RDD 对象,然后在这个 RDD 上进行各种计算处理,得到一个新的 RDD,继续计算处理,直到得到最后的结果数据。所有 Spark 可以理解成是面向对象的大数据计算。我们在进行 Spark 编程的时候,思考的是一个 RDD 对象需要经过什么样的操作,转换成另一个 RDD 对象,思考的重心和落脚点都在 RDD 上。

  • RDD 上定义的函数分为两种,一种是转换(transformation)函数,这种函数的返回值还是 RDD;另一种是执行(action)函数,这种函数不再返回 RDD


作为数据分片的 RDD

  • 窄依赖(没有进行 shuffle)

  • 惰性式操作

  • 宽依赖(shuffle 依赖)

  • 转换操作会产生新的分片,比如 reduceByKey,来自不同分片的相同 Key 必须聚合在一起进行操作,这样就会产生新的 RDD 分片。可以根据转换函数名来判断。


Spark Streaming

  • 流式数据 将数据分成 100ms~1s 然后这段时间的一小批去处理。

  • 初始化的时候,是从网络通信、消息队列获取数据

Flink

  • 流处理和批处理 初始化的时候不同,后面编程方法都是类似的。

大数据基准测试工具 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 K0means clustering

  • data analytics benchmarks

  • Hive Query Benchmarks

  • 主页 https://github.com/intel-hadoop/hibench

  • 安装配置

数据分析

  • 用户留存率

  • 新增的用户并不一定总是对网站(App)满意,在使用网站(App)后感到不满意,可能会注销账户(卸载 App),这些辛苦获取来的用户就流失掉了。网站把经过一段时间依然没有流失的用户称作留存用户,留存用户数比当期新增用户数就是留存率。

  • 用户留存率=留存用户数/当期新增用户数

  • 计算留存还有时间窗口,即和当期数据比,3 天前新增用户留存的,称作 3 日留存;相应的,还有 5 日留存、7 日留存等。一般来说 3 日留存率能做到 40%以上就算不错了。

  • 用户流失率 = 1-用户留存

  • 活跃用户数

  • 打开使用产品的用户数,日活跃、月活跃等。

  • pv

  • 打开产品,用户每次点击,每个页面跳转,被称为一个 PC(Page View)。PV 是网页访问统计的重要指标,在移动 App 上,需要进行一些变通来进行统计。

  • 转化率

  • 电商网站产生购买行为的用户与访问用户之比。

  • 转化率 = 有购买行为的用户数/访问总用户数


用户头像

积极&丧

关注

还未添加个人签名 2019.02.13 加入

还未添加个人简介

评论

发布
暂无评论
大数据计算引擎Spark