大数据胜于好算法
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任务