Hadoop MapReduce

1、Hadoop MapReduce a.包含的思想: 先分再合 分而治之 第一步:map分

前提:可以拆分 拆分没有依赖

把大的数据大的任务、复杂的任务拆分成若干个小任务。 ​ 拆分的目的:期许能够【并行】处理各个小部分 加快处理的效率。 ​

第二步:reduce合
        把map阶段各个局部的小结果汇总最终的结果。
        
b.hadoop团队针对MR设计构思
    这个mr是用来处理大数据场景。
    借鉴了函数式编程思想
        分的阶段  封装了map函数
        合的阶段  封装了reduce函数
        
        注意:不管什么阶段 数据在mr程序中都是以kv键值对形式存在的
    统一封装了底层的细节
        框架负责技术实现
        用户负责业务实现
            业务实现不局限于编程语言 可以使用java python c++ php
​
c.mapreduce进程和编程规范          
    mr作为分布式程序,运行期间分为3类进程。
        MrAppmaster mr程序内部的老大 负责资源申请 执行的监督
        MapTask  map阶段运行的任务
        ReduceTask reduce阶段运行的任务
    
    一个mr程序只能包含一个map阶段和一个reduce阶段。
    如果业务复杂 只能通过多个mr串行依次执行。
    
    在整个mr程序中,用户负责的业务,其他框架默认实现了很多技术。
    包括读数据组件、写数据组件、内部排序、内部分组
​
d.mapreduce编程
    现状:企业中已经没有直接使用mr编程处理数据的了
    原因:编程不高效 复杂逻辑处理起来麻烦
    离线阶段:sql on hadoop----->数仓 Hive
            hive sql----->mapreduce----->hdfs数据
            
    示例1:计算圆周率
        目的:学会如何提交一个mr程序。
        命令:hadoop jar xxxxxxxx.jar 参数1,参数2...
        提交到哪里去?
            把本地的mr程序提交到yarn集群上去  yarn给你分配资源 分布式计算  

示例2:单词统计 大数据分析的本质就是各种统计。业务简单 思想不简单。 目的:深入并且理解MapReduce执行流程。 map阶段执行流程 shuffle阶段 reduce阶段执行流程

    MR python的接口
        目的:业务逻辑实现可以通过不同的编程语言
        python基础语法 python脚本执行--->查缺补漏

mapper阶段:

1、maptask个数问题
    内部机制:逻辑切片 逻辑规划
    split size=block size =128M =1个maptask处理
​
2、TextInputFormat
    按行读取数据。其中返回kv键值对,v是这一行内容。
​
3、交给用户进行map阶段业务逻辑处理 【用户代码】
    一行数据处理一次
​
4、Partition
   输出的结果进行分区的计算
​
5、collect
   将输出的结果写入内存缓冲区  默认100M
   触发溢写的比例 spill percent 0.8
​
6、spill
    溢出 溢写。 把缓冲区的数据写入到磁盘临时文件中。
    
7、sort Combiner【可选】
   排序 key的字典序
   
8、merge
   将所有在磁盘上溢写文件合并成为最终一个文件 等待reducetask来拉取    

reducer阶段: 1、reducetask个数问题【并行度机制】: 默认永远1个

可以人为干预

2、copy
    reducetask启动线程去maptask那里拉取数据
    拉取数据的线程 fetcher
​
3、merge sort
   合并数据 排序 key的字典序
   
4、grouping
   分组:key相同的分为一组  一组去处理一次
​
5、交给用户进行reduce阶段业务逻辑处理【用户代码】    
    一组数据处理一次
    
6、TextOutputFormat
    默认输出组件 将处理的结果输出到指定的目录下  要求这个目录不能提前存在

1、MapReduce程序输入、输出有何讲究 细节点 易错点 默认输入组件 TextInputFormat 指向文件:处理该文件 指向目录:处理该目录下所有文件

默认输出组件 TextOutputFormat
    输出路径必须不能存在 否则报错
​
数据只要来的MapReduce框架中,在任何时候都是以<key,value>键值对的形式存在的
​
shuffle机制
    什么是shuffle 缺点是什么
        Map产生输出开始到Reduce取得数据作为输入之前的过程称作shuffle
    map端shuffle有哪些步骤:
    partition 分区
    collect 收集倒内存缓存区
    splill  溢写
    sort 排序
    combiner  规约
    merge  合并
    reduce端shuffle有哪些步骤:
    copy拉取数据
    merge 合并
    sort 排序
    grouping 分组

​ ​ ​ ​ ​ ​ ​ ​ ​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值