zoukankan      html  css  js  c++  java
  • MapReduce

    MapReduce是 一种 用于数据处理的 编程模型。该模型 非常简单。

    同一个程序Hadoop 可以 运行  用各种语言 编写的MapRedue 程序。 在本章中,我们将看到 用 Java , Ruby , Python 和  C++ 这些不同语言 编写的  不同版本。

    最重要的是, MapReduce 程序 本质上  是并行的, 因此可以 将大规模的数据分析 交给  任何 一个 拥有 足够多机器的运行商

    MapReduce  的 优势 在于 处理大型数据集,所以  下面首先来看一个例子。


    使用 Hadoop 进行 数据分析

    为了更好地发挥 Hadoop 提供的 并行 处理机制 的  优势, 我们 必须 把查询 标识成  Map Reduce 作业。

    经过 一些 本地的 小规模测试,我们能够 在机器 集群上 运行它。


    map 和 reduce

    MapReduce 的  工作过程分为两个阶段: map 阶段 和 reduce 阶段。

    每个阶段 都有 键/值 作为输入和输出,并且 它们的类型可由程序员  选择。程序员 还具体 定义了 两个 函数: map 函数 和 reduce 函数。

    我们在   map 阶段 输入的 是 原始的 NCDC数据。 我们选择的是一种 文本 输入格式, 以便 数据集的每一行 都会是一个 文本值。

    是 在 文件 开头部分文本行  起始 处的 偏移量, 但我们没有这 方面的需求, 所以 将其 忽略。

    map 函数很简单。 我们 使用 map  函数 来找出 年份 和 气温,  因为我们只对 它们有兴趣。 在本例中, map 函数 只是 一个  数据准备 阶段, 

    通过这种方式 来建立数据,  使得 reduce 函数 能在此 基础上进行  工作: 找出 每年的最高气温。

    map 函数 也是 很适合  去除 已损 记录的 地方: 在这里, 我们 将 筛选 掉 缺失的、不可靠的或 错误的气温数据。


    为了 全面 了解 map 的  工作方式, 我们思考下面几行 示例 的 输入 数据()

    这些 行  以 键/值 对的方式 来表示  map 函数:

     键 是 文件中的 行 偏移量, 而这往往是我们在 map 函数 中 所忽视的

    map 函数的功能 仅仅 提取 年份 和 气温(以粗体 显示),并将其 作为 输出被 发送。(气温值 已被 解释为整数)

    map 函数的输出 先由 MapReduce 框架处理, 然后 再被 发送到 reduce 函数。

    这一处理过程 根据 键/值对  进行排序 和 分组。 因此,继续我的示例,reduce  函数 会到 如下输入:

    每年的年份后 都有一系列  气温 读数。所有 reduce 函数 现在必须重复 这个列表 并从中找出最大的读数:

    这是最后的输出: 全球 气温纪录中每年的最高气温。

    整个数据流如图 2-1 所示。  在图的底部是 Unix 的 管道, 模拟整个 MapReduce的 流程, 其中的内容 我们将在以后 讨论 Hadoop 数据流时 再次提到。

                                                  MapReduce 的逻辑数据流

                                   

  • 相关阅读:
    noi放苹果
    二分 网线主管
    hdu 1421 dp
    hdu 1087 最大上升子序列的和(dp或线段树)
    快速排序+查找
    zoj 1425 最大交叉匹配
    hdu 3501 容斥原理或欧拉函数
    hdu 4671 异面直线的距离
    hdu 3320 计算几何(三维图形几何变换)
    hdu 2857 点在直线上的投影+直线的交点
  • 原文地址:https://www.cnblogs.com/duffy/p/5371723.html
Copyright © 2011-2022 走看看