zoukankan      html  css  js  c++  java
  • mapreduce基础

    mapreduce核心思想:分而治之,先分后合 分是map,合是reduce

    Shuffle包含哪些步骤

    宏观层面:

    1.分区

    2.排序

    3.combine(局部聚和)

    4.分组

    MR从读取数据开始到将最终结果写入hdfs经过哪些步骤

    第一步:inputFormat   在hdfs文件系统中读取要进行计算的数据输出给spilt

    第二步:spilt  将数据进行逻辑切分,切分成多个任务,输出给RR(recordreader)

    第三步:RR RR将切分后的数据转换成key value进行输出  key:每一行行首字母的偏移量   value :每一行数据

    第四步:输出给Map  接收一条一条的数据(有多少行数据 ,map运行多少次),根据业务需求编写代码 .Map的输出是key value 的list 输出给shuffle(partition)

    ------------------------------map----------------------------

    第五步:partition 按照一定的规则对 key value 的list进行分区 输出给shuffle(sort)

    第六步:sort 对每个分区内的数据进行排序 输出给shuffle(combiner)

    第七步:combiner 在Map端进行局部聚合(汇总),目的是减少网络带宽的开销,输出给shuffle(group)

    第八步:group 将相同key的key提取出来作为唯一的key 组装成一个value的list 输出给shuffle(reduce)

    ----------------------------shuffle--------------------------

    第九步:reduce 根据业务需求对传入的数据进行汇总计算,输出给shuffle(outputFormat)

    第十步:outputFormat 将最终的结果写入hdfs

    ---------------------------reduce--------------------------------

    如何设置reduceTask的数量? 在驱动类中设置setNumReduceTasks

    combine的作用? 局部聚合,以此减少io与网络开销 ,运行在map端

    Maptask的数量可以人为设置吗?  不可以,由输入的数据决定

    Shuffle阶段的partition分区算法是什么? hashpartition,对map端输出的key取哈希值,用这个哈希值与mapreduce的个数取余

    spilt切分数据的大小是多少? 默认128m

    内存角度接收mapreduce的输出到reduce的输入过程

    1 map不断向内存中的环形缓存区域输人数据,在此过程中会使用hashpartition算出分区

    2 当环形缓存区中的数据达到默认的0.8阈值时,锁定这 0.8的数据,进行一次排序,开启溢写,将数据flush到磁盘生成临时文件,当临时文件达到4个时进行merge合并,在此过程中,剩下的0.2剩余空间继续接受map输出的数据,此过程同时进行,互补影响

    3 当输出完成后会对本地的临时文件进行merge合并,然后等待reduce拉取

    4 reduce task通过http从map task拉取属于自己分区的数据到内存中

    5 归并排序所有文件,发送给reduce

    最优的map效率是什么?

    尽量减少环形缓冲区flush的次数(减少磁盘io的使用次数)

    1 加大环形缓冲区的内存

    2 增大缓冲区阈值的大小

    3 对输出的数据进行压缩(压缩-解压的过程会消耗cpu)

    最优的reduce是是什么?

    尽量将所有数据在内存中计算

    集群优化的核心思路是什么?

    所有的,只要能减少网络带宽的开销,只能能够减少磁盘io的使用的次数的配置项,都是集群调优的可选项,

    在网络带宽,磁盘io是瓶颈的前提下,能不使用io网络就不使用,在必须使用的前提下,能少用就少用

  • 相关阅读:
    《代码整洁之道》
    SharePoint Use backup, restore and export
    sharepoint站点支持AJAX功能做些简要说明
    使用vbs或者bat脚本修改IE浏览器安全级别和选项
    创建 Silverlight 应用程序以访问 SharePoint 2010 数据
    CPU使用率过高的 9种可能
    几条在SharePoint中使用SilverLight注意事项
    通过WebService操作SharePoint列表数据
    开发部署Sharepoint自定义webservice
    SQL Server发送邮件的存储过程
  • 原文地址:https://www.cnblogs.com/fengyouheng/p/15416754.html
Copyright © 2011-2022 走看看