云计算环境下架构Hadoop集群的数据分配方式

引言

云计算(Cloud Computing)是一种新兴的商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务。云计算是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(ParallelComputing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization),负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。

它的数据存储是采用分布式存储方式实现的,这就可以保证高可靠性、高可用性和经济性,数据存储的高可靠性是采用冗余存储的方式来保证的,用可靠的软件来弥补硬件的不足,从而提供廉价可靠的海量分布式存储服务和计算服务。另外,数据存储技术必须具有高吞吐率和高传输率的特点。这样云计算系统就可同时满足大量用户的需求,才能为大量用户并行地提供服务。云计算的数据存储系统最著名的是谷歌研发的非开源系统GFS(Google File System)和Hadoop开发团队开发的开源系统HDFS(Hadoop Distributed FileSystem)。

1. MapReduce编程模型

并行计算技术是云计算的核心技术,也是最具战性的技术之一。MapReduce是Google公司的核心计算模型,名字源于函数式编程模型中的两项核心操作:Map和Reduce操作。Map操作独立地对每个元素进行操作,且操作没有副作用;Reduce操作对N个Map结果进行归约,也就是Map[1,2.。.,N]的结果是Reduce操作的参数。在一个指令式语言中求值顺序是确定的,每个函数都有可能会变更或依赖于外部状态,所以必须有序地执行这些函数。在MapReduce编程模型中,只要没有函数修改或依赖千全局变量,N个Map操作的执行顺序可以是无序的,这种特性使得MapReduce模型适合于对大规模数据进行并行处理。

在MapReduce计算模型中,有两个关键过程:映射过程Map和聚集过程Reduce。因此需要用户提供两个关键函数,映射(Map)函数和聚集(Reduce)函数,这两个函数对一组输人的键值对(key/value)进行计算,得出另一组输出键值对,即有:

Map:(in_key, in_value)-{(keyj, valuej)j=l.。.k}

Reduce :(key,[valuel,。..,valuem])一(key, fina_value)

在不同的应用中,Map和Reduce的输人参数和输出结果是不相同的。Map的输入参数in_key和in_value,给S了Map函数要处理的是哪些数据。每个Map函数计算完与后输出结果一组键/值对,它们是经过Mad任务执行完成后所返回的中间结果。系统在执行Reduce任务之前,先检查前面Map任务返回的中间结果,根据Key进行分类处理,把相同key值所对应的value合并在一起把它们送给同一个Reduce任务进行处理,从而可以看出Reduce的输入参数是(key,[ valuel,…,valuem])。Reduc任务主要对这些有着相同key值所对应的value值进行归字处理,在Reduce任务执行完成后输出(key, finaLvalue)的f果。一个key值对应了一个Reduce任务,把所有Reduce千务执行的结果合并连接在一起就形成了最终的输出结果。

典型的MapReduce计算过程如图1

图1 MapReduce的工作流

(4)MapReduce库把所有具有相同中间key值I的中间value值集合在一起后传递给reduce函数;

(5)用户自定义的Reduce函数接受一个中间key的值I和相关的一个value值的集合。Reduce函数将这些value值合并成一个较小的value值的集合。正常的,每次Reduce函数调用只产生0或I个输出value值。可以通过一个迭代器把中间value值提供给Reduce函数,这样就可以处理无法全部放入内存中的大量的value值的集合。

2. Hadoop框架的工作机制

Hadoop是Apache软件基金会(Apache SoftwareFoundation)组织下的一个开源项目,提供分布式计算环境下的可靠、可扩展软件。Hadoop平台拥有自己的分布式文件系统(HDFS),具体实现采用MapReduce模式。Hadoop采取文件备份的方式,为每份数据制作若干拷贝,拥有较高的安全可靠性。作为一个开源的分布式系统平台,Hadoop除了拥有开源所带来的更新速度快、应用广泛等优势外,还具有以下一些其它分布式云计算框架所共有的优点:高度的可扩展性、经济实用性、高速有效性、高可靠性。

