1 Hadoop 介绍
Hadoop是由Apache 开源组织的一个分布式计算框架,可以在大量廉价的硬件设备组成的集群上运行应用程序,为应用程序提供了一组稳定可靠的接口,旨在构建一个具有高可靠性和良好扩展性的分布式系统。Hadoop 的主要优点[3] 有:扩容能力强、成本低廉、效率高、高可靠性、免费开源及良好的可移植性。
Hadoop 集群是典型的Master/Slaves 结构,NameNode与JobTracker 为Master,DataNodes 与TaskTrackers 为Slaves。NameNode 与DataNodes 负责完成HDFS 的工作,JobTracker 与TaskTrackers 则负责完MapReduce 的工作。
Apache Hadoop 项目包括多个子项目,但主要是由Hadoop分布式文件系统HDFS 和计算模型MapReduce 两个主
要的子项目组成。
1.1 Hadoop 分布式文件系统HDFS
HDFS被设计成适合运行在通用硬件上的分布式文件系统,它和现有的分布式文件系统有很多共同点,但同时,它和其他的分布式文件系统的区别也显而易见。HDFS 是一个具有高度容错性的系统,适合部署在廉价的机器上。HDFS 能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS设计是基于如下的前提和目标:
(1)硬件错误是常态而非异常:HDFS 可能有成百上千的服务器组件构成,每个组件上存储着文件系统的部分数据。任何一个组件失效都是有可能的,也就意味着总有一部分HDFS的组件是不正常工作或者不工作的。如此一来,错误检测和快速、自动化地恢复是HDFS 最核心的设计目标之一。
(2)数据流式访问:HDFS 的设计中更多地考虑到了数据批处理,而不是用户交互处理,由此保证数据访问的高吞吐量。
(3)大规模数据集:HDFS 上的一个典型文件大小一般都在GB 级至TB 级,甚至更高的PB 级。因此,HDFS 被设计以支持大文件存储,并能提供整体上的数据传输带宽,能在一个集群里扩展到数百个节点。
(4) 简单的一致性模型:HDFS 应用需要一个“一次写入多次读取”的文件访问模型。文件经过创建、写入和关闭之后就不需要改变,使高吞吐量的数据访问成为可能。
(5) 移动计算比移动数据更划算:一个应用请求的计算,离它操作的数据跃进就越高效,在数据达到海量级别的时候更是如此。为了能够降低网络阻塞,提供系统数据的吞吐量,HDFS为应用提供了将计算移动到数据附近的接口。
(6)异构软硬件平台间的可移植性:该特性方便了HDFS作为大规模数据应用平台的推广。
一个HDFS 集群是由一个NameNode 和一定数目的Datanodes 组成,NameNode 是一个中心服务器,负责管理文件系统的名字空间(Namespace)以及客户端对文件的访问。集群中的DataNode 一般是一个节点一个,负责管理它所在节点上的存储。HDFS 对外公开文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块(Block),这些块存储在一组DataNode 上。NameNode 执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录,它也负责确定数据块到具体DataNode 节点的映射。Datanode负责处理文件系统客户端的读写请求,在NamenNode 的统一调度下进行数据块的创建、删除和复制。
1.2 计算模型MapReduce
MapReduce[6] 是由Google 提出的云计算核心计算模型,Hadoop 计划将它开源化实现。MapReduce 是一种高效的分布式计算模型,同时是一种用于处理和生成大规模数据集的实现方式。
(1)Input: 应用程序提供Map 和Reduce 函数,并指明输入/ 输出的位置和其他运行必要的运行参数。该阶段会把输入目录下的大文件划分为若干独立的数据块。
(2)Map:MapReduce 模型把用户作业的输入看作是一组<key,value> 键值对,模型会调用用户自定义的Map函数处理每一个<key,value> 键值对,生成一批新的中间<key,value> 键值对,这两组键值对的类型可能不同。
(3)Shuffle&Sort: 为了保证Reduce 的输入是Map 排好序的输出。在Shuffle 阶段,通过网络为每个Reduce 获得所有Map 输出中与之有关的<key,value> 键值对;而在Sort 阶段,将按照key 的值对Reduce 的输入进行分组。通常Shuffle 和Sort 两个阶段是并行执行的。
(4)Reduce: 对每一个唯一key,执行用户定义的Reduce函数,输出新的<key,value> 键值对。
(5)Output: 将Reduce 输出的结果写入输出目录中。Hadoop 采用JobTracker/TaskTrackers 的主从式结构来实现MapReduce 编程模型。JobTracker 来分配Map 任务或Reduce 任务;TaskTracker 执行由JobTracker 发来
的指令并同时处理Map 和Reduce 阶段之间数据的移动,每个TaskTracker 节点会定期报告任务完成状态。如果一个TaskTracker 不能按照要求在特定时间间隔内完成被分配给的工作,那么JobTracker 会将分配给这个节点的数据发到别的节点上,并将该节点定义为不工作状态。
2 基于Hadoop 的云计算模型
在该模型中,用户的数据将被分割成多个数据块存储在每一个Slave 的DataNode 上,之后NameNode 负责管理这些数据块。用户的计算任务被分成多个Map 任务和Reduce 任务,JobTracker 负责启动、跟踪和调度Map 任务和Reduce 任务,这些任务是由每一Slave 的TaskTracker 所执行的。Job-Tracker 也同时侦测TaskTracker 的运行状况,必要时重新执行某个任务。计算结果会保存在用户指定的目录下。
分享到:
相关推荐
### Hadoop平台在云计算中的应用 #### 一、引言 云计算作为一种新兴的计算模型,融合了并行计算、分布式计算以及网格计算等技术特点,实现了计算资源和服务的有效分配与利用。用户可以通过互联网轻松访问所需的...
在云计算领域,Hadoop作为一个开源的分布式存储与计算框架,已成为研究与设计云存储方案的重要技术之一。本文深入探讨了基于Hadoop的分布式云存储方案的设计与实现,其中涵盖了Hadoop核心组件、分布式存储技术、...
通过对Hadoop在Android平台上的移植,使之能够满足移动云平台的需求,从而实现移动设备计算能力的延伸。 移动云平台的构建必须基于一些硬件和运行方式的假设,例如平台主要用于移动设备数据计算,而非传统的大规模...
1. 安装环境简介:Hadoop云计算平台支持Linux和Windows平台,推荐在Linux平台上安装,.Windows平台需要安装Cygwin来模拟UNIX环境。 2. 安装步骤: (1)下载和安装JDK,版本为jdk-7u51-linux-x64.tar.gz。 (2)创建...
4. ZooKeeper:ZooKeeper是Hadoop中的分布式配置和协调工具,提供了高可靠性和高可用性的分布式应用程序管理。 五、云计算框架 1. MR2框架:MR2是Hadoop中的云计算框架,提供了高可靠性和高可用性的分布式计算能力...
云计算是一种革新信息技术与商业服务的消费与交付模式,自2007...通过这篇文章,读者不仅能够了解到搭建基于Hadoop的云计算平台的理论知识,还能够掌握实际操作步骤,这将对学习和应用Hadoop云计算技术提供重要的参考。
本次2011年云计算大会聚焦了Hadoop在分布式流数据实时处理、统一数据存储和分析、社交网络服务(SNS)统计平台以及聚类推荐等多个关键领域的应用。以下将详细探讨这些主题。 首先,分布式流数据实时处理是现代...
通过上述步骤,我们可以构建一个完整的基于Hadoop的云计算平台,不仅能够理解Hadoop的基本结构和组成部分,还能够实际操作云存储虚拟平台的搭建、Hadoop环境配置及各种运行模式的建立。这一过程对于深入理解和掌握...
实验主题:武汉理工大学云计算应用 - Hadoop单机模式与伪分布式 **实验目的与意义:** 本次实验旨在让学生理解并掌握Hadoop的两种基础运行模式:单机模式和伪分布式模式。Hadoop是云计算领域的重要组件,主要用于大...
基于Hadoop的云计算应用研究主要集中在以下几个方面: 1) 大数据分析:通过MapReduce处理海量数据,挖掘有价值的信息。 2) 数据仓库:Hadoop与Hive、Pig等工具结合,构建大数据处理和分析平台。 3) 实时流处理:结合...
随着时间的推移,Hadoop逐渐发展成为互联网上内容分类的关键工具之一,不仅适用于搜索引擎领域,还广泛应用于处理需要极大伸缩性的问题,如在传统系统上可能耗时甚久的大规模文件处理任务。 #### 二、Hadoop的优势...
总结来说,基于Hadoop云计算平台的数据挖掘分析,不仅能够帮助企业在海量的客户数据中筛选出有用的信息,还能够通过云计算技术的特点,为数据存储提供安全性和高效的数据处理能力,从而为企业运营发展提供重要的数据...
- **平台即服务(PaaS)**:提供开发、测试和部署应用程序的环境,用户可以在此基础上构建和运行自己的应用。 - **基础设施即服务(IaaS)**:提供基本的计算资源,如服务器、存储和网络,用户可以在上面搭建自己的...
【HBase】是构建在 Hadoop 文件系统之上的分布式、列族式的非关系型数据库(NoSQL)。HBase 提供了实时读写、高并发和大数据量存储的能力,适合于半结构化或非结构化的数据存储。在HBase中,数据是以行键(Row Key)...
### 云计算基础课件-Hadoop:Google云计算的开源实现 #### Hadoop简介 Hadoop是一个由Apache基金会维护的开源框架,旨在提供一个高效、可靠且可扩展的分布式计算环境。它能够利用大量的普通硬件(而非昂贵的专业...
在实际应用中,使用Hadoop构建云计算平台通常包括以下几个步骤: 1. 部署Hadoop集群:这涉及硬件选择、操作系统配置、Hadoop版本选择以及集群的安装和配置。 2. 数据迁移:将现有的数据迁移到HDFS,这可能需要使用...