Hadoop起源二之MapReduce

x33g5p2x  于2021-03-14 发布在 Hadoop  
字(1.0k)|赞(0)|评价(0)|浏览(172)

一、大数据的本质

[info] 思考:大数据的本质是什么?是为了解决什么问题?

  • (1)数据的存储:分布式文件系统(分布式存储)
    • HDFS: Hadoop Distributed File System
  • (2)数据的计算:分布式计算
    • MapReduce(两个阶段:Map和Reduce)

二、如何解决大数据的计算

[info] 思考:如果谷歌浏览器的网页浏览,我们该怎么确定哪些网页要排在前面,哪些网页要排在后面呢?

谷歌是利用PageRank来解决这个问题的,也就是搜索排名,来确定哪些网页排名顺序,这个计算模型也启发了MapReduce的诞生。

三、PageRank解决网页排名

我们来假设有四个网页,网页之间会互相引用跳转,例如使用HTML代码添加标签可以进行链接跳转,我们定一个规则,哪个网页被跳转的次数最多,它就会被排在前面,那么我们该如何计算出排名靠前的网页呢?

:-:

:-:

:-: 向量矩阵计算

在上图中是一个4x4的矩阵,这是个很小的矩阵,任何一台计算机都可以计算,但如果谷歌每小时产生1亿个数据,1亿x1亿的矩阵就很庞大了,显然一台再高性能的服务器也没办法计算了,为了解决这个问题,就衍生出了MapReduce计算模型。

:-:

:-: MapReduce计算模型

[info] 思考一下:这种思想是如何在集群中实现的呢?

把一个大的计算任务切割成多个小的任务,每个小的任务被分派到不同的服务器进行计算,最后又把不同服务器的计算结果最后再汇总起来。是如何实现任务的切分,又是如何实现任务的汇总呢?

四、MapReduce编程模型

MapReduce的底层实现业务逻辑的语言使用的是Java,实现的过程原理是: 把一个大任务拆分成小任务,再进行汇总

:-:

:-: MapReduce编程模型

[info] 思考:在Java进行编码的时候是需要几个程序呢?

两个,一个Map阶段的编码,一个是Reduce阶段的编码,同时也说明了MapReduce其实是一个合成的单词,表达的含义有两个过程,一个是Map,一个是Reduce.

[info] 思考:MapReduce程序需要获取到数据才能进行计算,那么庞大的数据要存储在哪呢?汇总了结果后又要存在哪里呢?

需要计算的数据首先是存储在HDFS中,那么就代表了MapReduce的输入是HDFS的数据。汇总了结果之后,把结果也是存储在HDFS中,供客户端访问结果,那就代表了MapReduce的输出也是HDFS。

相关文章