Chinaunix首页 | 论坛 | 博客
  • 博客访问: 504352
  • 博文数量: 213
  • 博客积分: 3076
  • 博客等级: 少校
  • 技术积分: 2158
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-24 16:08
文章分类

全部博文(213)

文章存档

2013年(134)

2012年(79)

我的朋友

分类: 云计算

2012-11-16 10:52:30

Hadoop平台在云计算中的应用

王宏宇

( 哈尔滨理工大学计算机科学与技术学院,黑龙江哈尔滨150080)

摘 要: 云计算是当前比较热门的新兴技术之一, 受到业界的广泛关注。Hadoop 是一个可实现大规模分布式计算的开源软件 平台, 因此被广泛应用在云计算领域。本文在对 Hadoop 的主要组件 Hadoop 分布式文件系统 HDFS(Hadoop Distributed File System) 和计算模型 MapReduce 进行深入分析和研究的基础上, 建立基于 Hadoop 平台的云计算模型, 通过实验证明该模型可以有效完成分 布式数据处理任务。

An application of Hadoop platform in cloud computing

WANG Hong-yu 【Abstract】Currently, cloud computing is one of the more popular emerging technologies, drawing much attention by industry. Hadoop is an open-source software which can achieve large-scale distributed computing, so it is widely used in cloud computing. This paper will do in-depth analysis and research on the main componet of Hadoop include HDFS (Hadoop Distributed File System ) and computing model MapReduce,then establish a cloud computing model based on Hadoop, The experiment shows that the model can effectively complete the distributed data processing tasks. Cloud-Computing; Hadoop; HDFS; MapReduce 【Key words】

(School of computer science and technology, Harbin University of Science and Technology, Harbin 150080)

0 引言

云计算  是一种新兴的计算模型, 它是并行计算、 分布式 计算、 网格计算的综合发展, 或者说是这些计算科学概念的商 业实现。它的基本原理是将计算、 存储及软硬件等服务分布在 非本地的大量计算机构成的资源池上, 用户通过网络获得相应 的服务, 从而有效的提高资源利用率, 实现了真正的按需获取。 目前云计算模型众多, 但多为商业模型, Hadoop 作为开源 而 的云计算模型, 它模仿和实现了 Google 云计算的主要技术, 并 且使用 Java 语言编写, 可移植性强, 为个人和企业进行云计算 方面的研究和应用奠定了基础。

Apache Hadoop 项目包括多个子项目, 但主要是由 Hadoop 分布式文件系统 HDFS 和计算模型 MapReduce 两个主 要的子项目组成。

1.Hadoop 集群的整体部署结构

Hadoop 介绍

Hadoop是由 Apache 开源组织的一个分布式计算框架, 可以在大量廉价的硬件设备组成的集群上运行应用程序, 为应 用程序提供了一组稳定可靠的接口, 旨在构建一个具有高可靠 性和良好扩展性的分布式系统。Hadoop 的主要优点 有: 扩 容能力强、 成本低廉、 效率高、 高可靠性、 免费开源及良好的可 移植性。 Hadoop 集 群 是 典 型 的 Master/Slaves 结 构, NameNode 与 JobTracker 为 Master, DataNodes 与 TaskTrackers 为 Slaves。NameNode 与 DataNodes 负 责 完 成 HDFS 的 工 作, JobTracker 与 TaskTrackers 则负责完成 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 作为大规模数据应用平台的推广。

 

五宏宇: Hadoop 平台在云计算中的应用 一 组 键 值 对, 型 会 调 用 用 户 自 定 义 的 Map 模 函 数 处 理 每 一 个 键 值 对, 成 一 批 新 的 中 间 生 键值对, 这两组键值对的类型可能不同。

 Shuffle;Sort: 为了保证 Reduce 的输入是 Map 排好 序的输出。在 Shuffle 阶段, 通过网络为每个 Reduce 获得所有 Map 输出中与之有关的 键值对; 而在 Sort 阶段, 将按照 key 的值对 Reduce 的输入进行分组。通常 Shuffle 和 Sort 两个阶段是并行执行的。

 Reduce: 对每一个唯一 key, 执行用户定义的 Reduce 函数, 输出新的 键值对。

 Output: 将 Reduce 输出的结果写入输出目录中。 Hadoop 采 用 JobTracker/TaskTrackers 的 主 从 式 结 构 来 实 现 MapReduce 编 程 模 型。JobTracker 来 分 配 Map 任 务 或 Reduce 任 务; TaskTracker 执 行 由 JobTracker 发 来 的指令并同时处理 Map 和 Reduce 阶段之间数据的移动, 每 个 TaskTracker 节 点 会 定 期 报 告 任 务 完 成 状 态。 如 果 一 个 TaskTracker 不能按照要求在特定时间间隔内完成被分配给的 工作, 那么 JobTracker 会将分配给这个节点的数据发到别的 节点上, 并将该节点定义为不工作状态。

 

一 个 HDFS 集 群 是 由 一 个 NameNode 和 一 定 数 目 的 Datanodes 组成, NameNode 是一个中心服务器, 负责管理文 件系统的名字空间 (Namespace)以及客户端对文件的访问。 集群中的 DataNode 一般是一个节点一个, 负责管理它所在节 点上的存储。HDFS 对外公开文件系统的名字空间, 用户能够 以文件的形式在上面存储数据。 从 内 部 看, 个 文 件 其 实 被分成一个或多个数据块一(Block)这些块存储在一组 DataNode 上。NameNode 执行文 , 件系统的名字空间操作, 比如打开、 关闭、 重命名文件或目录, 它也负责确定数据块到具体 DataNode 节点的映射。Datanode 负责处理文件系统客户端的读写请求, NamenNode 的统一 在 调度下进行数据块的创建、 删除和复制。

 

