毕业论文:基于hdfs的云灾备存储系统——可靠存储及负载均衡方法研究.doc_第1页
毕业论文:基于hdfs的云灾备存储系统——可靠存储及负载均衡方法研究.doc_第2页
毕业论文:基于hdfs的云灾备存储系统——可靠存储及负载均衡方法研究.doc_第3页
毕业论文:基于hdfs的云灾备存储系统——可靠存储及负载均衡方法研究.doc_第4页
毕业论文:基于hdfs的云灾备存储系统——可靠存储及负载均衡方法研究.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业论文:基于HDFS的云灾备存储系统可靠存储及负载均衡方法研究毕业论文:基于HDFS的云灾备存储系统可靠存储及负载均衡方法研究毕业论文:基于HDFS的云灾备存储系统可靠存储及负载均衡方法研究:2013-8-15 17:54:55毕 业 设 计 论 文题目: 基于HDFS的云灾备存储系统可靠存储及负载均衡方法研究 院(系) 计算机科学与技术 专 业 网络工程 届 别 2012摘 要 随着计算机技术及因特网技术的发展,数据信息已成为现代企业以及每个人的重要资源,数据的丢失或被窃取将带来重大的损失,数据的安全存储及备份显得尤为重要。本文设计一个基于Hadoop的云灾备存储系统来存储数据。论文采用在Linux虚拟机上创建hadoop分布式文件系统,由分布式系统管理并备份用户的数据。分布式系统由一个名字节点和多个数据节点构成,名字节点对数据的存储进行管理,而数据节点则负责数据的物理存储。为了防止名字节点的故障导致系统的崩溃,必须配置一个第二名字节点来作为冗余并定时处理保存名字节点的系统日志。为了数据的安全备份,必须把数据复制为多个副本存储在多个数据节点上。系统不仅要实现海量数据的存储,同时也要实现海量用户的的管理。为了防止某个数据节点的负载过重,导致用户的操作延迟太大,还必须处理好系统数据节点的负载均衡,使海量用户能够同时流畅的访问hdfs系统。本文,通过配置多台数据节点,并在名字节点上设置一个文件要保存的副本数,来实现数据的安全备份,用户数据分为多份存储在不同的服务器上。名字节点则通过一张排序表来控制用户访问数据时是由哪个数据节点负责响应,排序表实现了负载低的数据节点首先响应用户的访问,从而达到各数据节点的负载均衡。关键词:Hadoop;云灾备;可靠存储;负载均衡ABSTRACTWith the development of computer technology and Internet technology, information has become a modern enterprise as well as important resources for everyone.So datas lost or stolen will bring a significant loss. Secure storage and backup of data is particularly important. This paper designed a cloud disaster recovery storage system witch based on Hadoop to store data.Paper using the Linux virtual machine to create a hadoop distributed file system, distributed systems management and backup the users data. The distributed system consists of a namenode and multiple datanodes, the namenode manage the datas storage.And the datanode is responsible for the physical storage of data. In order to prevent the namenodefailured led to the collapse of the system, we should configure a secondary namenode as the namenodes redundancy and regularly deal with save system log. For the security of data backup, data replication for the storage of multiple copies of multiple datanodes. The system must not only mass data storage, but also mass users management. In order to prevent the overloading of a datanode, which lead to the delay become too large for users operation, we must deal with the datanodes load balancing, so that the mass users access will be simultaneously smooth.The article, by configuring multiple datanodes and set the number of copiesf to save for each file on the namenode to achieve the security of data backup, user data is divided into pay would be stored on different servers. The namenode control witch datanode for users access through a sorting table .This sorting table is used to achieve the low-loaded datanode first to respond to user access, so as to achieve load balancing of all datanodes .Key words: hadoop clould disaster recoveryreliable storageload balancing 目 录1 绪论11.1 研究背景11.2 研究现状21.3 论文主要工作31.4 论文组织与结构42 HADOOP的相关知识52.1 数据的存储和分析52.2 HADOOP的发展和现状52.3 HADOOP在数据容灾的优越性72.4 HADOOP分布式文件系统82.4.1 HDFS的设计82.4.2 数据块92.4.3 名称节点和数据节点92.5命令行接口92.6 HADOOP文件系统103 构建HADOOP集群123.1 集群说明123.2 LINUX上集群的建立和安装123.2.1 Linux系统的安装123.2.2 开启SSH服务并实现无密码登录133.2.3 Java环境的配置153.2.4 安装Hadoop153.3 配置文件的设置153.3.1 配置管理163.3.2 Hadoop配置文件163.4 HADOOP集群的运行184 实现HDFS的可靠存储194.1 二级名字节点194.2 数据节点的冗余备份204.3网络割裂215实现HDFS的负载均衡225.1 概述225.2 负载均衡的重要性225.3 实现HDFS的负载均衡226 HADOOP集群的测试256.1 HADOOP运行的测试256.2 本地文件的上传测试266.3文件的下载297 总结317.1 工作总结317.2 心得体会317.3 进一步的改进32参考文献33后记34附录1 外文翻译(译文)35附录2 外文翻译(英文原文)42 1 绪论1.1 研究背景互联网的高速发展,使计算机成为了个人或企业的必不可少的工具,在日常生活,工作,学习中等等计算机都给人们带来了方便和高效的应用,然而每每都离不开数据,人们不再是仅仅利用文本记录数据,那太缺乏效率,而需要用计算机来存储。所以数据的安全存储和有效存储成为了人们关心的问题。个人的私人重要数据都有其保存的意义,如果数据丢失那对于自己来说无疑是非常重大的损失,而企业的重要数据更是如此,往往一些重要数据能关系到一个企业的成败甚至存亡。所以灾备建设的重要性无论怎么强调都不过分。灾备建设旨在帮忙用户或企业高效安全的存储数据,能够大量的存储数据,而且提供备份,使得即使出现意外情况造成数据损失时,都这样对于集中存储具有高度重要性的文件系统,可以配置更多的副本数以确保更大的安全性。2)Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。运行在HDFS上的应用和普通的应用不同,需要流式访问它们的数据集。HDFS的设计中更多的考虑了数据批处理,而不是用户交互处理。比数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。而且HDFS为应用数据的计算提供了将它们自己移动到数据附近的接口。一个应用请求的计算,离它的数据越近就越高效,在海量数据的处理面前更是如此,把计算移到数据附近,再把计算结果返回给用户,相对与传输用户需要的大量数据给用户再进行运算,要高效非常多。这样就能降低网络阻塞的影响,提高系统数据的高吞吐量。3)Hadoop 还是可伸缩的,能够处理 PB 级数据。HDFS上的一个典型文件大小一般都在G字节至T字节。因此,HDFS被调节以支持大文件存储。它应该能提供整体上高的数据传输带宽,能在一个集群里扩展到数百个节点。4)Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。而且HDFS被设计成具有平台的可移植性。这种特性方便了HDFS作为大规模数据应用平台的推广。2.4 Hadoop分布式文件系统2.4.1 HDFS的设计HDFS是以流式数据访问模式存储超大文件而设计的文件系统,在廉价的商用硬件集群上运行。超大文件是指几百MB,几百GB或者几百TB大小的文件。HDFS的流式数据访问模式旨在一次写入,多次访问,一个数据集通常由数据源生成或复制,接着在此基础上进行各种各样的分析,每个分析至少都会涉及数据集中的大部分数据,因此读取整个数据集的时间比读取第一条记录的延迟更为重要。Hadoop不需要运行在昂贵并且高可靠性的硬件上。它被设计成运行在低廉的商用硬件集群上,它以众多的数据节点来实现可靠性,因此允许集群中多个节点的故障,但仍能保证系统的正常运行。HDFS是针对海量数据的处理的,因此需要达到高的数据吞吐量,虽然这可能会一提高数据的传输延迟为代价,但还是值得的。2.4.2 数据块HDFS将每个文件存储成一系列的数据块,除了最后一个,所有的数据块都是同样大小的,默认每个块的大小是64MB,每个分块作为单独的单元进行存储。使用块为单元的好处在于,第一,hadoop是处理海量数据的,可能存在超大文件使得集群中单个磁盘装不下的,这样通过分块,便能够把此超大文件分块存储在多个磁盘上,而且它们能够利用集群上任意一个磁盘。第二,数据块很适合于为提供容错和实用性而做的的复制操作。为了应对损坏的块以及磁盘或机器的故障,每个块都在少数其他分散的机器进行复制。如果一个块损坏了,系统会在其他地方读取另一个副本,而这个过程对用户是透明的。一个因损坏或机器故障而丢失的块会从其他的候选地点复制到正常运行的机器上,以保证副本的数量回到正常水平。2.4.3 名称节点和数据节点HDFS采用的是Master/Slave结构。集群中存在两种节点,NameNode名字节点和DataNode数据节点。名字节点只有一个,它是一个中心服务器,负责管理文件系统的名字空间以及客户端对文件的访问,它维护集群内的元数据,维护着整个文件系统树以及在这个树内多有的文件和索引目录。对外提供创建,打开,删除和重命名文件或目录的功能。它也负责确定数据块到具体数据节点的映射。名子节点是非常重要的,如果没有名字节点,文件系统将无法使用。为了提高系统的可靠性,使得再名字节点出现故障时,仍能保证系统快速恢复和数据的安全,这里可以采用运行一个二级名字节点。数据节点存储数据,并负责处理数据的读写请求。在名字节点的统一调度下进行数据块的创建,删除和复制。数据节点定期向名字节点上报心跳,名字节点通过响应心跳来控制数据节点。数据节点有多个进行冗余备份,因此允许某个数据节点的故障,保证系统的正常运行。2.5命令行接口我们可以通过很多接口来与HDFS进行交互,而其中最简单的便是通过命令行接口。直接在终端下通过命令来进行文件的操作。首先需要先进入hadoop安装目录的bin目录下,个文件或目录的操作命令如下:Hadoop dfs -mkdir /newdir ;在hdfs中建立一个名为newdir的目录;Hadoop dfs ls /newdir 查看一个目录下的文件列表,通过这个命令我们可以看到该目录下所有的文件,及其各文件的状态信息,如文件格式,读写权限,所设置的副本数,属于那个用户或组别,文件大小及文件的最近更新日期等;Hadoopd fs put 本地文件路径 目标路径。指定路径将指定本地文件拷贝到hdfs中,当执行一个put操作时,它的结果是要么全做,要么全不做。上传文件的时候,文件首先被拷贝到DataNode节点上。当所有的 DataNode都接收完数据的时候,文件句柄被关闭,这个文件才真正的上传完。根据put命令的返回值,我们可以知道这个操作是成功了,还是完全失败了。文件不可能会只被上传一半。如果文件上传到一半时,上传操作被中断了,那么hdfs就会当作什么事情也没有发生一样。Hadoop dfs cat 文件路径。从hdfs系统中导出指定文件的数据,将一个文件的内容输出到标准输出上。Hadoop dfs get hdfs路径 本地路径。Get命令和Put命令的功能是相反的。将指定hdfs系统上的文件下载到指定本地路径上。Hadoop dfs的命令行接口还有很多,以上只先介绍写常用的基本命令操作,这些可以让我们开始使用HDFS了,后面还将介绍更多的接口应用。如果想了解更多的命令,可以通过执行不带任何参数的hadoop dfs命令,它会列出所有的hdfs命令。同时如果你不明白某些命令是怎么用的,你还可以输入hadoop dfs help 命令名字,它会帮你指出该命令的具体用法指南。2.6 Hadoop文件系统名字节点存储HDFS的元数据。对于任何对文件元数据产生修改的操作,名字节点都使用一个称为Editlog的事务日志记录下来。例如,在HDFS中创建一个文件,名字节点就会在Editlog中插入一条记录来表示;同样,修改文件的replication因子也将往 Editlog插入一条记录。名字节点在本地OS的文件系统中存储这个Editlog。整个文件系统的名字空间,包括数据块到文件的映射、文件的属性,都存储在称为FsImage的文件中,这个文件也是放在名字节点所在系统的文件系统上。名字节点在内存中保存着整个文件系统名字空间和文件块的映像。这个关键的元数据设计得很紧凑,因而一个带有4G内存的 名字节点足够支撑海量的文件和目录。当名字节点启动时,它从硬盘中读取Editlog和FsImage,将所有Editlog中的事务作用(apply)在内存中的FsImage ,并将这个新版本的FsImage从内存中flush到硬盘上,然后再truncate这个旧的Editlog,因为这个旧的Editlog的事务都已经作用在FsImage上了。这个过程称为检查点。在当前实现中,检查点只发生在名字节点启动时,在不久的将来我们将实现支持周期性的检查点。数据节点节点并不知道关于文件的任何东西,除了将文件中的数据保存在本地的文件系统上。它把每个HDFS数据块存储在本地文件系统上隔离的文件中。 数据节点节点并不在同一个目录创建所有的文件,相反,它用启发式地方法来确定每个目录的最佳文件数目,并且在适当的时候创建子目录。在同一个目录创建所有的文件不是最优的选择,因为本地文件系统可能无法高效地在单一目录中支持大量的文件。当一个数据节点节点启动时,它扫描本地文件系统,对这些本地文件产生相应的一个所有HDFS数据块的列表,然后发送报告到名字节点,这个报告就是块状态报告。 Hadoop的整体架构图如下: 图2.1 HDFS架构 3 构建Hadoop集群3.1 集群说明Hadoop集群,可分为两大类角色Master和Slave,前者主要配置名字节点和JobTracker的角色,负责总管分布式数据和分解任务的执行,后者配置数据节点和TaskTracker的角色,负责分布式数据存储以及任务的执行6。因为hadoop是要在Linux环境下配置的,这里我选择了ubuntu系统,通过vmware创建3台虚拟机,一台作为名字节点服务器,两台作为数据节点服务器。在3台虚拟机上都安装好ubuntu系统,考虑到宿主电脑要同时运行三台虚拟机,这里对虚拟机的内存设置为:作为名字节点的虚拟机分配了800MB的内存空间,而两台数据节点都分配400M的空间。3.2 Linux上集群的建立和安装 3.2.1 Linux系统的安装 首先在三台虚拟机上安装好ubuntu系统,配置名字节点有800M内存,两台数据节点有400M内存。上网方式选择NAT,IP地址参照宿主本地主机的IP网段设置为同一网段的,并且设置相同的网关和域名服务地址。这样就能保证虚拟机也能正常上网。因为后续的一些服务的安装需要通过命令行接口实现在线的下载与安装,所以必须保证虚拟机可以正常上网。在这里我配置的IP地址如下:名字节点:0/24数据节点1:1/24数据节点2:2/24在配置虚拟机的上网方式时,曾出现一点错误让我无法正常上网。这里提下vmware虚拟网卡的基础知识:vmware默认有3个虚拟网卡:VMnet0,它是负责桥接的,把虚拟机网卡通过vmnet0桥接到主机的本地连接上;VMnet1,提供的网络连接方式是host-only,就是虚拟机和主机处在一个私有网络中,此方式下,虚拟机只能与主机通讯,不能上外网;VMnet8,提供的网络连接方式是NAT,就是让虚拟机共享主机的IP地址,只要主机能上网虚拟机便能上网。当时,我配置了虚拟机的网卡连接方式为NAT但是虚拟机就是无法上网。错误在于之前的其他实验当中,我把VMnet8的连接方式修改过了,改成了host-only,所以即使网卡连接方式我已经设为了NAT,但是负责NAT功能的VMnet8已不再具有NAT功能了。这里还是需要注意下的。 为了方便宿主主机本地文件到虚拟机上的交互:复制粘贴。我们还需要安装VMtools,使得能够通过简单的复制粘贴快捷键或简单的鼠标拖动就能在主机与虚拟机上移动文件。总之,安装VMtools会给我们对虚拟机的操作带来很多的方便。下面介绍下VMtools的具体安装。1)点击VMware菜单的虚拟机安装VMware Tools,在弹出的对话框中选择“安装”。这时,在Ubuntu下会自动加载Linux版的VMware Tools的安装光盘镜像。你会看到虚拟机的桌面上出现了一个名为VMware Tools的光盘图标,并且被自动打开。其中包括VMwareTools-5.3.3-34685-i386.rpm和VMwareTools- 5.3.3-34685.tar.gz两个文件。2)通过鼠标右键解压VMwareTools- 5.3.3-34685.tar.gz这个文件到指定目录下,这里我是直接解压到桌面上的。3)点击Ubuntu桌面左上角的Applications附件终端,在终端界面中,首先用cd 命令进入到解压缩后的那个文件夹中,然后再用命令$ sudo ./vmware-install.pl进行vmtools的安装,回车后会提示输入你的密码,表明你将以更高级权限执行一个动作安装软件;再次回车后安装开始,后续一直回车确定,直到最后出现“Enjoythe VMware team”的字样后,就表示VMwareTools终于安装完成了。这时必须重新启动虚拟机,才会使vmware-tools的功能生效。这样,ubuntu系统就基本安装好且方便操作了,可以进行下一个的工作了。3.2.2 开启SSH服务并实现无密码登录正如前面所说的,有些服务的开启需要在线的下载和安装,所以需要虚拟机能够上网。这里的ssh服务的开启就是其一。打开终端,输入命令:sudo apt get install openssh-server 然后它便会自己下载和安装,安装完成后可以通过在终端中输入命令:ssh 虚拟机自身IP,来检测ssh服务是否已经正常安装。如果没有安装成功则会有ssh服务没有开启的错误报告,正常安装后则会提示输入密码以进行ssh登录。各个节点都必须开启ssh服务。安装好ssh服务后,还要保证3台虚拟机之间能够实现互相进行无密码登录,这是进行后续工作的前提,ssh是linux传递文件的保障,只有能够互相ssh我们各个机器之间传递的信息才是安全的,所以一定要保证各个机器之间能够ssh通畅。首先,在每个节点上通过ssh-keygen-t rsa命令,创建各个节点的公钥和私钥,期间会要求输入一些信息,直接按回车就可以了,这样在默认路径 (我的路径是/home/zgj/.ssh)目录下便创建了私钥id_rsa和一个公钥id_rsa.pub。然后两个数据节点要把自己的公钥发送到名字节点上,由于每个 datanode 节点都要将自己的公钥传到 名字节点 的相同路径下,因此,各个 datanode 发送的公钥文件名不能相同。这里使用 cp 命令,在每台 datanode 节点上将公钥文件复制为唯一名字的文件。数据节点1 :cp id_rsa.pub datanode1.id_rsa.pub ;数据几点2:cp id_rsa.pub datanode2.id_rsa.pub。把更改名字后的公钥发送到名字节点上:scp datanode1.id_rsa.pub 0:/home/zgj/.ssh(0为名字节点的IP)。数据节点2也采用同样的命令进行操作。最后名字节点在收到所有数据节点发送过来的公钥文件后,要综合这些文件,当然也包括自身的公钥,并将这些文件发送到各个数据节点上。步骤如下:3)将自身的公钥改名为认证钥匙cp id_rsa.pub authorized_keys 3)将各数据节点的公钥输入到认证钥匙里进行综合cat datanode1.id_rsa.pub authorized_keys cat datanode2.id_rsa.pub authorized_keys 3)把综合后的文件发送到各个数据节点 scp authorized_keys 1:/home/zgj/.ssh发送到数据节点1scp authorized_keys 2:/home/zgj/.ssh发送到数据节点2 配置完需要验证配置是否成功,即检查各个节点之间能否实现五密码登录:ssh其他节点IP,如果不需要密码就可以登录,说明配置已经成功,如果登录还需要密码甚至无法登录,则先重启虚拟机后再进行无密码登录验证,如果还是不成功,则按如上步骤重新再配置一次,直到成功为止。在这里我也配置了好几次才成功。 3.2.3 Java环境的配置root用户登陆,在名字节点节点上新建文件夹/usr/program,下载JDK安装包jdk-6u13-linux-i586.bin,复制到目录/usr/ program下,在命令行进入该目录,执行命令“./ jdk-6u13-linux-i586.bin”,命令运行完毕,将在目录下生成文件夹jdk1.6.0_13,安装完毕。 安装完成后还必须进行环境变量的配置: root用户登陆,命令行中执行命令”sudo gedit /etc/profile”,并加入以下内容,配置环境变量/etc/profile是个非常重要的文件,后面Hadoop的配置还会用到。所以变量的配置一定要认真,不能出错。# set java environmentexport JAVA_HOME=/usr/program/jdk1.6.0_13/export JRE_HOME=/usr/program/jdk1.6.0_13/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH7保存并退出,执行以下命令使配置生效:chmod +x /etc/profilesource /etc/profile配置完毕,在命令行中使用命令”java -version”可以判断是否成功。如果成功的话会在终端显示具体的java版本信息。3.2.4 安装Hadoop下载hadoop-到名字节点上,把它解压至/home/zgj目录下。把 Hadoop 的安装路径添加到/etc/profile中,如下:export HADOOP_HOME=/home/zgj/ hadoop-。3.3 配置文件的设置hdfs需要配置一些文件来控制hadoop的安装,其中比较重要的文件有如下几个: core-site.xml,这是hadoop的核心配置; hdfs-site.xml,这是hdfs后天程序设置的配置:名字节点,数据节点和二级名字节点 mapred-site.xml,这是MapReduce后台程序设置的配置:jobtracker和tasktracker。 Master,记录运行二级名字节点的机器的列表。 Slaves,记录运行数据节点和tasktracker的机器的列表。这些配置文件全部可在hadoop分部的conf目录下找到。3.3.1 配置管理Hadoop没有为配置信息提供单一的,全局的位置。相反,集群中每一个hadoop集群的节点都有自己的配置文件集,并由管理者确保在整个系统中配置同步。 Hadoop包含为运行命令和控制整个集群中后台程序的开始停止的脚本。使用这些脚本,需为datanode1,把数据节点2的主机名改为datanode2。然后配置各个主机之间IP与主机名的对应关系:修改集群中各个主机的/etc/hosts文件:sudo gedit /etc/要先告诉hadoop哪些机器在集群中。因此,有两个文件masters和slaves,每一个都包含机器的主机名或ip地址的列表,这里我指的是ip地址。因此我的ip地址是手动分配的。Masters是决定了哪些机器将运行二级名字节点。Slaves文件列出了运行数据节点和tasktracker的机器。这两个文件只有运行在名字节点或者jobtracker上的控制脚本使用。 集群的配置:首先修改个主机的主机名,以区分不同的机器,将作为名字节点的主机名改为名字节点,把数据节点1的名字改hosts,打开hosts文件然后将各个主机的IP地址与主机名都列在此处,注意,还要将第一行注释掉:#localhost.localdomain localhost3.3.2 Hadoop配置文件Hadoop的主要配置都在hadoop-/conf下首先配置hadoop的配置文件 1)在conf/hadoop-env.sh中配置java环境,打开文件,添加export JAVA_HOME=/usr/program/jdk1.6.0_13/2)配置conf/core-site.xml。第一配置。值设为hdfs:/0:9000。这是hdfs的URI,文件系统:/名字节点 IP地址:端口号,这个属性指明此台虚拟机就是名字节点,指定的端口是名字节点将要为RPC监听的端口,如果没有指定端口,则默认为8020。第二配置hadoop.tmp.dir值设置为/home/zgj/hadoop/hadooptmp。这是设置名字节点上本地的hadoop临时文件夹。3)配置hdfs-site.xml。第一配置.dir。设置为/home/zgj/hadoop/hdfs/name。这是名字节点上存储hdfs名字空间元数据。它指定了一个目录列表,让名字节点不断的存储文件系统元数据。每一个元数据文件的副本都存储在一个目录下。第二配置dfs.data.dir。设置为/home/zgj/hadoop/hdfs/data。这是数据节点上数据块的物理存储位置。它为数据节点指定了一个目录列表区存储它的块。与使用多重目录的名字节点不同,数据节点会轮询写入它的存储目录,所以为了提高性能应该为每一个本地磁盘指定一个存储目录。第三,配置dfs.replication。这是副本个数,默认是3。这里我设置为2,因为我只配置了两台数据节点。4)配置mapred-site.xml。第一配置mapred.job.tracker。这里设置为zgj:9001。这是jobtracker标识和端口号。第二配置mapred.local.dir,设置为home/zgj/hadoop/mapred/local。这个路径是tasktracker上执行maprreduce程序时的本地目录。第三,配置mapred.system.dir.设置为/tmp/hadoop/mapred/system。这个是hdfs中的目录,存储执行mapreduce程序时的共享文件。在配置好各个文件后,还要把各个文件复制到所有数据节点上。scp /etc/hosts 数据节点ip地址:/etc/hostsscp /etc/profile 数据节点ip地址:/etc/profilescp /usr/program 数据节点ip地址:/usr/programscp /usr/zgj/hadoop 数据节点ip地址: /usr/zgj/至此,hadoop的个重要文件都已经做好了相应的配置,接下来就是启动hadoop,运行hdfs了。3.4 Hadoop集群的运行在安装好hadoop后,接下来便是运行系统,看系统的各个进程是否正常,运行hadoop的步骤如下:1.格式化:进入hadoop的安装目录,这里hadoop的安装目录为:/home/zgj/hadoop。进入到bin目录底下,即/home/zgj/hadoop/bin。第一次 运行,首先应该格式化下系统,命令为:hadoop 名字节点 format。格式化后,在名字节点上的hadoop目录下就会生成hdfs/name文件夹,用来存放元数据的名字空间。2.启动hadoop。可以通过命令bin/start-all.sh来启动所有进程。也可以通过命令:bin/start-dfs.sh和命令bin/startmapreduce来先后开启dfs和mapreduce进程。命令运行后,可以通过输出的启动日志来检查是否所有节点都正常并且按照正确顺序启动。正确的启动顺序为:首先启动名字节点,然后分别启动数据节点1和数据节点2,然后再启动二级名字节点,接着启动jobtracker,最后依次启动tasktracker1和taasktracker2。Hadoop进程都启动后,可以通过命令hadoop dfsadmin report来查看集群状态。显示出集群的数据存储总空间,以及空间的已存储的数据量等信息,还有各数据节点的状态信息。还可以通过web方式查看:登录0:50070。同样可以查看名字节点和数据节点的系统状态信息还能够进行更多的查看与操作。Web的操作将在后面做具体介绍。 4 实现HDFS的可靠存储4.1 二级名字节点名字节点故障。名字节点在HDFS中处于核心的地位,而且仅有一台,如果这台名字节点出现故障,那么整个HDFS都将无法继续运行,甚至会丢失全部数据。可见,保证名字节点正常运行的重要性。 机器的硬件故障就不说了,这里主要介绍名字节点重要系统文件出错时的故障。FsImage和Eidtlog是HDFS的核心数据。名字节点上保存着HDFS的名字空间。对于任何对系统元数据产生修改的操作。名字节点都会使用Editlog将其记录下来。名字节点在本地操作系统的文件系统中存储着这个Editlog。然后,整个文件系统的名字空间,包括数据块到文件的映射,文件的属性等,都存储在FsImage这个文件中。FsImage也是放在名字节点所在的本地系统上的。 为了保证名字节点出错时,系统能够快速恢复,我们要设置一个二级名字节点,用来保存名字节点中对HDFS metadata的信息的备份,并减少名字节点的重启时间。正常情况下,名字节点将文件系统的改动追加等动作保存在本地文件系统上的一个日志文件。当名字节点启动时,首先从FsImage文件中读取HDFS的状态,接着应用日志文件中的edits操作。然后它将新的hdfs状态写入FsImage文件中,并使用一个空的edits文件开始正常操作。因为名字节点只有在启动阶段时才合并FsImage和Editlog生成的检查点。所以久而久之,日志文件会变得非常庞大,因此如果名字节点发生故障想要重新启动时,庞大的日志文件的加载和处理便会导致启动花费相当长的时间。二级名字节点的作用便在于此。它不仅保存有FsImage和Editlog的副本。而且它会定期合并FsImage和Editlog,将edits日志文件大小控制在一个限度下。同时保存最新检查点的目录与名字节点的目录结构相同。所以,在名字节点出现故障要恢复时,只要从二级名字节点上读取最新检查点镜像就能快速恢复到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论