Hadoop——day2

  • MapReduce
    • 核心思想
      • 分治
      • 先分再合
      • map负责分,即将复杂任务拆分为可并行计算且几乎没有依赖关系的小任务
      • reduce负责合,即对map阶段的结果进行汇总
    • 模拟MapReduce计算
      • 需求:统计文件中每个单词出现的总次数
      • 不采用mr的传统处理方式
        • 1.建立java项目,引入hdfs的jar包,通过fs.copyToLocalFile()
        • 2.读取文件,切割单词,统计次数
      • 采用MapReduce思想
        • 先分:把这批数据分成若干个部分,不遗漏,不重复
        • 再合:讲每部分数据的结果进行汇总
    • 设计构思
      • 核心功能:将用户代码和自带组件整合成完整分布式运算程序,并发运行在集群上
      • 处理数据类型:键值对
      • 使用者仅考虑需要做什么及各个阶段的数据类型
    • 输入与输出
      • Hadoop——day2
    • mapper过程
      • 阶段1:将输入目录下文件按照标准逐个进行逻辑(虚拟)切片,形成切片规划。一个切片对应一个MapTask
      • 阶段2:将切片数据按规则解析成键值对,默认规则是将一行文本内容解析成键值对。key是行起始位置,value是行文本内容
      • 阶段3:对每一个键值对调用一次map方法,并输出零或多个键值对
      • 阶段4:对键值对进行分区,默认只有一个区,每个区对应一个reducer
      • 阶段5:对分区中键值对进行排序(按先键后值的顺序)
      • 阶段6:combiner进行局部聚合,键相等的键值对会调用一次reduce。默认没有此阶段
      • Hadoop——day2
    • Reducer过程
      • reducetask把属于自己分区的数据进行合并和排序
      • 把所有数据按字典序排序,相同的作为一组调用reduce
      • k:是每组相同的key,v:所有v组成的迭代器
      • Hadoop——day2
    • 并行度机制
      • map阶段并行度由客户端提交job时决定
      • Hadoop——day2
      • Hadoop——day2
    • 解决数据倾斜
      • Hadoop——day2
    • shuffle机制
      • MapReduce关键:将map阶段处理的数据传递给reduce阶段
      • Hadoop——day2
      • Hadoop——day2
    • 优化参数
      • Hadoop——day2
      • Hadoop——day2
      • Hadoop——day2
      • Hadoop——day2
    • 计数器(counter)
      • 提供观察MapReduce job运行期间的各种细节数据的窗口
      • Hadoop——day2
      • Hadoop——day2
    • 多job串联
      • Hadoop——day2