计算模型 MapReduce 的工作流程

2 基于 Hadoop 的云计算模型

在该模型中, 用户的数据将被分割成多个数据块存储在每 一 个 Slave 的 DataNode 上, 后 NameNode 负 责 管 理 这 些 之 数据块。用户的计算任务被分成多个 Map 任务和 Reduce 任 务, JobTracker 负责启动、 跟踪和调度 Map 任务和 Reduce 任 务, 这些任务是由每一 Slave 的 TaskTracker 所执行的。JobTracker 也同时侦测 TaskTracker 的运行状况, 必要时重新执 行某个任务。计算结果会保存在用户指定的目录下。

1.2 计算模型 MapReduce

MapReduce 是由 Google 提出的云计算核心计算模型, Hadoop 计划将它开源化实现。MapReduce 是一种高效的分 布式计算模型, 同时是一种用于处理和生成大规模数据集的实 现方式。

(1) Input: 应用程序提供 Map 和 Reduce 函数, 并指明输 入 / 输出的位置和其他运行必要的运行参数。该阶段会把输 入目录下的大文件划分为若干独立的数据块。

(2) Map:MapReduce 模 型 把 用 户 作 业 的 输 入

 

 基于 Hadoop 的云计算实现步骤

3.1 硬件环境配置

由上述分析, Hadoop 集群是 Master/Slave 结构, 所以,

·

软件 实 验 中 使 用 一 台 机 器 作 为 Master, 责 NameNode 和 Job负 Tracker 的 工 作,
三 台 机 器 作 为 Slave, 责 DataNode 和 另 负 TaskTracker 的工作。每台实验机器上均运行 CentOS5.5 系 统, java 版本 1.6.0, Hadoop 版本 0.20.2。 实验中的四台机器分别设置主机名为 hadoop1、 hadoop2、 hadoop3、 hadoop4, 其中 hadoop1 为 Master, 其他为 Slave。 修改每台机器的 /etc/host 文件, 添加如下内容: 192.168.1.100 192.168.1.101 192.168.1.102 192.168.1.103 hadoop1 hadoop2 hadoop3 hadoop4

五宏宇: Hadoop 平台在云计算中的应用

dfs.replication 1 (5)编 辑 conf/master 文 件, 加: 添 192.168.1.100。 编 辑 conf/slave 文 件,添 加: 192.168.1.101, 192.168.1.102, 192.168.1.103。 (6) 格式化 HDFS 并启动服务 #bin/hadoop namenode –format #bin/start-all.sh (7) 查看节点运行情况 命令行方式: $bin/hadoop dfsadmin –report

3.2 设置免密码 SSH 登录

Hadoop 集群中工作的机器是通过 SSH 的方式互相通信 的, 而顺利通信的关键是不需要密码就能够进行访问。在每台 机器上进行如下操作: #ssh-keygen -t dsa #cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys #chmod 755 ~/.ssh/ #chmod 644 ~/.ssh/authorized_keys 然后将每台机器的~ /.ssh/id_dsa.pub 内容追加到其他 所有机器的~ /.ssh/authorized_keys 文件末尾。 使用如下命令测试是否可以免密码登录成功: #ssh localhost #ssh hadoop*

4 实验模拟云计算

以下操作均是在 Master 上的 Hadoop 根目录下进行。 #vi input 输入内容: Hello this is a sunday today Hello i like this book 。 #bin/hadoop dfs -put input testin 将输入数据上传到 HDFS 上。 #bin/hadoop jar hadoop-0.20.2-example.jar wordcount testin testout 统计单词个数。

3.3 配置 Hadoop 环境

(1)解 压 Hadoop 软 件 包 到 根 目, 辑 conf/hadoop编 env.sh 文 件, JAVA_HOME 前 的 注 释 符 # 去 掉, 设 定 将 并 java 根目录, 本机为 JAVA_HOME=/usr。 (2) 编辑 conf/core-site.xml 文件, 添加如下内容: fs.default.name hdfs://192.168.1.100:9000/ hadoop.tmp.dir /hadoop-0.20.2/tmp (3) 编辑 conf/mapred-site.xml 文件, 添加如下内容: mapred.job.tracker 192.168.1.100:9001 (4) hdfs-site.xml 中添加如下内容:

Hadoop 运行任务过程

#bin/hadoop dfs -cat testout/part-r-00000 查看计算结果。

 

实验模拟结果

5 结论

通过实验结果得出, 将数据上传到云计算环境中后, 计算 任务被分给各个任务处理节点, 各任务处理节点将任务处理完 成后将结果进行了汇总, 最终完成了分布式处理任务, 正确的 统计出了每个英文单词出现的次数。受硬件环境的制约, 实验 中所处理的数据量并不大, 平台中参与数据处理的计算机数量软件

 

 孟志刚等: 模糊控制在液位控制器中的应用

 

隶属度函数编辑器

5 结束语

通过仿真结果, 我们可以看出该系统的输出响应速度快, 系统的超调量小, 过渡时间快, 能够满足实际工业生产的需要。

 

 Hadoop 是一个可以处理以 PB 为单位的大规模 数据处理平台, 并且在平台中参与工作的计算机数量达到数以 万计是依然可以具备良好的性能和稳定性。当数据足够大时, 单机完成任务所需要的时间将远远大于 Hadoop 平台, 而且单 机的数据处理能力有限, Hadoop 平台却可以根据实际需要 而 添加更多的计算机进算从而来提高数据处理能力。相比单机 运行计算任务可能出现宕机等不稳定因素, Hadoop 平台也提 供了很好的监测和管理机制, 保证平台中总会有足够多正常工 作的计算机来完成任务。

 

 

              文本地址

阅读(1231) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~