您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页Hadoop云计算平台实验报告V1.1

Hadoop云计算平台实验报告V1.1

来源:好走旅游网


Hadoop云计算平台实验报告V1.1

第1页共35页

目录

1 2

实验目标 ................................................................................................................................... 3 实验原理 ................................................................................................................................... 4 2.1 2.2

HADOOP工作原理 .................................................................................................................... 4 实验设计 ................................................................................................................................. 6

2.2.1 2.2.2 2.2.3 3

可扩展性 ......................................................................................................................... 6 稳定性 ............................................................................................................................. 7 可靠性 ............................................................................................................................. 7

实验过程 ................................................................................................................................... 9 3.1

实验环境 ................................................................................................................................. 9

安装Linux操作系统 ..................................................................................................... 10

3.1.2 安装Java开发环境 ...................................................................................................... 14 3.1.3 安装SSH ........................................................................................................................ 15 3.1.4 配置网络 ....................................................................................................................... 15 3.1.5 创建SSH密钥安全联机 ............................................................................................... 19 3.1.6 配置Hadoop云计算系统 ............................................................................................ 19 3.1.7 配置Slaves节点 ........................................................................................................... 23 3.1.8 格式化Hadoop系统 .................................................................................................... 23 3.1.9 启动Hadoop集群 ........................................................................................................ 23 3.2 2.实验过程 ......................................................................................................................... 25 3.2.1 可扩展性 ....................................................................................................................... 25 3.2.1.1 动态扩展 ................................................................................................................................. 25 3.2.1.2 动态缩减 ................................................................................................................................. 27

3.2.2

3.1.1

稳定性 ........................................................................................................................... 28 3.2.3 可靠性 ........................................................................................................................... 31 3.2.4 MapReduce词频统计测试 ............................................................................................... 32

4

实验总结 ................................................................................................................................. 35

第2页共35页

1 实验目标

1. 掌握Hadoop安装过程 2. 理解Hadoop工作原理 3. 测试Hadoop系统的可扩展性 4. 测试Hadoop系统的稳定性 5. 测试Hadoop系统的可靠性

第3页共35页

2 实验原理

2.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的统一调度下进行数据块的创建、删除和复制。

第4页共35页

图1 HDFS体系结构示意图

客户端要访问一个文件,首先从NameNode获得组成文件的数据块的位置列表;然后直接与相应的DataNode建立连接并读取文件数据。数据流不经过NameNode节点。

Hadoop通过MapReduce进行海量数据处理,它是一个并行处理大规模数据的软件框架。MapReduce的设计思想基于“移动计算靠近存储”,在面向海量数据处理的技术中,通过网络将数据传输到用于计算的节点所消耗的开销远大于处理数据所需要的开销,而MapReduce将数据的处理任务交给了存储该数据的节点,避免了数据传输所带来的开销。

MapReduce的根源是函数性变成种的map和reduce函数,它由两个包含多个实例(许多的Map和Reduce)的操作组成。Map函数接收一组数据并将其转换成一个键/值对列表,输入域中的每个元素对应于一个键/值对。Reduce函数接收Map函数生成列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。MapReduce的数据处理流程示意图如图2所示:

MapReduce也采用C/S架构,其中JobTracker负责作业调度,TaskTracker负责任务执行。用户提交基于MapReduce变成规范的作业之后,JobTracker根据作业的输入数据的分布情况(在HDFS之中),将Map任务指派到存储这些数据块的DataNode上执行(DataNode也充当了TaskTracker),Map完成之后会根据用户提交的Reduce任务数对中间结果进行分区存储在Map任务节点本地的磁盘,执行Reduce任务的节点(由JobTracker指派)通过轮询的方式从各Map节点拉取Reduce的输入数据,并在Reduce任务节点的内存进行排序后进行合并作为reduce函数的输入,输出结果又输出到HDFS中进行存储。

第5页共35页

图2 MapReduce数据处理流程示意图

