hadoop-MapReduce处理流程(一)生活实例对比

先来出道题引入一个重要的思想----分布式计算思想
在这里插入图片描述
在上面的这个图中,主要是对一个1T的文件进行排序操作,是不是可以将这个大文件切割成一个个的小文件尽心处理,就可以解决啊,但是按照正常来说,一共需要三次io,读取文件进行切割一次,小文件内部排序一次,然后对小文件进行合并形成大文件一次,一共三次,并且大家是知道的,磁盘的io是非常慢的,所以,我能不能减少磁盘io的数量啊------这也就产生了第二步所整理的,大家想一下,反正我都要进行排序,那我可不可以在切割的时候就按照顺序切割呢?这样切出来的数据就是有序的小文件,直接进行小文件之间的排序,是不是什么都解决了啊,只需要两次io就可以解决所有的问题啊
在这里插入图片描述
同样的,如果我现在有1000台服务器进行10亿条url的排序工作,我是不是可以将这10亿条url的hashcode%1000.然后每一台服务器只去处理自己对应的数据就可以,每一台服务器上的小文件都是有序的,然后就可以进行最后的合并工作

好了,通过这两道题,不知道大家对于分布式思想有么有一个大致的概念呢?
接下来就是踏入正题了,mapreduce

首先我们要知道为什么要有mapreduce框架
mapreduce—计算处理框架
如果为了进行分布式计算,单纯的写一套计算处理程序,就像你们的数据结构算法一样,可以吗?
对于一些老牌程序员,我觉得完全没有问题—在代码层的处理逻辑
但是,一套处理高可用的处理程序除了正常的处理逻辑外,尤其是像这种大数据处理程序,还需要考虑网络、磁盘io、寻址。
都说懒人推动世界的发展,比方说自动驾驶,自动扫地机器人,不都是因为懒不想干活啊,然后产生了这些可以替代人的设备,说到懒,每个人都懒尤其是程序员,相当的懒,所以,她也不想每次写代码的时候都考虑那么多,所以啊,他就写一套框架,把所有的这个情况考虑进去,然后只要单纯的写处理逻辑就可以了,对吧!

哪知道了为什么会有mapreduce的处理框架,接下来就是她的原理了
大数据,大数据,数据至上,要想马儿跑,还想马尔不吃草,哪有那么好的事啊,对吧,那数据从何而来啊,对,

数据来源于生活

我就以生活中的实例对mapreduce进行讲解

在这里插入图片描述

问题1: 每一座山头在砍伐了树木,在将树木传输到工厂之后全都可以被使用吗?
答案:
肯定这些树木会产生边角料(脏数据),这些脏数据传输过来不用,但是依旧会占用传输的资源,产生浪费吧

问题2:如何避免边角料?
答案:我在山头的时候, 就已经把木材加工成简易的零件,这样的话就不会产生边角料的资源浪费吧
就比方说我在hdfs刚去处理数据的时候,就已经把数据进行处理,拿到我们需要的数据,如果说数据为表格,可能会有空行,空行就是脏数据把

问题3:简易的零件- -搬运浪不浪费时间?
答案:在山头的时候就已经把相应的零件进行组装,运输的时候,运输成品和半成品,同样的数据进行运输,我们在前期的时候就把数据准备好,最后的时候进行reduce,是不是压力会小很多

那这样的话我们就在刚才的生活实例中产生了多种不同的角色,那对于大数据,都对应哪些呢?

角色对应:

山树–hdfs中的数据
工人上山–map
山头: block
山头组装— combiner
工人:处理进程–maptask
中间的运输-shuffle (洗牌)
工厂最终组装–reduce

那在这个过程中,最影响mapreduce处理效率的过程是哪里呢?
最消耗资源最影响效率是在磁盘上进行的—也就是shuffle过程
至于其他的过程,那不用说了,为了不让io影响效率,那指定是在内存中进行的

那具体的mapreduce
请听下回分解

https://blog.csdn.net/weixin_42864905/article/details/104507296

发布了37 篇原创文章 · 获赞 0 · 访问量 410

猜你喜欢

转载自blog.csdn.net/weixin_42864905/article/details/104506607