0
点赞
收藏
分享

微信扫一扫

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


举报

相关推荐

0 条评论