除了HDFS和MapReduce这两个核心子项目之外,Hadoop还包括Hbase和Hive以及Pig、ZooKeeper、Avro、Chukwa等项目。其中Hbase是一个分布式的基于列(列族)存储的数据库,它使用HDFS作为底层存储,同时支持MapReduce的批量是计算和点查询。Hive一个分布式的数据仓库,使用HDFS进行数据存储,并提供基于SQL的查询语言(由运行时引擎翻译成MapReduce作业)用于查询数据。

2.2 实验设计

本实验主要是针对Hadoop系统的可扩展性、稳定性、可靠性,其中主要针对HDFS进行测试,最后给出MapReduce的一个词频统计的实例。

2.2.1 可扩展性

Hadoop系统支持系统的动态扩容,只需要修改修改各节点的slaves文件,将需要添加的数据或计算节点加入进来,或者删掉需要注销的数据或计算节点即可,只要新加入的节点已经成功配置了Hadoop,那么就可以通过启动新的节点来实现动态扩容;对于删除节点,跟添加节点类似,将slave配置信息中删除该节点,然后在停掉该节点的数据服务即可。

有的时候,需要向集群中增加新的机器时又不能重启集群。我们可以采用下面的过程来实现Hadoop系统的动态扩展而不用重启集群。

第6页共35页

1.把新机器的增加到conf/slaves文件中(Datanode或者Tasktracker则可跳过) 2.在新机器上进入hadoop安装目录 $bin/hadoop-daemon.sh start datanode $bin/hadoop-daemon.sh start tasktracker

3.在Master即Namenode上 执行如下指令,实现系统负载的平衡: 对于要删除某一个节点,我们可以执行如下过程,而不需重启服务器: 1. 从conf/slaves文件中移除该节点 2. 在待移除节点上执行如下指令 $bin/hadoop-daemon.sh stop datanode $bin/hadoop-daemon.sh stop tasktracker

3. 在Master即Namenode上 执行如下指令,实现系统负载的平衡: $bin/hadoop balancer

2.2.2 稳定性

Hadoop系统架构在通用商用机上,HDFS的设计思想将普通硬件故障视为常态,个别机器的故障不影响系统的正常运行。

通过将足够大文件上传到HDFS上,使文件散布到多个节点上,然后通过人为切断某一台机器的网络,如果系统还能正常提供服务,则说明系统是稳定的,因为本系统只有3个数据节点,副本数设定为2,所以只能切断一台服务器来验证系统的稳定性。当系统规模足够大的时候,文件散布的更加分散,可以允许更多的机器故障。

2.2.3 可靠性

因为Hadoop的文件系统采用了多副本技术保证了数据的可靠性,如果发生了副本损害或者副本丢失,用户仍然可以通过其他副本进行数据访问和数据操作,

从而保证数据的可靠性。HDFS的NameNode有一个后台进程进行文件块的扫描,如果当前某一个数据块的副本数低于系统设定的安全阈值,那么NameNode就会启动相关进程,完成副本的复制,直到副本数达到安全阈值的要求。

第7页共35页

可以通过分析数据分布,或者通过MapReduce进行词频统计来验证数据的可靠性。

第8页共35页

3 实验过程

3.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系统上都必须装有如下软件:

 Ubuntu Linux操作系统

第9页共35页

 Hadoop云计算系统  Java 6开发环境

由于各个物理机均采用同构的方式进行安装,所以只需要安装一台虚拟机,然后将虚拟机文件拷贝到其他机器上,进入linux虚拟系统,修改相关配置信息即可。

3.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”,出现用户名及密码设定对话框,如下图所示:

第10页共35页

在文本输入框中分别输入用户名以及用户密码等,点击“next”,出现配置节点名以及虚拟机系统在本地磁盘的存放路径的对话框,如下图所示:

点击“next”,出现配置磁盘容量的对话框,此对话框指定Ubuntu操作系统的磁盘空间,不能超过本地磁盘分区剩余的可用空间。点击“next”,出现配置信息的确认对话框,如下图所示:

第11页共35页

如果需要修改,则可以返回,如果不需要修改,直接点击“Finish”,完成虚拟机的配置,接下来开始安装Ubuntu操作系统。

因为是通过虚拟化软件安装虚拟操作系统,所以安装过程不像在物理机上直接安装linux操作系统那样,需要选择磁盘分区、创建帐户、选择键盘布局、选择时区、选择语言等等步骤。

