Hadoop小结

原创 2013年12月02日 15:58:59
Hadoop是一个实现了MapReduce计算模型的开源分布式并行编程框架,借助于Hadoop,程序员可以轻松地编写分布式并行程序,将其运行于计算机集群上,完成海量数据的计算。
Hadoop 简介:
     包含一个分布式文件系统HDFS(Hadoop Distributed File System)。
     基于Hadoop的开源项目Pig,海量数据集分析的分布式计算程序。
    Amazon公司基于Hadoop推出了AmazonS3(Amazon Simple Storage Service),提供可靠,快速,可扩展的网络存储服务,以及一个商用的云计算平台Amazon EC2(Amazon Elastic Compute Cloud)。在IBM公司的云计算项目--"蓝云计划"中,Hadoop也是其中重要的基础软件。Google正在跟IBM合作,共同推广基于Hadoop的云计算。
    基于多核的多线程并发编程以及基于大规模计算机集群的分布式并行编程是将来软件性能提升的主要途径。
    谷歌使用MapReduce的并行编程模型进行分布式并行编程,运行在叫做GFS (Google File System)的分布式文件系统上,为全球亿万用户提供搜索服务。
    Hadoop实现了Google的MapReduce编程模型,提供了简单易用的编程接口,也提供了它自己的分布式文件系统HDFS
MapReduce计算模型
    MapReduce是Google公司的核心计算模型,它将复杂的运行于大规模集群上的并行计算过程高度的抽象到了两个函数,Map和 Reduce,适合用MapReduce来处理的数据集(或任务)有一个基本要求:待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。图 1. MapReduce 计算流程
      计算模型的核心是Map和Reduce两个函数,由用户负责实现,功能是按一定的映射规则将输入的<key,value>对转换成另一个或一批<key,value>对输出。
 集群上的并行计算:
      MapReduce计算模型非常适合在大量计算机组成的大规模集群上并行运行。
      数据分布存储:HDFS由一个管理结点(NameNode)和N个数据结点(DataNode)组成,其底层实现上是把文件切割成Block,然后这些Block分散地存储于不同的DataNode上,每个Block还可以复制数份存储于不同的 DataNode上,达到容错容灾之目的。NameNode则是整个HDFS的核心,它通过维护一些数据结构,记录了每一个文件被切割成了多少个 Block,这些Block可以从哪些DataNode中获得,各个DataNode的状态等重要信息。
     分布式并行计算:作为主控的JobTracker,用于调度和管理其它的TaskTracker,JobTracker可以运行于集群中任一台计算机上。TaskTracker负责执行任务,必须运行于DataNode上,即DataNode既是数据存储结点,也是计算结点。JobTracker 将Map任务和Reduce任务分发给空闲的TaskTracker,让这些任务并行运行,并负责监控任务的运行情况。如果某一个TaskTracker出故障了,JobTracker会将其负责的任务转交给另一个空闲的TaskTracker重新运行。
      本地计算:数据存储在哪一台计算机上,就由这台计算机进行这部分数据的计算,这样可以减少数据在网络上的传输,降低对网络带宽的需求。计算结点可以很方便地扩充,数据需要在不同的计算机之间流动,故网络带宽变成了瓶颈,“本地计算”是最有效的一种节约网络带宽的手段,“移动计算比移动数据更经济”。  图 2. 分布存储与并行计算
      任务粒度:把原始大数据集切割成小数据集时,通常让小数据集小于或等于HDFS中一个Block的大小(缺省是64M),便于本地计算。有M个小数据集待处理,就启动M个Map任务,M个Map任务分布于N台计算机上并行运行,Reduce任务的数量R则可由用户指定。
      Partition:把 Map任务输出的中间结果按key的范围划分成R份(预先定义任务个数),划分时使用hash函数: hash(key) mod R
      Combine:在 partition之前,还可以对中间结果先做 combine,即将中间结果中有相同key的<key, value>对合并成一对。
       Reduce任务从 Map 任务结点取中间结果: 以文件形式存于本地磁盘。JobTracker再通知 Reduce,R个Reduce 任务各自负责一段Key区间。每个Reduce需要向许多个Map任务结点取得落在其负责的 Key 区间内的中间结果,然后执行Reduce函数,形成结果文件。
       任务管道: 有R个Reduce任务,就会有R个最终结果

相关文章推荐

Hadoop Map/Reduce 心得小结(一)

MapReduce 的数据类型Hadoop 虽然是由java实现的,但MapReduce的输入输出并不支持对java常用的数据类型(如byte,int,long,String等)的直接操作,而是通过一...

hadoop API 学习小结(四)

一、对于学过java的朋友来说,对于序列化应该不会陌生,序列化(serialization)指的是将结构化对象转换为字节流以便通过网络进行传输或写入持久化的过程。反序列化指的是将字节流转为一系列结构化...

hadoop API 学习小结(二)

一、数据的完整性 由于每个磁盘或者网络上的I/O操作肯能会对正在读写的数据不慎引入错误,如果通过的数据流量非常大,数据发生损坏的几率非常高。 检测损坏数据的常用方法是在第一次进入系统时计算数据的校...

hadoop API 学习小结(一)

一、从Hadoop URL 中读取数据 使用java.net.URL对象打开一个数据流 InputStream in = new URL("hdfs://host/path").openStrea...

Hadoop的经验小结:MapWritable的使用以及别的细节

MapReduce优化小结 MapWritable的使用 计算similarity 公开课程 转载请注明出处:http://blog.csdn.net/c602273091MapReduce优化小结一...

Java学习IO流小结--字节流

  • 2015年07月11日 14:59
  • 218KB
  • 下载

CSS小结有关整体

  • 2014年10月25日 19:31
  • 36KB
  • 下载

RabbitMQ学习小结(五)----主题交换机

前面的一小节路由键是精确匹配的, 路由键的功能,通过设置路由键,可以将消息发送到相应的队列,这里的路由键是要完全匹配,比如info消息的只能发到路由键为 info的消息队列。有时用需要路由键模糊匹...

蜂鸣器小结1

  • 2012年11月08日 21:58
  • 278B
  • 下载

MM4小结 MM4机器测试步骤

  • 2013年12月09日 21:20
  • 1.75MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hadoop小结
举报原因:
原因补充:

(最多只允许输入30个字)