HDFS采用Master/Slave架构,一个HDFS集群由一个命名节点((NameNode)和一组数据节点(DataNode)组成。命名节点是一个中心服务器,负责管理文件系统的名字空间(NameSpace)以及客户端对文件的访问。在集群系统中,一般在一个节点上运行一个数据节点,负责管理它所在节点上的数据存储,并负责处理文件系统客户端的读写请求,在命名节点的统一调度下进行数据块的创建、删除和复制。Hadoop还实现了Google的MapReduce分布式计算模型,MapReduce把应用程序的总任务分割成许多子任务,每个子任务可以在任何集群节点(数据节点,通常也作为计算节点)上并行处理。HDFS创建了多份数据块(Data Blocks)的副本(Replicas),以保证各个子任务节点计算的可靠性((Reliability)。由于采用了分布式文件系统和MapRedace模型,因此Hadoop框架具有高容错性及对数据读写的高吞吐率,能自动处理失败节点。图2是Hadoop集群系统架构的示意图。

由图2可知,HDFS是由一个命名节点和多个数据节点组成的。数据节点存储着文件系统的元数据,它的作用就像是文件系统的总指挥,维护文件系统命名空间、规范客户对于文件的存取和提供对于文件目录的操作,数据节点中存储着实际的数据,负责管理存储节点上的存储空间和来自客户的读写请求。数据节点也执行块创建、删除和来自命名节点的复制命令。

(责任编辑:蒙遗善)

时间: 2024-11-03 14:02:49

云计算环境下架构Hadoop集群的数据分配方式的相关文章

Linux服务器下搭建hadoop集群环境 redhat5/Ubuntu 12.04

Ubuntu 12.04 下搭建 hadoop 集群环境步骤 一. 搭建环境前的准备: 我的本机Ubuntu 12.04 32bit作为maser,就是上篇hadoop单机版环境搭建时用的那台机子,http://www.linuxidc.com/Linux/2013-01/78112.htm 还在KVM中虚拟了4台机子,分别起名为: son-1        (ubuntu 12.04 32bit),son-2        (ubuntu 12.04 32bit),son-3        (

windows7下搭建hadoop集群环境

问题描述 有人会在win7下搭建hadoop集群环境吗?我急需要搭建,有会的帮帮忙吧,我整了两天了没弄出来,着急死了!cygwin安装完运行sshlocalhost出现这种错误,是怎么回事啊? 解决方案 解决方案二:我是真心不会,帮顶吧,有份资料可以参考下,去搜"王家林hadoop".解决方案三:楼上的问题解决了吗?我跟你遇到了完全相同的问题~跪求答案

cygwin在win7下搭建hadoop集群环境

问题描述 江湖救急!!有人会在win7下搭建hadoop集群环境吗?我急需要搭建!cygwin安装完运行sshlocalhost出错!

云环境下 开拓产业集群信息服务平台新模式

中介交易 SEO诊断 淘宝客 云主机 技术大厅 产业集群信息服务平台是基于产业集群,整合同一产业中位于同一环节的多个核心企业,及存在着与产业相关的上下游企业,以产品或劳务形式向用户提供各种信息劳动,包括信息的传播报道.信息咨询以及信息技术培训和信息提供等的信息服务平台.它是围绕同一产业或相关产业的供应商.制造商和经销商,甚至是终端客户等组织,通过信任机制进行相互沟通和信息服务的一种平台.如"中国产业集群". "产业集群网" 等.产业集群作为我国产业经济发展的重要力量

window下连接hadoop集群报错

问题描述 window下连接hadoop集群报错 window下连接hadoop集群报错,已经把hadoop.dll放在window下的hadoop的bin目录了,system32也放了,还是无效,请问怎么办?? 解决方案 这是异常了吧,调用有问题.对应hadoop安装好了没 解决方案二: http://www.cnblogs.com/heyonggang/archive/2012/12/21/2827838.html 解决方案三: window下连接hadoop集群基础超详细版Window下使

hadoop集群间数据迁移

问题描述 hadoop集群间数据迁移 bin/hadoop distcp hftp://master:50070/user/wp hdfs://ns1/user/ hadoop集群间数据迁移org.apache.hadoop.tools.mapred.RetriableFileCopyCommand$CopyReadException: java.net.SocketTimeoutException: connect timed out

【Data Cluster】真机环境下MySQL数据库集群搭建

             真机环境下MySQL-Cluster搭建文档 MySQL Cluster简介       MySQL cluster 和 Oracle RAC 完全不同,它采用 无共享架构Shared nothing(shared nothing architecture).整个集群由管理节点(ndb_mgmd),处理节点(mysqld)和存储节点(ndbd)组 成,不存在一个共享的存储设备.MySQL cluster 主要利用了 NDB 存储引擎来实现,NDB 存储引擎是一个内存式存

Mac 环境下 Nginx + Tomcat集群, 测试OK

下面开始我们的步骤: 第一步: 安装我们的Nginx, Mac上是利用brew安装的; [chenyuan@Mac:~]$ brew install nginx ==> Installing nginx dependency: pcre ==> Downloading http://downloads.sourceforge.net/project/pcre/pcre/8.34/pcre-8.3 #################################################

Hadoop集群环境下的网络架构的设计与优化

Hadoop集群环境下的网络架构的设计与优化 冯力 杨凯 杨帆 大数据时代,研究大数据的IT厂商把研究重心放在优化大数据系统软件架构.优化业务逻辑.优化数据分析算法.优化节点性能等方向,而忽略了大数据环境基础设置中网络环节的评估和优化.本文介绍了思科公司在Hadoop集群环境下的网络架构设计与优化经验.大数据Hadoop环境网络特性Hadoop集群中的各节点通过网络连接起来,而且MapReduce中的以下过程会在网络中传输数据. Hadoop集群环境下的网络架构的设计与优化