Hadoop, Spark, map-reduce 学习笔记

本科前几年就学过Hadoop, Spark 但是一直没有非常理解原理,今天看Bit Tiger 讲解有一点新的收获。


首先要了解背景:

Hadoop, Spark, map-reduce 学习笔记_第1张图片

在Hadoop出来之前,当时处理大数据情况都是把存储还是计算的机器分开的。 要处理数据的时候,Computing Cluster会从存储数据的storage里调取data来处理。但是computing是很expensive的,如果要把大部分能量花在IO 读取上就太浪费了。【以前听说computing 时间都是给人有限制使用的】


Count the word frequency of a web page



Hadoop, Spark, map-reduce 学习笔记_第2张图片
Hadoop, Spark, map-reduce 学习笔记_第3张图片

合并的时候很麻烦。


Hadoop, Spark, map-reduce 学习笔记_第4张图片

之后就想到把数据和计算放在同一个地方来弄。




Hadoop, Spark, map-reduce 学习笔记_第5张图片

NameNode基本算是管理员master一样。 查找数据什么的都要先问他,他知道index在哪里。

Hadoop, Spark, map-reduce 学习笔记_第6张图片

所以如何计算? 对于数单词这么一个简单的事情,Single Machine 肯定做不了 数据这么大的事情,因为memory放不下。【注意,这里面试经常考】

Hadoop, Spark, map-reduce 学习笔记_第7张图片

多线程在多台机器上计算也很难处理,效率也许很低,线程还可能挂掉。

Hadoop, Spark, map-reduce 学习笔记_第8张图片

Map_reduce 这个framework的出现帮助data science 的人可以专门只做分析,其他的不用操心。





Hadoop, Spark, map-reduce 学习笔记_第9张图片


Hadoop, Spark, map-reduce 学习笔记_第10张图片

还是有一个Master Node,底下一堆员工worker来干活。 master会监考进度, 员工效率。 不行的员工就kill了 重新launch一个新的来干活。



但是Hadoop map reduce效率也不是没有缺点:

因为Hadoop 数据存HDFS上, map的时候取出来一次, 中间map好又要放到Intermediate HDFS上, Reduce的时候又要读取出来再计算。而且这个过程也许会repeat好几次。略费时间。【这里我怎么觉得跟之前古老的计算存储分离没差很多。。。】

Hadoop, Spark, map-reduce 学习笔记_第11张图片

Spark 可以更好的解决Hadoop的问题:

Spark 在中间过程中不放回HDDFS,而是存放在Memory里,这样提取很快。【memory为什么放得下?】

Hadoop, Spark, map-reduce 学习笔记_第12张图片




Hadoop, Spark, map-reduce 学习笔记_第13张图片

与Hadoop不同,Spark会先计算出big picture 再行动。

Hadoop, Spark, map-reduce 学习笔记_第14张图片

当你给一个driver program的时候, Spark每一步都是不做计算而是构建一个direct graph, 优化整个运行路径。直到你说reduceByKey的时候才真正开始计算。这样的话 因为需要的东西都group在一起了,所以之后不需要再放回HDFS再读取。


最后, Databrick上似乎提供了一个Spark的玩耍服务,看起来不错。

Hadoop, Spark, map-reduce 学习笔记_第15张图片

你可能感兴趣的:(Hadoop, Spark, map-reduce 学习笔记)