为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Hadoop云计算平台实验报告

2013-06-20 30页 pdf 2MB 108阅读

用户头像

is_429093

暂无简介

举报
Hadoop云计算平台实验报告 Hadoop 云计算平台实验报告 金松昌 11069010 唐明圣 11069033 尹洪 11069069 实验目标 1. 掌握 Hadoop 安装过程 2. 理解 Hadoop 工作原理 3. 测试 Hadoop 系统的可扩展性 4. 测试 Hadoop 系统的稳定性 5. 测试 Hadoop 系统的可靠性 实验原理 1.Hadoop 工作原理 Hadoop 是 Apache 开源组织的一个分布式计算框架,可以在大量廉价的硬件 设备组成集群上运行应用程序,为应用程序提供一组稳定...
Hadoop云计算平台实验报告
Hadoop 云计算平台实验报告 金松昌 11069010 唐明圣 11069033 尹洪 11069069 实验目标 1. 掌握 Hadoop 安装过程 2. 理解 Hadoop 工作原理 3. 测试 Hadoop 系统的可扩展性 4. 测试 Hadoop 系统的稳定性 5. 测试 Hadoop 系统的可靠性 实验原理 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 通过块的划分降低了文件存储的粒度,通过多副本技术和 数据校验技术提高了数据的高可靠性。NameNode 执行文件系统的名字空间操作, 比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体 DataNode 节 点的映射。DataNode 负责存放数据块和处理文件系统客户端的读写请求。在 NameNode 的统一调度下进行数据块的创建、删除和复制。 图 1 HDFS 体系结构示意图 客户端要访问一个文件,首先从 NameNode 获得组成文件的数据块的位置列 表;然后直接与相应的 DataNode 建立连接并读取文件数据。数据流不经过 NameNode 节点。 Hadoop 通过 MapReduce 进行海量数据处理,它是一个并行处理大规模数 据的软件框架。MapReduce 的设计思想基于“移动计算靠近存储”,在面向海 量数据处理的技术中,通过网络将数据传输到用于计算的节点所消耗的开销远大 于处理数据所需要的开销,而 MapReduce 将数据的处理任务交给了存储该数据 的节点,避免了数据传输所带来的开销。 MapReduce 的根源是函数性变成种的 map 和 reduce 函数,它由两个包含 多个实例(许多的 Map 和 Reduce)的操作组成。Map 函数接收一组数据并将 其转换成一个键/值对列表,输入域中的每个元素对应于一个键/值对。Reduce 函数接收 Map 函数生成列表,然后根据它们的键(为每个键生成一个键/值对) 缩小键/值对列表。MapReduce 的数据处理流程示意图如图 2 所示: MapReduce 也采用 C/S 架构,其中 JobTracker 负责作业调度,TaskTracker 负 分片 0 Map Map Map reduce 分区0 分片 1 分片 2 reduce 分区1 HDFS 副本 HDFS 副本 排序 复制 合并 责任务执行。用户提交基于 MapReduce 变成规范的作业之后,JobTracker 根据作 业的输入数据的分布情况(在 HDFS 之中),将 Map 任务指派到存储这些数据块 的 DataNode 上执行(DataNode 也充当了 TaskTracker),Map 完成之后会根据用 户提交的 Reduce 任务数对中间结果进行分区存储在 Map 任务节点本地的磁盘, 执行 Reduce 任务的节点(由 JobTracker 指派)通过轮询的方式从各 Map 节点拉 取 Reduce 的输入数据,并在 Reduce 任务节点的内存进行排序后进行合并作为 reduce 函数的输入,输出结果又输出到 HDFS 中进行存储。 图 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 安装目录 3.在 Master 即 Namenode 上 执行如下指令,实现系统负载的平衡: 对于要删除某一个节点,我们可以执行如下过程,而不需重启服务器: 1. 从 conf/slaves 文件中移除该节点 2. 在待移除节点上执行如下指令 3. 在 Master 即 Namenode 上 执行如下指令,实现系统负载的平衡: 3. 2.2 稳定性 Hadoop 系统架构在通用商用机上,HDFS 的设计思想将普通硬件故障视为常 态,个别机器的故障不影响系统的正常运行。 通过将足够大文件上传到 HDFS 上,使文件散布到多个节点上,然后通过人 为切断某一台机器的网络,如果系统还能正常提供服务,则说明系统是稳定的, 因为本系统只有 3 个数据节点,副本数设定为 2,所以只能切断一台服务器来验 证系统的稳定性。当系统规模足够大的时候,文件散布的更加分散,可以允许更 多的机器故障。 2.3 可靠性 因为 Hadoop 的文件系统采用了多副本技术保证了数据的可靠性,如果发生 了副本损害或者副本丢失,用户仍然可以通过其他副本进行数据访问和数据操作, $bin/hadoop-daemon.sh start datanode $bin/hadoop-daemon.sh start tasktracker $bin/hadoop balancer $bin/hadoop-daemon.sh stop datanode $bin/hadoop-daemon.sh stop tasktracker $bin/hadoop balancer 从而保证数据的可靠性。HDFS 的 NameNode 有一个后台进程进行文件块的扫描, 如果当前某一个数据块的副本数低于系统设定的安全阈值,那么 NameNode 就 会启动相关进程,完成副本的复制,直到副本数达到安全阈值的要求。 可以通过分析数据分布,或者通过 MapReduce 进行词频统计来验证数据的可 靠性。 实验过程 1.实验环境 设计 Hadoop 实验平台之前,在考虑一般用户或者中小企业不可能购买和安 置大量服务器的情况下,要学习 Hadoop 的最佳方式就是通过虚拟平台来仿真云 计算系统分布式运行的工作模式。在虚拟技术支持下,只需要一台够强力的计算 机,然后在其上运行 Virtual Box、Xen或者 VMware之类的虚拟软件,依照计算 机本身的能力,虚拟出 3-5 台 Linux 操作系统,每一个虚拟操作系统上都运行 Hadoop系统,就可以完成一个小型的 Hadoop 实验平台。考虑到实验室的计算机 的硬件配置不高以及实验室作为公共实验环境,计算机都安装了 Windows操作系 统的实际情况,我们只能通过在每台计算机上安装虚拟软件,通过虚拟软件安装 虚拟的 linux 操作系统,然后在操作系统中安装 Hadoop 系统,通过各个虚拟 linux 操作系统的互连,完成 Hadoop 实验平台的搭建。Hadoop 实验平台配置方 式如图 3所示: 图 3 Hadoop 实验平台配置方式 Hadoop 当前的运行平台为 Linux,至于 Win32 平台则还在开发阶段,尚不成 熟,因此,在 Windows 物理机上通过虚拟软件采用 Ubuntu 散布套件来安装 Linux, 然后将 Hadoop 构建与 Linux 平台之上,是一种最简单的方式,各个虚拟 Linux 系统上都必须装有如下软件: NameNode JobTracker Hadoop Master node3 192.168.6.198 node3 192.168.6.198 DataNode TaskTracker DataNode TaskTracker node4 192.168.6.198 node5 192.168.6.197 Hadoop Slaves  Ubuntu Linux 操作系统  Hadoop 云计算系统  Java 6 开发环境 由于各个物理机均采用同构的方式进行安装,所以只需要安装一台虚拟机, 然后将虚拟机文件拷贝到其他机器上,进入 linux 虚拟系统,修改相关配置信息 即可。 1.1 安装 Linux 操作系统 首先需要 Ubuntu 操作系统的 ISO 镜像,可以去 Ubuntu 的官方网站下载: http://www.ubuntu.org. 我们下载的是 Ubuntu 10.10 32bit Desktop 版。 启动 WMware 软件,点击“File”菜单,选择“Create a New Virtual Machine” 菜单项,弹出 New Virtual Machine Winzard 对话框如下图所示: 选择“Installer disc image file(iso)”选项,通过“Browser”安装选中需要使用 的 Ubuntu操作系统的 ISO 文件(也可以通过 Ubuntu的安装光盘进行安装,此略)。 单击“next”,出现用户名及密码设定对话框,如下图所示: 在文本输入框中分别输入用户名以及用户密码等,点击“next”,出现配置节 点名以及虚拟机系统在本地磁盘的存放路径的对话框,如下图所示: 点击“next”,出现配置磁盘容量的对话框,此对话框指定 Ubuntu 操作系统 的磁盘空间,不能超过本地磁盘分区剩余的可用空间。点击“next”,出现配置 信息的确认对话框,如下图所示: 如果需要修改,则可以返回,如果不需要修改,直接点击“Finish”,完成虚 拟机的配置,接下来开始安装 Ubuntu 操作系统。 因为是通过虚拟化软件安装虚拟操作系统,所以安装过程不像在物理机上直 接安装 linux 操作系统那样,需要选择磁盘分区、创建帐户、选择键盘布局、选 择时区、选择语言等等步骤。 安装完成后,就可以启动并登陆刚才安装的虚拟机了。 登陆成功之后,如下图所示,至此,Ubuntu 虚拟机已经安装完成,下一步, 我们开始在 Ubuntu 系统中安装 Hadoop 系统及其支撑环境。 1.2 安装 Java 开发环境 因为实验室不能接入互联网,所以不能使用 Ubuntu 提供的 apt-get 指令进行 相关支撑软件的快速下载及安装,我们只能通过下载离线包进行手动安装与设置。 首先,下载 java 开发工具包 JDK,由于 JDK 的开发不仅仅是一家,常用的主 要有 Sun公司开发的 JDK和开源社区的OpenJDK两种。我们选择 Sun开发的 JDK, 可以去 http://www.sun.com 下载 Linux 32bit 版本的 JDK。在实际使用中,我们下 载的版本是 jdk-7-linux-i586.tar.gz。 为了简单方便,我们将 JDK 安装在用户的主目录下。我们将 JDK 放在 /home/king/目录下,然后将 jdk-7-linux-i586.tar.gz 进行解压缩,解压完成之后得 到 JDK 目录 jdk-1.7.0。 为了使 JDK 生效,我们需要将 JDK 配置到系统环境变量里。在命令行中执行 如下指令: 然后提示输入用户名 king 对应的登陆密码,输入之后,即可打开环境变量配 置文件。 在最后一行 umask 022 上面一行插入如下代码: 至此,JDK 的安装配置已经完成,通过注销虚拟机,即可生效。再次登陆之 后,在命令行执行: 如果出现了相关参数提示,说明 java 开发环境已经安装完毕。 # sudo gedit /etc/profile ###JAVA export JAVA_HOME=/home/king/jdk1.7.0 export PATH=$JAVA_HOME/bin:$PATH 1.3 安装 SSH 因为 Hadoop 采用的是 C/S 结构,Server(Master)需要控制 Client(Slaves), 需要在集群各个节点上按装 SSH,Ubuntu 默认安装了 openssh-client,所以需要 安装 openssh-server。但是考虑 Ubuntu 软件依赖的控制较严格,而新版本的 Ubuntu 安装的 openssh-client 版本较高,与之匹配的高版本 openssh-server 的离 线包难找,我们使用低版本进行覆盖。 考虑到实验室不能接入互联网的实际情况,我们需要首先下载用户安装 ssh 的离线安装包,具体的安装步骤是这样的: 1.到 https://launchpad.net/ubuntu/lucid/i386/openssh-client/1:5.3p1-3ubunt u3。下载文件”openssh-client_5.3p1-3ubuntu3_i386.deb ”。 2.到 https://launchpad.net/ubuntu/lucid/i386/openssh-server/1:5.3p1-3ubuntu 3。下载文件” openssh-server_5.3p1-3ubuntu3_i386.deb”。 3. 到 https://launchpad.net/ubuntu/lucid/i386/ssh/1:5.3p1-3ubuntu3。下载文 件”ssh_5.3p1-3ubuntu3_all.deb”。 下载完成之后,就可以进行安装了,执行如下指令(顺序不可更改): 至此,ssh 的安装完成,后面我们会用到它配置无密码登录。 1.4 配置网络 由于我们是在 Windows 环境下通过安装虚拟机来实现 Linux 平台搭建的,多 个 Linux 虚拟机之间需要建立通信,而通信依赖于 IP 地址,所以我们需要给虚拟 机设定 IP 地址。 不管是 Virtual Box,还是 VMware,这些虚拟软件一般都带有 3 种网络配置 方式:默认的是 NAT,还有 Bridge、Host-only。关于这三种网络配置模式的讲解, 可以参考相关的文档资源等。 我们使用 Bridge(桥接)模式来配置虚拟机,也就是物理主机和虚拟都有独 立的 IP 地址,并且处于同一个网段。 node3 所在的物理主机的 IP 地址为:192.168.6.156。 node3 虚拟机的 IP 地址为:192.168.6.198。 node4 所在的物理主机的 IP 地址为:192.168.6.157 node4 虚拟机的 IP 地址为:192.168.6.199 node5 所在的物理主机的 IP 地址为:192.168.6.158 node5 虚拟机的 IP 地址为:192.168.6.197 在使用的过程中,我们通过域名来解析各个虚拟机,而不是 IP 地址,所以需要 编辑/etc/hosts 文件,指令如下: #sudo dpkg -i openssh-client_5.3p1-3ubuntu3_i386.deb #sudo dpkg -i openssh-server_5.3p1-3ubuntu3_i386.deb #sudo dpkg -i ssh_5.3p1-3ubuntu3_all.deb #sudo gedit /etc/hosts 将 IP 地址与域名进行映射,设定如下所示: 如果域名不正确,需要修改/etc/hostname 文件,将域名改为 node3 即可。 执行如下指令: 前面已经对域名解析部分进行了配置,下面开始配置虚拟机的联网方式以及 IP 地址等。 前面已经介绍了虚拟机默认都采用 NAT 联网方式,也就是物理主机和虚拟机 采用相同的 IP 地址,虚拟机通过地址转换通过物理主机的 IP 与外联络,在有 Linux 虚拟机建立的局域网中,这种方式是不可行的,因为 NAT 采用的 Vnet8 网卡并通 过 DHCP 来自动分配 IP,所以我们要通过 Bridge 模式来实现虚拟机互联,也就是 虚拟机和物理主机拥有不同的 IP,且处于同一个网段。 首先需要更改虚拟机的联网方式,点击 VMware 的“Virtual Machine”菜单, 选择“Virtual Machine Settings”菜单项,出现如下: #sudo gedit /etc/hostname 选择 Hardware 项下的 Network Adapter,选中 Bridged,如上图所示,至此, 虚拟机的联网方式配置完毕,下面配置虚拟机的 IP 地址。 因为 Linux 操作系统默认采用 DHCP 动态获取 IP,这样就无法指定 IP 地址, 必须改成手动指定。在 Ubuntu Linux 系统菜单栏中选择“System”“Perferences” “Network Connections”选项,也可以通过系统右上侧的联网菜单直接选择联 网设置。 选中“编辑连接”,选择 eth0 网卡,点击“编辑”,进入网卡编辑界面,在 “IP v4 设置”项里,选中“方法”域中的“手动”项,在地址里选择“添加”, 然后分别在地址、子网掩码、网管中填入上图所示数据。然后点击保存。 1.5 创建 SSH 密钥安全联机 Hadoop 系统的一个特性就是无论是 Master,还是 Slave 节点,其 Hadoop 系 统设定都完全一样。为了降低负担,且维护每台节点都有相同的设置,最简单的 方式就是设置了 Master 之后,通过 SSH 密钥证书的 scp 安全复制指令,无密码 登录到其他节点上,并将文件传到节点上。所以首先需要配置无密码登录(在 Master 上执行如下操作)。 配置完成之后,测试登陆本节点自身: #ssh-keygen –t rsa –P “” #cd /home/king/.ssh #cat id_rsa.pub >> ~/.ssh/authorized_keys #ssh localhost #logout 如果能正常登陆成功,则说明配置成功。 1.6 配置 Hadoop 云计算系统 首 先 从 Apache 官 方 网 站 下 载 Hadoop 安 装 包 , 我 们 下 载 的 是 hadoop-0.20.1.tar.gz ,将其放到 /home/king 目录下,进行解压缩,得到 hadoop-0.20.1 目录,Hadoop 不需要安装,只需要进行配置即可使用。 之后要进行一些配置,首先进入解压后目录对 conf 文件夹,要修改对配置 文件包括 hadoop-env.sh /etc/profile core-site.xml hdfs-site.xml mapred-site.xml masters slaves。 hadoop-env.sh 中要释放并修改下面一行,用于指定 java 路径: 编辑环境变量,添加 HADOOP_HOME 变量,使 Hadoop 的 bin 目录下的指令 加入到环境变量中。 在最后一行 umask 022 上面一行插入如下代码: 编辑 core-site.xml,因为 Hadoop 采用网页的方式对系统运行进行监控, core-site.xml 就是对这种监控进行用户自定义配置的配置文件,因为默认的配置 在 core-default.xml 中,这里只给出了最低配置,配置 Hadoop 系统在本地的目录 和默认的文件系统及通信端口(默认 8020): export JAVA_HOME=/home/king/jdk1.7.0/ # sudo gedit /etc/profile ##Hadoop export HADOOP_HOME=/home/king/hadoop-0.20.1 export PATH=$HADOOP_HOME/bin:$PATH 配置 hdfs-site.xml,设定文件的副本数: 配置 mapred-site.xml,配置 JobTracker 节点及通信端口: 配置 master 文件,指定 master 节点: 配置 slaves 节点,配置 slave 节点: 至此,Master 节点的配置已经全部完成,下面开始配置其余节点。 1.7 配置 Slaves 节点 我们前面已经说过,Hadoop 所有节点的配置都相同,所以配置 Slaves 的时 候有两种手段: 1) 按照前面的 1.1—1.5 的过程重新做一遍,但是在重做 1.4 的时候,只需要在 node3(也就是 Master)上执行: 2) 将配置好的 Master 虚拟机文件全部拷贝,到 node4、node5 所在的物理主机 上,然后分别登陆到虚拟机,修改其中的/ect/hosts 和/etc/hostname 文件以 及配置 IP 地址,然后重启即可。 执行完所有的配置之后,需要确保所有的机器之间都可以可以访问到的,通 过命令行中的“ping 机器 IP”指令,验证所有虚拟机之间都是可以互通的。 1.8 格式化 Hadoop 系统 在启动 Hadoop 系统之前,需要先格式化一个 Hadoop 系统,执行如下指令 即可: #cd /home/king/.ssh #cat id_rsa.pub >> node4: ~/.ssh/authorized_keys #hadoop namenode -format 如果顺利完成,则说明系统格式化完成,下面即可启动并使用 Hadoop 系统了, 如果失败,则需要查看 Hadoop 安装目录中的 logs 目录下的日志了。 1.9 启动 Hadoop 集群 在 Master 即 NameNode 上执行如下指令: 然后执行如下指令,查看 Hadoop 进程的启动状态: 因为 node3 同时充当 master 和 slave,所以其上除了 jps 进程之外,还有另外 5 个 Hadoop 相关的进程,分别是 NameNode、DataNode、SecondaryNameNode、 JobTracker 和 TaskTracker。如果 5 个进程都正常启动,则说明 Hadoop 系统已经 成功启动。然后去个 slave节点上执行同样的指令,如果有 TaskTracker和DataNode 进程,则说明该节点已经成功启动: #start-all.sh 2.实验过程 2.1 可扩展性 1.动态扩展 将/conf/slaves 文件进行修改,只留下 node3 这一个节点,启动 Hadoop 集群。 登陆 Hadoop 监控页面 http://node3:50070,查看 Hadoop 系统的运行状态,如下 图所示: 通过监控网页,可以看到系统的启动时间,系统存储空间以及已用大小,当 前处于活动状态的节点数及死亡节点数,图中给出的当前活动节点数为 1,死亡 节点数为 0,当前系统配置容量 7.38GB。通过点击 Live Nodes 可以跳转到 Live Nodes 监控页面,出现一个节点列表,通过节点列表,可以监控每一个具体的节 点上的配置信息。如下图所示: 通过点击具体的某一个 Node,可以进入监控该节点的页面,如下图: 显示 node3 节点当前存储的文件目录信息等。 通过执行如下的操作,实现系统的动态扩展: 1. 把新机器的增加到 conf/slaves 文件中(Datanode 或者 Tasktracker 则可跳 过) ,将 node4 和 node5 添加进去。 2.在新机器上进入 hadoop 安装目录(新机器已经成功配置 Hadoop) 过几分钟之后启动 Hadoop 系统的监控页面: 通过监控页面,发现,系统的容量已经达到了 29.04GB,系统的活动节点数 为 3,死亡节点数为 0,从而实现了系统的动态扩展。 2.动态缩减 Hadoop 系统的缩减,可以通过删除 conf/slaves 中的节点来实现,我们在动 态扩展后的系统的基础上实现动态缩减,删除 conf/slaves 中的 node4 和 node5 项,然后在 node4 和 node5 节点上执行 在 Master 即 Namenode 上 执行如下指令,实现系统负载的平衡: 1. 然后访问 Hadoop 监控系统,缩减后的 Hadoop 系统的监控显示的结果如下: $bin/hadoop-daemon.sh stop datanode $bin/hadoop-daemon.sh stop tasktracker $bin/hadoop balancer $bin/hadoop-daemon.sh start datanode $bin/hadoop-daemon.sh start tasktracker 其他操作过程类似。 2.2 稳定性 默认情况下,每个文件块的大小是 64MB,我们设定的副本数为 2。这样, 我们可以上传一个能够覆盖在 3 台节点上的文件来进行验证,比如我们上传了一 个 267MB 的文件到 HDFS。 上传文件的指令如下: 上面的指令的意思是将本地当前目录下的文件 3,传入到 HDFS 文件系统的 /user/king/input/下,文件名字为 3。通过 Hadoop 系统监控页面的 Browser File System 链接,就可以浏览到当前文件系统的目录和文件,如下图所示: #hadoop fs –put 3 input/3 通过上图,看到当前链接的是 node5 提供的数据浏览服务。查看文件 3 的分 布情况,点击文件 3,出现文件 3 的浏览页面,如下图: 通过上图可以看到文件 3 被划分成了 5 个文件块进行存储,文件块的副本数 为 2,在三个节点上都有数据副本的分布。 然后直接将 node4 虚拟机关机或者把 node4 节点所在的物理机的网线拔掉, 再查看文件系统的目录,如果不发生改变,说明系统是稳定的。因为当前数据节 点只有 3 个,且副本数位 2,所以我们只能切断 1 台机器,如果系统规模足够大, 且副本数更多,则允许更多的节点故障。 在 node5“发生故障”之后,node5 已经不能连接到 Hadoop 系统上了,我 们看到通过 node4 看到我们当前的文件系统的文件并没有发生任何变化,下面通 过 Hadoop 系统监控页面看到活动节点数为 2,死亡节点为 1,系统正常工作。 2.3 可靠性 为了验证系统的可靠性,我们首先分析一下 HDFS 系统中的文件 3 的数据分 布情况。 文件 3 的路径是/home/king/input/3。它有 5 个块组成,每个块有 2 个副本, 分布情况如下图所示: 根据前面的映射关系,有下表: 块 ID 副本 1 所在节点 副本 2 所在节点 1463485268270902358 node4 node3 786920875315999831 node4 node3 8465343878127540954 node4 node3 2714111472484489750 node4 node3 7794907589843397352 node3 node5 如果 node4 发生故障,那么前 4 个块都损失一个副本,但是这些块仍然可以 通过 node3 进行数据访问,第 5 个块的副本不受影响,这样用户仍然可以访问整 个文件;同样的,如果 node5 发生故障,那么只有第 5 个块受到影响,第 5 个块 的副本由 node3 来提供服务,整个文件仍然可被访问。从而保证了数据的可靠性。 假设文件副本数为 2, 且副本安全阈值为 2,节点 4 发生故障,导致系统的部分 数据副本丢失,使文件的某些块的副本数变为 1,经过过一定的时间间隔,系统 扫描到因为某些块的缺失导致文件副本低于安全阈值,那么后台线程就开始着手 副本恢复,最终恢复的结果如下图所示: 2.4 MapReduce 词频统计测试 Hadoop 系统中自带了用于各种测试实例,都放在 Hadoop 系统安装目录下的 example 包中,我们这里给出了一个用于词频统计的实例测试,上面测试系统可 靠性的时候,也可以采用这个例子进行测试。在下面的例子中,我们对 input/1 这个文件中的单词进行词频统计,输出的结果保存在 out 目录下中。 下面可以去/user/king/out 目录查看输出的文件。 #hadoop jar hadoop-0.20.1/hadoop-0.20.1-examples.jar wordcount input/1 out 点击 part-r-00000 查看词频统计的结果,如下: 实验总结 经过短暂的 6 周的实验过程,我们对 Hadoop 这个开源的云计算平台从扩展 性、稳定性和可靠性等方面进行了简单的测试,实验结果表明,这个开源的系统 的性能是比较好的,是可以接受的,在测试过程中,我们对 Hadoop 这个系统的 了解更深入了一层。 时间虽短,任务虽轻,但是里面也遇到了不少的问题,我们组员在论的时候, 有的问题是无法解决的,只能求教曹老师,曹老师为我们组的实验提供了足够多 的技术支持,为我们的实验的顺利完成提供了强大的保障,在此表示诚恳的谢意。 Hadoop 这个系统到目前为止,已经是 Apache 下的顶级项目,下辖的子项目 超过 7 个,我们在这么短暂的时间也不可能对这么多的子项目进行测试,只对其 基础—HDFS 和 MapReduce 进行了简单的测试,后续的测试,我们还会持续做下 去,也同时希望后面的同学能够接下我们遗留下来的包袱。 任重而道远,吾辈需努力!
/
本文档为【Hadoop云计算平台实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索