第12页共35页

安装完成后,就可以启动并登陆刚才安装的虚拟机了。

登陆成功之后,如下图所示,至此,Ubuntu虚拟机已经安装完成,下一步,我们开始在Ubuntu系统中安装Hadoop系统及其支撑环境。

第13页共35页

3.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配置到系统环境变量里。在命令行中执行如下指令: # sudo gedit /etc/profile

然后提示输入用户名king对应的登陆密码,输入之后,即可打开环境变量配置文件。 在最后一行umask 022上面一行插入如下代码: ###JAVA

export JAVA_HOME=/home/king/jdk1.7.0 export PATH=$JAVA_HOME/bin:$PATH

至此,JDK的安装配置已经完成,通过注销虚拟机,即可生效。再次登陆之后,在命令行执行:

第14页共35页

如果出现了相关参数提示,说明java开发环境已经安装完毕。

3.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-3ubuntu3。下载文件”openssh-client_5.3p1-3ubuntu3_i386.deb ”。

2.到

https://launchpad.net/ubuntu/lucid/i386/openssh-server/1:5.3p1-3ubuntu3。下载文件” 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”。

下载完成之后,就可以进行安装了,执行如下指令(顺序不可更改): #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

至此,ssh的安装完成,后面我们会用到它配置无密码登录。

3.1.4 配置网络

由于我们是在Windows环境下通过安装虚拟机来实现Linux平台搭建的,多个Linux虚拟机之间需要建立通信,而通信依赖于IP地址,所以我们需要给虚拟机设定IP地址。

第15页共35页

不管是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 gedit /etc/hosts

将IP地址与域名进行映射,设定如下所示:

第16页共35页

如果域名不正确,需要修改/etc/hostname文件,将域名改为node3即可。执行如下指令:

#sudo gedit /etc/hostname

前面已经对域名解析部分进行了配置,下面开始配置虚拟机的联网方式以及IP地址等。 前面已经介绍了虚拟机默认都采用NAT联网方式,也就是物理主机和虚拟机采用相同的IP地址,虚拟机通过地址转换通过物理主机的IP与外联络,在有Linux虚拟机建立的局域网中,这种方式是不可行的,因为NAT采用的Vnet8网卡并通过DHCP来自动分配IP,所以我们要通过Bridge模式来实现虚拟机互联,也就是虚拟机和物理主机拥有不同的IP,且处于同一个网段。

首先需要更改虚拟机的联网方式,点击VMware 的“Virtual Machine”菜单,选择“Virtual Machine Settings”菜单项,出现如下:

选择Hardware项下的Network Adapter,选中Bridged,如上图所示,至此,虚拟机的联网方式配置完毕,下面配置虚拟机的IP地址。

因为Linux操作系统默认采用DHCP动态获取IP,这样就无法指定IP地址,必须改成手动指定。在Ubuntu Linux系统菜单栏中选择“System”“Perferences”“Network Connections”选项,也可以通过系统右上侧的联网菜单直接选择联网设置。

第17页共35页

第18页共35页

选中“编辑连接”,选择eth0网卡,点击“编辑”,进入网卡编辑界面,在“IP v4设置”项里,选中“方法”域中的“手动”项,在地址里选择“添加”,然后分别在地址、子网掩码、网管中填入上图所示数据。然后点击保存。

3.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

如果能正常登陆成功,则说明配置成功。

3.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路径: export JAVA_HOME=/home/king/jdk1.7.0/

第19页共35页

编辑环境变量,添加HADOOP_HOME变量,使Hadoop的bin目录下的指令加入到环境变量中。

# sudo gedit /etc/profile

在最后一行umask 022上面一行插入如下代码: ##Hadoop

export HADOOP_HOME=/home/king/hadoop-0.20.1 export PATH=$HADOOP_HOME/bin:$PATH

编辑core-site.xml,因为Hadoop采用网页的方式对系统运行进行监控,core-site.xml就是对这种监控进行用户自定义配置的配置文件,因为默认的配置在core-default.xml中,这里只给出了最低配置,配置Hadoop系统在本地的目录和默认的文件系统及通信端口(默认8020):

