《hadoop权威指南》笔记1_基本概念和初识MR
发布日期:2021-05-14 05:22:08 浏览次数:18 分类:精选文章

本文共 1180 字,大约阅读时间需要 3 分钟。

1. Hadoop的特点及与其他分布式系统的对比

1. Hadoop的特点

  • 数据本地存储,有效节省集群带宽资源
  • 支持非结构化数据,写入速度快
  • 适用场景:一次性写入,多次读取
  • 基于批量处理的数据存取方式
  • 线性扩展能力
  • 2. 对比分析

  • Oracle RAC:基于共享存储,适合频繁读写场景,处理结构化数据
  • 网格计算:并行计算的复杂性较高,Hadoop采用按块本地处理,无需考虑计算顺序
  • 志愿计算:主要针对计算能力优化,数据交互频率低
  • 3. 并行运算的关键考虑点

    1) 任务分割更均衡,充分利用各运算节点的计算能力

    例如:处理最高气温数据时,可以让每个线程负责一个年份。由于不同年份数据量不同,最终完成时间由最慢的任务决定。
    Hadoop方式:将运算分割成相同大小的块,各节点按照块顺序处理。

    2) 结果合并

    Linux方式:每个线程将结果存储在独立的文件夹中,最终合并成一个文件。
    Hadoop方式:需要考虑块之间的合并逻辑,处理较为复杂。

    2. MapReduce框架及其组件

    组件 作用 举例
    map 负责数据处理,清洗、转换为键值对 (1950,0), (1950,22), (1949,111), (1949,78)
    框架 将多个map任务的输出按键合并 (1950, [0,22]), (1949, [111,78])
    reduce 对键值对的数据进行聚合计算(如求最大值)

    3. MP程序的典型结构

    Mapper

    1) 结构

    4个参数:(key, val, context, void)

    2) 主要功能

    处理数据,处理完成后将数据存储到context中

    Reducer

    1) 结构

    4个参数:(key, values, context, void)

    2) 主要功能

    对values数组进行计算(如求最大值),将结果写入context

    MP作业的执行流程

    1) 定义Job:包括Job名和对应的类

    2) 定义输入输出路径(适用于批量处理,不是实时处理)
    3) 定义Mapper和Reducer类
    4) 定义输出的键值类型
    5) 设置任务结束动作

    其他

    输入分割(input split):逻辑概念,MP框架将输入分割成等大小的切片。每个切片会被单独的map任务处理。理想情况下,切片大小应与HDFS块大小一致。

    HDFS块:物理概念,存储数据的基本单位。
    输入分割大小应与块大小保持一致:
    每个split对应一个map任务,map任务运行在某个节点上。如果split涉及多个块,可能需要从其他节点拉取其他块,这会消耗集群带宽资源。

    Combiner函数

    Map和Reduce之间的中间层,用于对map结果进行简化处理,减少Reduce阶段的输入量和带宽消耗。

    不是所有操作都适合使用Combiner。例如,最大值可以使用Combiner,而平均值则不行。

    上一篇:hadoop实验1_64位Win7搭建2.7.4单机hadoop
    下一篇:cookie和sessioin

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2025年05月03日 01时25分19秒