[info] 思考:大数据的本质是什么?是为了解决什么问题?
[info] 思考:如果谷歌浏览器的网页浏览,我们该怎么确定哪些网页要排在前面,哪些网页要排在后面呢?
谷歌是利用PageRank来解决这个问题的,也就是搜索排名,来确定哪些网页排名顺序,这个计算模型也启发了MapReduce的诞生。
我们来假设有四个网页,网页之间会互相引用跳转,例如使用HTML代码添加标签可以进行链接跳转,我们定一个规则,哪个网页被跳转的次数最多,它就会被排在前面,那么我们该如何计算出排名靠前的网页呢?
:-:
:-:
:-: 向量矩阵计算
在上图中是一个4x4的矩阵,这是个很小的矩阵,任何一台计算机都可以计算,但如果谷歌每小时产生1亿个数据,1亿x1亿的矩阵就很庞大了,显然一台再高性能的服务器也没办法计算了,为了解决这个问题,就衍生出了MapReduce计算模型。
:-:
:-: MapReduce计算模型
[info] 思考一下:这种思想是如何在集群中实现的呢?
把一个大的计算任务切割成多个小的任务,每个小的任务被分派到不同的服务器进行计算,最后又把不同服务器的计算结果最后再汇总起来。是如何实现任务的切分,又是如何实现任务的汇总呢?
MapReduce的底层实现业务逻辑的语言使用的是Java,实现的过程原理是: 把一个大任务拆分成小任务,再进行汇总
:-:
:-: MapReduce编程模型
[info] 思考:在Java进行编码的时候是需要几个程序呢?
两个,一个Map阶段的编码,一个是Reduce阶段的编码,同时也说明了MapReduce其实是一个合成的单词,表达的含义有两个过程,一个是Map,一个是Reduce.
[info] 思考:MapReduce程序需要获取到数据才能进行计算,那么庞大的数据要存储在哪呢?汇总了结果后又要存在哪里呢?
需要计算的数据首先是存储在HDFS中,那么就代表了MapReduce的输入是HDFS的数据。汇总了结果之后,把结果也是存储在HDFS中,供客户端访问结果,那就代表了MapReduce的输出也是HDFS。
内容来源于网络,如有侵权,请联系作者删除!