大数据计算引擎 Spark
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 上,需要进行一些变通来进行统计。
转化率
电商网站产生购买行为的用户与访问用户之比。
转化率 = 有购买行为的用户数/访问总用户数
评论