配置hdfs-site.xml,设定文件的副本数:

第20页共35页

配置mapred-site.xml,配置JobTracker节点及通信端口:

第21页共35页

配置master文件,指定master节点:

配置slaves节点,配置slave节点:

至此,Master节点的配置已经全部完成,下面开始配置其余节点。

第22页共35页

3.1.7 配置Slaves节点

我们前面已经说过,Hadoop所有节点的配置都相同,所以配置Slaves的时候有两种手段:

1) 按照前面的1.1—1.5的过程重新做一遍,但是在重做1.4的时候,只需要在node3(也就是Master)上执行:

#cd /home/king/.ssh

#cat id_rsa.pub >> node4: ~/.ssh/authorized_keys

2) 将配置好的Master虚拟机文件全部拷贝,到node4、node5所在的物理主机上,然后分别登陆到虚拟机,修改其中的/ect/hosts和/etc/hostname文件以及配置IP地址,然后重启即可。

执行完所有的配置之后,需要确保所有的机器之间都可以可以访问到的,通过命令行中的“ping 机器IP”指令,验证所有虚拟机之间都是可以互通的。

3.1.8 格式化Hadoop系统

在启动Hadoop系统之前,需要先格式化一个Hadoop系统,执行如下指令即可: #hadoop namenode -format

如果顺利完成,则说明系统格式化完成,下面即可启动并使用Hadoop系统了,如果失败,则需要查看Hadoop安装目录中的logs目录下的日志了。

3.1.9 启动Hadoop集群

在Master即NameNode上执行如下指令: #start-all.sh

然后执行如下指令,查看Hadoop进程的启动状态:

第23页共35页

因为node3同时充当master和slave,所以其上除了jps进程之外,还有另外5个Hadoop相关的进程,分别是NameNode、DataNode、SecondaryNameNode、JobTracker和 TaskTracker。如果5个进程都正常启动,则说明Hadoop系统已经成功启动。然后去个slave节点上执行同样的指令,如果有TaskTracker和DataNode进程,则说明该节点已经成功启动:

第24页共35页

3.2 2.实验过程 3.2.1 可扩展性

3.2.1.1 动态扩展

将/conf/slaves文件进行修改,只留下node3这一个节点,启动Hadoop集群。登陆Hadoop监控页面http://node3:50070,查看Hadoop系统的运行状态,如下图所示:

通过监控网页,可以看到系统的启动时间,系统存储空间以及已用大小,当前处于活动状态的节点数及死亡节点数,图中给出的当前活动节点数为1,死亡节点数为0,当前系统配置容量7.38GB。通过点击Live Nodes可以跳转到Live Nodes监控页面,出现一个节点列表,通过节点列表,可以监控每一个具体的节点上的配置信息。如下图所示:

第25页共35页

通过点击具体的某一个Node,可以进入监控该节点的页面,如下图:

显示node3节点当前存储的文件目录信息等。

第26页共35页

通过执行如下的操作,实现系统的动态扩展:

1. 把新机器的增加到conf/slaves文件中(Datanode或者Tasktracker则可跳过) ,将node4和node5添加进去。

2.在新机器上进入hadoop安装目录(新机器已经成功配置Hadoop) $bin/hadoop-daemon.sh start datanode $bin/hadoop-daemon.sh start tasktracker 过几分钟之后启动Hadoop系统的监控页面:

通过监控页面,发现,系统的容量已经达到了29.04GB,系统的活动节点数为3,死亡节点数为0,从而实现了系统的动态扩展。

3.2.1.2 动态缩减

Hadoop系统的缩减,可以通过删除conf/slaves中的节点来实现,我们在动态扩展后的系统的基础上实现动态缩减,删除conf/slaves中的node4和node5项,然后在node4和node5节点上执行

$bin/hadoop-daemon.sh stop datanode $bin/hadoop-daemon.sh stop tasktracker

第27页共35页

在Master即Namenode上 执行如下指令,实现系统负载的平衡: $bin/hadoop balancer

然后访问Hadoop监控系统,缩减后的Hadoop系统的监控显示的结果如下:

