Hadoop MapReduce

Hadoop MapReduce

  • 理解mapreduce思想

    • 核心:分而治之 先分再合

    • 两个阶段

      • map阶段(分):如果任何可以拆分并且没有依赖 那么就把复杂的任务拆分成小任务

        拆分成小任务之后 可以并行计算 提高处理效率

      • reduce阶段(合):把map阶段的各个局部结果进行汇总 得到最终的结果

    • 来源:来源于生活 包括Google和hadoop团队在内 都是把这种思想提炼处理 应用于大数据处理

  • Hadoop MapReduce设计构思

    • 如何面对大数据的处理场景:分而治之

      如果大数据没有依赖可以拆分 那么就把大的数据拆分若干个小的数据 以并行计算提高处理效率

    • 函数式编程的模型

      • map 分的阶段数据处理
      • reduce 合的阶段数据处理

      在mapreduce中,数据都是以**<key,value> 键值对**形式存在.

    • 隐藏系统底层细节 把做什么 和怎么做进行拆分

      • 做什么:业务问题 ---->用户负责 10%
      • 怎么做:技术问题----->mr框架 90%

      必须用户的代码根据其编程规范合起来才能构成mr程序。

  • mapreduce的编程规范和结构

    • 从代码层面看

      类1---->继承Mapper     该类负责mr中map阶段的业务逻辑处理
      类2---->继承Reducer    该类负责mr中Reduce阶段的业务逻辑处理
      类3 (客户端类 main)    该类是mr程序的运行的客户端 用于各种组件参数的拼接提交mr程序
      
      把上述3个类打成一个jar包  就是mr程序
      
    • 从执行层面看

      maptask     map阶段运行的task  负责处理map阶段的业务逻辑---->类1
      reducetask  reduce阶段运行的task  负责处理reduce阶段的业务逻辑---->类2
      MrAppMaster 程序运行的老大 负责mr程序内部的调度监督执行
      
  • 案例:wordcount

    • 需求:统计指定文件中每个单词的总次数

      hadoop hive allen 
      itcast hadoop
      hadoop
      
    • mr实现思路

      • map

        把数据变成一个个的键值对输出   <单词,1><单词,1><单词,1><单词,1><单词,1>
        
      • reduce

        把kv中k相同的v加起来就是单词的总次数   <单词总次数>
        
    • 开发环境的搭建

      • jar版本的选择

        • 理论上个应该开发的版本和服务器搭建的版本一致 hadoop2.6.0–cdh-5.14.0

        • 推荐使用apache 2.7.4版本

          • 优点:

            • 两个版本的api 逻辑一样
            • 官方版本中 源码注释清晰 便于解读源码
            • hadoop从2.6 到2.7的过程 中 本地执行环境做了调整 2.6.0不利于本地开发调试
          • 注意:如果使用cdh版本 需要在pom文件中 手动添加cloudera的maven仓库地址

                <repositories>
                    <repository>
                        <id>cloudera</id>
                        <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
                    </repository>
                </repositories>
            
      • hadoop数据类型

        为了提高网络传递数据的高效性 hadoop自己封装了一套数据类型 实现了自己的序列化机制

        hadoop序列化机制是一个接口 Writable

         * long----->longWritable
         * String--->Text
         * int------>intWritable
         * Double--->DoubleWritable
         * null----->nullWritable
        
      • mapreduce的运行模式

        • 概念:所谓的运行模式指的是由谁给mr程序提供运算时候所需要的硬件资源

        • 两种模式:

          • 集群模式:程序计算的资源由yarn分配 分布式计算的效果 生产环境线上环境的模型

          • 本地模式:程序计算的资源由程序所在的机器本地系统模拟出 单机计算的效果 开发测试环境

          • 决定什么模式运行

            mapreduce.framework.name  = local  本地模式
            mapreduce.framework.name  = yarn   集群模式
            
            如果不配置 默认是local模式 但是要注意该集群的环境中是否配置了hadoop 如果有覆盖默认的
            识别出mared-site.xml中配置
            
          • 注意事项

            要想本地运行mr程序 需要解决hadoop native library问题 winutils.exe 程序

      • mapreduce执行注意事项

        • 输出路径问题

          FileAlreadyExistsException: Output directory file:/D:/wordcount/output already exists
          

          如果输出路径已经存在 mr执行报错

        • 输入路径问题

          如果输入路径指向的是一个文件 mr程序就处理该文件

          如果输入路径指向的是一个文件夹(目录),mr程序就处理该目录下所有的文件

        • 识别mr程序运行模式的技巧

          程序执行ID编号
          yarn:   job_1563690819511_0001
          local: job_local333614689_0001
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值