当前位置:
文档之家› Hadoop云计算平台实验报告
Hadoop云计算平台实验报告
数据校验技术提高了数据的高可靠性。NameNode 执行文件系统的名字空间操作, 比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体 DataNode 节 点的映射。 DataNode 负责存放数据块和处理文件系统客户端的读写请求。在 NameNode 的统一调度下进行数据块的创建、删除和复制。
责任务执行。用户提交基于 MapReduce 变成规范的作业之后,JobTracker 根据作 业的输入数据的分布情况(在 HDFS 之中) ,将 Map 任务指派到存储这些数据块 的 DataNode 上执行(DataNode 也充当了 TaskTracker) ,Map 完成之后会根据用 户提交的 Reduce 任务数对中间结果进行分区存储在 Map 任务节点本地的磁盘, 执行 Reduce 任务的节点(由 JobTracker 指派)通过轮询的方式从各 Map 节点拉 取 Reduce 的输入数据,并在 Reduce 任务节点的内存进行排序后进行合并作为 reduce 函数的输入,输出结果又输出到 HDFS 中进行存储。
Hadoop 云计算平台实验报告
金松昌 11069010 唐明圣 11069033 尹洪 11069069
实验目标
1. 掌握 Hadoop 安装过程 2. 理解 Hadoop 工作原理 3. 测试 Hadoop 系统的可扩展性 4. 测试 Hadoop 系统的稳定性 5. 测试 Hadoop 系统的可靠性
排序
分片 0
Map
复制 合并
reduce
分区 0
HDFS 副本
分片 1
Map HDFS 副本
reduce Map
分区 1
分片 2
图 2 MapReduce 数据处理流程示意图
除了 HDFS 和 MapReduce 这两个核心子项目之外,Hadoop 还包括 Hbase 和 Hive 以及 Pig、ZooKeeper、Avro、Chukwa 等项目。其中 Hbase 是一个分布式的 基于列 (列族) 存储的数据库, 它使用 HDFS 作为底层存储, 同时支持 MapReduce 的批量是计算和点查询。 Hive 一个分布式的数据仓库, 使用 HDFS 进行数据存储, 并提供基于 SQL 的查询语言(由运行时引擎翻译成 MapReduce 作业)用于查询 数据。
2.实验设计
本实验主要是针对 Hadoop 系统的可扩展性、稳定性、可靠性,其中主要针 对 HDFS 进行测试,最后给出 MapReduce 的一个词频统计的实例。
2.1 可扩展性
Hadoop 系统支持系统的动态扩容,只需要修改修改各节点的 slaves 文件, 将需要添加的数据或计算节点加入进来, 或者删掉需要注销的数据或计算节点即 可,只要新加入的节点已经成功配置了 Hadoop,那么就可以通过启动新的节点 来实现动态扩容;对于删除节点,跟添加节点类似,将 slave 配置信息中删除该 节点,然后在停掉该节点的数据服务即可。 有的时候,需要向集群中增加新的机器时又不能重启集群。我们可以采用下 面的过程来实现 Hadoop 系统的动态扩展而不用重启集群。 1.把新机器的增加到 conf/slaves 文件中 (Datanode 或者 Tasktracker 则可跳过) 2.在新机器上进入 hadoop 安装目录 $bin/hadoop-daemon.sh start datanode $bin/hadoop-daemon.sh start tasktracker 3.在 Master 即 Namenode 上 执行如下指令,实现系统负载的平衡: $bin/hadoop balancer 对于要删除某一个节点,我们可以执行如下过程,而不需重启服务器: 1. 从 conf/slaves 文件中移除该节点 2. 在待移除节点上执行如下指令 $bin/hadoop-daemon.sh stop datanode $bin/hadoop-daemon.sh stop tasktracker 3. 在 Master 即 Namenode 上 执行如下指令,实现系统负载的平衡: $bin/hadoop balancer 3 .
2.3 可靠性
因为 Hadoop 的文件系统采用了多副本技术保证了数据的可靠性,如果发生 了副本损害或者副本丢失, 用户仍然可以通过其他副本进行数据访问和数据操作,
从而保证数据的可靠性。 HDFS 的 NameNode 有一个后台进程进行文件块的扫描, 如果当前某一个数据块的副本数低于系统设定的安全阈值,那么 NameNode 就 会启动相关进程,完成副本的复制,直到副本数达到安全阈值的要求。 可以通过分析数据分布, 或者通过 MapReduce 进行词频统计来验证数据的可 靠性。
实验过程
1.实验环境
设计 Hadoop 实验平台之前,在考虑一般用户或者中小企业不可能购买和安 置大量服务器的情况下,要学习 Hadoop 的最佳方式就是通过虚拟平台来仿真云 计算系统分布式运行的工作模式。在虚拟技术支持下,只需要一台够强力的计算 机,然后在其上运行 Virtual Box、Xen 或者 VMware 之类的虚拟软件,依照计算 机本身的能力,虚拟出 3-5 台 Linux 操作系统,每一个虚拟操作系统上都运行 Hadoop 系统,就可以完成一个小型的 Hadoop 实验平台。考虑到实验室的计算机 的硬件配置不高以及实验室作为公共实验环境, 计算机都安装了 Windows 操作系 统的实际情况, 我们只能通过在每台计算机上安装虚拟软件,通过虚拟软件安装 虚拟的 linux 操作系统,然后在操作系统中安装 Hadoop 系统,通过各个虚拟 linux 操作系统的互连,完成 Hadoop 实验平台的搭建。Hadoop 实验平台配置方 式如图 3 所示:
因为是通过虚拟化软件安装虚拟操作系统,所以安装过程不像在物理机上直 接安装 linux 操作系统那样,需要选择磁盘分区、创建帐户、选择键盘布局、选
择时区、选择语言等等步骤。 安装完成后,就可以启动并登陆刚才安装的虚拟机了。
登陆成功之后,如下图所示,至此,Ubuntu 虚拟机已经安装完成,下一步, 我们开始在 Ubuntu 系统中安装 Hadoop 系统及其支撑环境。
2.2 稳定性
Hadoop 系统架构在通用商用机上,HDFS 的设计思想将普通硬件故障视为常 态,个别机器的故障不影响系统的正常运行。 通过将足够大文件上传到 HDFS 上,使文件散布到多个节点上,然后通过人 为切断某一台机器的网络,如果系统还能正常提供服务,则说明系统是稳定的, 因为本系统只有 3 个数据节点,副本数设定为 2,所以只能切断一台服务器来验 证系统的稳定性。当系统规模足够大的时候,文件散布的更加分散,可以允许更 多的机器故障。
图 3 Hadoop 实验平台配置方式
Hadoop 当前的运行平台为 Linux,至于 Win32 平台则还在开发阶段,尚不成 熟, 因此, 在 Windows 物理机上通过虚拟软件采用 Ubuntu 散布套件来安装 Linux, 然后将 Hadoop 构建与 Linux 平台之上,是一种最简单的方式,各个虚拟 Linux 系统上都必须装有如下软件:
Hadoop Master NameNode JobTracker
node3 192.168.6.198
node3 192.168.6.198
Hadoop Slaves
node4 192.168.6.198
node5 192.168.Tracker
DataNode
TaskTracker
选择“Installer disc image file(iso)”选项,通过“Browser”安装选中需要使用 的 Ubuntu 操作系统的 ISO 文件 (也可以通过 Ubuntu 的安装光盘进行安装, 此略) 。 单击“next” ,出现用户名及密码设定对话框,如下图所示:
在文本输入框中分别输入用户名以及用户密码等,点击“next” ,出现配置节 点名以及虚拟机系统在本地磁盘的存放路径的对话框,如下图所示:
点击“next” ,出现配置磁盘容量的对话框,此对话框指定 Ubuntu 操作系统 的磁盘空间,不能超过本地磁盘分区剩余的可用空间。点击“ next” ,出现配置 信息的确认对话框,如下图所示:
如果需要修改,则可以返回,如果不需要修改,直接点击“Finish” ,完成虚 拟机的配置,接下来开始安装 Ubuntu 操作系统。
Ubuntu Linux 操作系统 Hadoop 云计算系统 Java 6 开发环境 由于各个物理机均采用同构的方式进行安装,所以只需要安装一台虚拟机, 然后将虚拟机文件拷贝到其他机器上,进入 linux 虚拟系统,修改相关配置信息 即可。
1.1 安装 Linux 操作系统
首先需要 Ubuntu 操作系统的 ISO 镜像,可以去 Ubuntu 的官方网站下载: . 我们下载的是 Ubuntu 10.10 32bit Desktop 版。 启动 WMware 软件, 点击“File”菜单,选择“Create a New Virtual Machine” 菜单项,弹出 New Virtual Machine Winzard 对话框如下图所示:
实验原理
1.Hadoop 工作原理
Hadoop 是 Apache 开源组织的一个分布式计算框架,可以在大量廉价的硬件 设备组成集群上运行应用程序, 为应用程序提供一组稳定可靠的接口,旨在构建 一个具有高可靠性和良好扩展性的分布式系统。Hadoop 框架中最核心的设计就 是:MapReduce 和 HDFS。MapReduce 的思想是由 Google 的一篇论文所提及而 被广为流传的, 简单的一句话解释 MapReduce 就是“任务的分解与结果的汇总”。 HDFS 是 Hadoop 分布式文件系统(Hadoop Distributed File System)的缩写,为 分布式计算、存储提供了底层支持。 HDFS 采用 C/S 架构,对外部客户机而言,HDFS 就像一个传统的分级文 件系统。可以对文件执行创建、删除、重命名或者移动等操作。HDFS 中有三种 角色:客户端、NameNode 和 DataNode。HDFS 的结构示意图见图 1。 NameNode 是一个中心服务器,存放着文件的元数据信息,它负责管理文件 系统的名字空间以及客户端对文件的访问。DataNode 节点负责管理它所在节点 上的存储。NameNode 对外暴露了文件系统的名字空间,用户能够以文件的形式 在上面存储数据。从内部看,文件被分成一个或多个数据块,这些块存储在一组 DataNode 上,HDFS 通过块的划分降低了文件存储的粒度,通过多副本技术和