其他操作过程类似。

3.2.2 稳定性

默认情况下,每个文件块的大小是64MB,我们设定的副本数为2。这样,我们可以上传一个能够覆盖在3台节点上的文件来进行验证,比如我们上传了一个267MB的文件到HDFS。

上传文件的指令如下: #hadoop fs –put 3 input/3

上面的指令的意思是将本地当前目录下的文件3,传入到HDFS文件系统的

/user/king/input/下,文件名字为3。通过Hadoop系统监控页面的Browser File System链接,就可以浏览到当前文件系统的目录和文件,如下图所示:

第28页共35页

通过上图,看到当前链接的是node5提供的数据浏览服务。查看文件3的分布情况,点击文件3,出现文件3的浏览页面,如下图:

第29页共35页

通过上图可以看到文件3被划分成了5个文件块进行存储,文件块的副本数为2,在三个节点上都有数据副本的分布。

然后直接将node4虚拟机关机或者把node4节点所在的物理机的网线拔掉,再查看文件系统的目录,如果不发生改变,说明系统是稳定的。因为当前数据节点只有3个,且副本数位2,所以我们只能切断1台机器,如果系统规模足够大,且副本数更多,则允许更多的节点故障。

第30页共35页

在node5“发生故障”之后,node5已经不能连接到Hadoop系统上了,我们看到通过node4看到我们当前的文件系统的文件并没有发生任何变化,下面通过Hadoop系统监控页面看到活动节点数为2,死亡节点为1,系统正常工作。

3.2.3 可靠性

为了验证系统的可靠性,我们首先分析一下HDFS系统中的文件3的数据分布情况。 文件3的路径是/home/king/input/3。它有5个块组成,每个块有2个副本,分布情况如下图所示:

根据前面的映射关系,有下表:

第31页共35页

如果node4发生故障,那么前4个块都损失一个副本,但是这些块仍然可以通过node3进行数据访问,第5个块的副本不受影响,这样用户仍然可以访问整个文件;同样的,如果node5发生故障,那么只有第5个块受到影响,第5个块的副本由node3来提供服务,整个文件仍然可被访问。从而保证了数据的可靠性。

假设文件副本数为2, 且副本安全阈值为2,节点4发生故障,导致系统的部分数据副本丢失,使文件的某些块的副本数变为1,经过过一定的时间间隔,系统扫描到因为某些块的缺失导致文件副本低于安全阈值,那么后台线程就开始着手副本恢复,最终恢复的结果如下图所示:

3.2.4 MapReduce词频统计测试

Hadoop系统中自带了用于各种测试实例,都放在Hadoop系统安装目录下的example包中,我们这里给出了一个用于词频统计的实例测试,上面测试系统可靠性的时候,也可以采用这个例子进行测试。在下面的例子中,我们对input/1这个文件中的单词进行词频统计,输出的结果保存在out目录下中。

#hadoop jar hadoop-0.20.1/hadoop-0.20.1-examples.jar wordcount input/1 out

第32页共35页

下面可以去/user/king/out目录查看输出的文件。

第33页共35页

点击part-r-00000查看词频统计的结果,如下:

第34页共35页

4 实验总结

经过短暂的6周的实验过程,我们对Hadoop这个开源的云计算平台从扩展性、稳定性

和可靠性等方面进行了简单的测试,实验结果表明,这个开源的系统的性能是比较好的,是可以接受的,在测试过程中,我们对Hadoop这个系统的了解更深入了一层。

时间虽短,任务虽轻,但是里面也遇到了不少的问题,我们组员在论的时候,有的问题是无法解决的,只能求教曹老师,曹老师为我们组的实验提供了足够多的技术支持,为我们的实验的顺利完成提供了强大的保障,在此表示诚恳的谢意。

Hadoop这个系统到目前为止,已经是Apache下的顶级项目,下辖的子项目超过7个,我们在这么短暂的时间也不可能对这么多的子项目进行测试,只对其基础—HDFS和MapReduce进行了简单的测试,后续的测试,我们还会持续做下去,也同时希望后面的同学能够接下我们遗留下来的包袱。

任重而道远,吾辈需努力!

第35页共35页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务