Hadoop云计算平台实验报告V1.1目录1实验目标 (3)2实验原理 (4)2.1H ADOOP工作原理 (4)2.2实验设计 (6)2.2.1可扩展性 (6)2.2.2稳定性 (7)2.2.3可靠性 (7)3实验过程 (9)3.1实验环境 (9)3.1.1安装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.22.实验过程 (25)3.2.1可扩展性 (25)3.2.1.1动态扩展 (25)3.2.1.2动态缩减 (27)3.2.2稳定性 (28)3.2.3可靠性 (31)3.2.4MapReduce词频统计测试 (32)4实验总结 (35)1. 掌握Hadoop安装过程2. 理解Hadoop工作原理3. 测试Hadoop系统的可扩展性4. 测试Hadoop系统的稳定性5. 测试Hadoop系统的可靠性2.1Hadoop工作原理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负责任务执行。
用户提交基于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.2实验设计本实验主要是针对Hadoop系统的可扩展性、稳定性、可靠性,其中主要针对HDFS进行测试,最后给出MapReduce的一个词频统计的实例。
2.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 tasktracker3.在Master即Namenode上执行如下指令,实现系统负载的平衡:对于要删除某一个节点,我们可以执行如下过程,而不需重启服务器:1.从conf/slaves文件中移除该节点2.在待移除节点上执行如下指令$bin/hadoop-daemon.sh stop datanode$bin/hadoop-daemon.sh stop tasktracker3. 在Master即Namenode上执行如下指令,实现系统负载的平衡:$bin/hadoop balancer2.2.2稳定性Hadoop系统架构在通用商用机上,HDFS的设计思想将普通硬件故障视为常态,个别机器的故障不影响系统的正常运行。
通过将足够大文件上传到HDFS上,使文件散布到多个节点上,然后通过人为切断某一台机器的网络,如果系统还能正常提供服务,则说明系统是稳定的,因为本系统只有3个数据节点,副本数设定为2,所以只能切断一台服务器来验证系统的稳定性。
当系统规模足够大的时候,文件散布的更加分散,可以允许更多的机器故障。
2.2.3可靠性因为Hadoop的文件系统采用了多副本技术保证了数据的可靠性,如果发生了副本损害或者副本丢失,用户仍然可以通过其他副本进行数据访问和数据操作,从而保证数据的可靠性。
HDFS的NameNode有一个后台进程进行文件块的扫描,如果当前某一个数据块的副本数低于系统设定的安全阈值,那么NameNode就会启动相关进程,完成副本的复制,直到副本数达到安全阈值的要求。
可以通过分析数据分布,或者通过MapReduce进行词频统计来验证数据的可靠性。
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操作系统●Hadoop云计算系统●Java 6开发环境由于各个物理机均采用同构的方式进行安装,所以只需要安装一台虚拟机,然后将虚拟机文件拷贝到其他机器上,进入linux虚拟系统,修改相关配置信息即可。
3.1.1安装Linux操作系统首先需要Ubuntu操作系统的ISO镜像,可以去Ubuntu的官方网站下载:. 我们下载的是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操作系统的磁盘空间,不能超过本地磁盘分区剩余的可用空间。