迟来的学习之<Hadoop 权威指南 第三版>笔记

大数据胜于好算法

MapReduce是一份批量查询处理器,能在合理的时间范围内处理针对整个数据集的动态查询,这也是它的优势

MapReduce比较适合以批处理的方式处理需要分析整个数据集的问题,尤其是动态分析,适合一次写入多次读取的数据应用

MapReduce对于半结构化数据和非结构化数据非常有效,因为它是数据处理时才对数据进行解析

数据格式分类可分为:结构化数据,半结构化数据,非结构化数据

  结构化数据:有既定格式的实体化数据,如XML文档或满足特定预定义格式的数据库表

  半结构化数据:比较松散,虽然可能有格式,但它的格式通常被忽略,所以他只能作为对数据结构的一般性指导

  非结构化数据:没有特定的内部结构,如文本或图像数据

MapReduce是一种线性的可伸缩编程模型,它由map函数和reduce函数组成,每个函数定义一个键值对集合到另一个键值对集合

MapReduce通过显式网络拓扑来保证网络宽带

高性能计算时将作业分散到集群的各个机器上,这些机器访问存储区网络所组成的共享文件系统,适用于计算密集型作业
在大规模分布式计算环境下:最困难的是合理的处理处理系统中的部分失效问题;在不知道一个远程是否挂了的情况下,同时还需要继续完成整个计算

而MapReduce能够检测到并重新执行那些失败的map任务或Reduce任务,同时采用的时无共享框架,这意味着各个人物之间是彼此独立的

MapReduce分为两个阶段:

  Map阶段:

    输入是NCDC原始数据

    键是某一行起始位置相对于文件起始位置的偏移量

    值是一条数据

    输出也是以键值对的形式输出

    Map函数的输出经由MapReduce框架处理后,最后发送到Reduce函数,这个处理过程基于键来对键值对进行排序和分组

  Reduce阶段:

    输入类型必须匹配Map函数的输出类型

MapReduce的工作原理:

  1:由map函数对数据进行初步的处理删选,得到自己想要的关键数据

  2:map函数的输出经由MapReduce框架,对数据进行排序分组,递交给reduce函数最为输入

  3:reduce函数对从MapReduce处理后的每一组数据进行处理

MapReduce作业(job)是客户端需要执行的一个工作单元,它包括输入数据、MapReduce程序和配置信息。而Hadoop将job分为若干个小任务(task)来执行,其中包括两类任务:map任务和reduce任务

猜你喜欢

转载自www.cnblogs.com/yanwu0527/p/9141871.html