Hadoop提供了一个可靠、可扩展的存储和分析平台,是一个由多个项目组成的生态系统,这些项目都属于分布式计算和大规模数据处理范畴。
寻址速度的提升远远跟不上传输速度的提升,寻址是将磁头移动到特定磁盘位置进行读写操作的过程,它是导致硬盘操作延迟的主要原因,而传输速度取决于硬盘的带宽。如果数据访问中包含大量硬盘寻址,那么读取大量数据集就需要花费更长时间。如果只更新少量数据,传统的基于B树的数据库更有优势,如果需要更新大量数据,B树的速度将明显落后于MapReduce,因为需要使用排序/合并来重建数据库。
Hadoop尽量在计算节点上存储数据,以实现数据的本地快速访问,数据本地化(data locality)特性是Hadoop数据处理的核心。
MapReduce是对大量分布式处理问题的总结和抽象,核心思想是分而治之。主要由两部分组成:编程模型和运行时环境,编程模型为用户提供了非常易用的编程接口,用户只需要像编写串行程序一样实现几个简单的函数即可实现分布式程序,其它复杂的工作,如节点间通信、节点失效、数据切分等都由MapReduce运行时环境完成。
一个分布式计算过程可以拆解成两个阶段:
第一阶段:Map阶段,由多个可并行的Map Task构成,主要功能是将待处理数据集按照数据量大小切分成等大的数据分片,每个分片交由一个任务处理。
第二阶段:Reduce阶段,由多个可并行的Reduce Task构成,主要功能是对前一阶段中各任务产生的结果进行规约,得到最终结果。