mapreduce杂谈

mapreduce接触两周了,跟刚刚接触懵逼的状态相比,现在好像有了更深刻的体会,体会到大数据的牛逼之处,稍微对一些大数据相关的实用案例有点理解。
下面对近期所学的一些mapreduce的相关知识稍稍进行一个总结

【1】常见的计算框架

mapreduce              离线计算框架

storm                  流式计算框架(进行实时计算)

spark                  内存计算框架(进行快速计算)      

【2】mapreduce分布式计算的设计理念
移动计算而不移动数据

【3】mapreduce处理的数据源和目的地分别是?
mr所处理的数据源和所生成的计算结果均存储在HDFS分布式文件系统上

【4】mapreduce的几个阶段

mapreduce杂谈_第1张图片
mr1.png
       1> 数据源              HDFS

       2>split碎片化          进行数据碎片

       3>map部分             (分)

       4>shuffing部分         ****重点(合并,排序)

       5>reduce部分          (合)

       6>output               输出结果数据
mapreduce杂谈_第2张图片
MR_01.png

【5】mr离线计算框架

    mr作为计算框架大概可分为三个大模块(input、计算模型、output);
    input和output是原始数据的输入和结果数据的输出,并且数据的存储位置均在HDFS上;
    而整个环节的重点则是计算模型的实现,数据模型也可细分为三个模块阶段(map、shuffle、reduce),
      >map 分割数据
      >shuffle  计算排序
      >reduce  合并数据

【6】shuffle阶段

        位置:shuffle存在于map和reduce函数之间,进行数据的计算和排序
        功能:
                  1:mapp而与reduce的一个中间步骤
                  2:可以把mapper的输出按照某种key值重新切分成几份和组合成几份,把key值符合某种范围的输出并送到特定的reduce函数去处理
                  3:可以简化reduce过程
                  4:大多数功能由框架自动完成

【7】shuffle详

map(内存)数据   ——>  partitaion,sort,split to disk ——> disk(磁盘)数据

注:
        shuffle的整个过程都在map节点中,其将map的内存输出数据分区按照partation的规则,然后机械能排序,再写入磁盘disk中,(其中partation的
默认规则以hash摸运算为准,当然也可以由程序员自行编写)

【8】partation分区:

        分区时为了把map的数据进行负载均衡,解决数据倾斜问题,在分给不同的reduce进行计算处理,以避免各个reduce所处理的数据大小相差过大

【9】map数据不会出现数据倾斜,为什么?

map 的数据来源来自于HDFS,而HDFS的数据已经将数据分为block块,默认为64M,
相反reduc是接收数据的环境,所以必须shuffle进行数据处理,避免数据在进入reduce时出现数据倾斜问题

【10】mr架构

mapreduce也采用主从结构:
主:JobTracker
      负责调度分配每一个子任务task运行于TaskTracker上,如果发现有失败的task就重新分配其任务到其他节点,每一个hadoop集群中只有一个JobTracker,一般运行在master节点上
从:TaskTracker
     TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务,为了减少网路带宽,TaskTracker最好运行在HDFS的DataNode节点上

你可能感兴趣的:(mapreduce杂谈)