第三章h分布式文件系统new_第1页
第三章h分布式文件系统new_第2页
第三章h分布式文件系统new_第3页
第三章h分布式文件系统new_第4页
第三章h分布式文件系统new_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 Hadoop分布式文件系统目录HDFS的概念12HDFS的体系结构HDFS的可靠性34HDFS的常用操作5HDFS API编程3.1 HDFS的概念HDFS是Hadoop Distributed File System的缩写,是Apache Hadoop项目的一个子项目,的GFS分布式文件系统开源实现。也是HDFS的主要特点是:“一次写入,多次”。这个模型可以降低并发要。求,化简数据集合,能支持高吞吐量的HDFS的概念结构1. 数据块(block)每个磁盘都有默认的数据块大小,这是磁盘进行数据读/写的最小。HDFS默认最基本的数据块大小为64MB。在HDFS中,如果一个文件小于一个数据

2、块的大小,该文件不占用整个数据块空间。2.元数据节点(NameNode)和数据节点(DataNode)HDFS集群以管理者-工作者模式运行,即一个NameNode和多个DataNode。NameNode管理文件系统名空间。它维护着文件系统树及整棵树内所有的文件和目录,这些信息会保存在命名空间镜像文件和编辑日志文件中(位于Linux本地系统目录中,如/dfs/name/current)。数据节点文件夹结构:VERSION文件是javaproperties文件,保存了HDFS的版本号。namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的。对象创建的时间,在cTime表示Na

3、menode初始化时它的值为0。layoutVersion是一个负整数,保存了HDFS的持续化在硬盘上的数据结构的格式版本号。storageType表示此文件夹中保存的是元数据节点的数据结构。元数据(Metadata)元数据就是指数据的数据。 HDFS的元数据就是指维护HDFS文件系统中的文件和目录所需要的信息。从形式上讲,元数据可分为内存元数据和元数据文件两种。其中NameNode在内存中维护整个文件系统的元数据镜像,用于HDFS的管理;元数据文件则用于持久化。元数据(Metadata)从类型上讲,元数据有三类重要信息: 文件和目录自身的属性信息,例如文件名、目录名、父目录信息、文件大小、创

4、建时间、修改时间等。文件内容相关信息,例如文件分块情况、副本个数、每个副本所在的DataNode信息等。HDFS中所有DataNode的信息,用于DataNode管理。NameNode也着每个文件中各个块所在的数据节点信息。但是这些信息不在硬盘上,而是在系统启动时从DataNode收集而成。DataNode是文件系统的工作节点,也就是数据的地方。客户端或者NameNode真正向DataNode请求写入或者数据块。DataNode周期性地向NameNode数据块的信息。其的3.从元数据节点(SecondaryNameNode)Secondary NameNode并不是NameNode出现问题时的

5、备用节点,它负责周期性地将NameNode名空间镜像文件和修改日志合并,以防日志文件过大。它会保存合并后的文件以防NameNode失效时进行恢复。4. HDFS的设计前提与目标(1)超大文件HDFS一个典型的文件可能是几百MB、几百GB甚至几百TB。目前已经有PB级数据的Hadoop集群。因此,HDFS必须支持大文件。(2)流式数据HDFS的构建思路:一次写入、多次是最高效的模式。流式数据利于批量处理。的高吞吐量要求。因此设计目标必须达到数据HDFS的设计前提与目标硬件(3)Hadoop集群可以运行在大量的普用计算机上,因此节点故障率高。检测错误并快速自动恢复成为最的设计目标。(4)不支持低时

6、间延迟的数据。HDFS的设计前提与目标文件的数量受NameNode内存影响。(5)(6)不支持多用户写入和任意修改文件。2015年5月21日四2 HDFS的体系结构HDFS集群包含一个NameNode,它是服务器,管理文件系统名称空间并规;多个DataNode,数户端对文件的点将数据以块为进行,一般一点上部署一个数据节点。主 范客据节个3.一个HDFS的体系结构NameNode管理一些文件系统名称空间操作,如打开、关闭以及重命名文件和目录。到数据节点DataNode,它还将数据块并处理来自客户端的读/写请求。DataNode根据NameNode的指令创建、删除和数据块。HDFS的体系结构HDF

7、S的体系结构HDFS是使用Java语言构建,任何支持Java编程的都能运行HDFS。NameNode使用事务日志来HDFS元数据的变化,使用镜像文件(FsImage)文件系统名空间,包含文件的、文件的属性信息等。事务日志和镜像文件都在NameNode的本地文件系统中。HDFS的体系结构NameNode启动时,从磁盘中文件和事务日志,把事务日志的事务镜像用到内存中的文件上,然后将新的元数据刷新到本地磁盘的新的映像文件中。HDFS还设有Secondary NameNode,用以辅助NameNode处理镜像文件和事务日志。HDFS的体系结构HDFS的通信协议都构建于TCP/IP之上。NameNode

8、与DataNode之间的通信使用RPC(Remote Procedure Call)协议。NameNode不能直接连接到DataNode,它只是获得从DataNode调用的函数返回值。每个DataNode都维护一个开放的服务器套接字,以便客户端代码或其他DataNode能够读/写数据。3.3 HDFS的可靠性1.机柜意识大型HDFS集群跨多个安装点(机柜)排列。一个机柜中的不同节点之间的网络流量通常比跨机柜的网络流量更高效。每个节点都知道它的机柜ID,NameNode通过DataNode的机柜ID来识别它们的位置。HDFS的可靠性2. 冗余备份每个文件成一系列的数据块,每个来保证容错。每个文件

9、数据块都通过的数据块的大小(默认为64MB)和因子(默认为3)都是可以配置的。当DataNode启动时,它会遍历本地文件系统,产生一份HDFS数据块和本地文件对应关系的列表,给NameNode。并HDFS的可靠性3. 副本存放HDFS采用机架感知策略来改进数据的可靠性。一般情况下,当因子是3时,将一个副本放在本地机架节点上,一个副本放在同一机架的另一个节点上,最后一个副本放在不同机架的节点。HDFS的可靠性4. 心跳检测每个DataNode都会向NameNode定期心跳消息。如果NameNode不能接收心跳,就表明连通性丧失,NameNode不再向它们请求。5. 安全模式HDFS启动时,Nam

10、eNode会进入安全模式,登记数据达到最小数目后该模式。若达不到,则该块会被到其他数据节点。HDFS的可靠性6. 数据完整性检测在HDFS文件创建时,会计算每个数据块的检验和,并将其作为一个单独的隐藏文件保存在命名空间下。当获取文件后,会检查各个DataNode取出的数据与相应的校验和相匹配。如果不匹配则认为该节点的数据块有损坏同时选择其他数据节点的数据。HDFS的可靠性7. 空间回收文件被用户删除时,并不是立即从HDFS中移走,而是先把它移动到/trash目录里。该目录保存的是被删除文件的最后副本,用户可以取消删除操作。默认是文件超过6小时后自动删除。HDFS的可靠性8. 元数据磁盘失效映像

11、文件和事务日志是HDFS的数据结构,如果它们损坏,则会导致HDFS不可用。NameNode可以为映像文件和事务日志配置多个副本,对映像文件和事务日志的任何修改都可以同步到副本上。当NameNode重新启动时,总是选择最新的一致的映像文件和事务日志。2015年5月21日四3.4 HDFS的常用操作(1)创建目录$ hadoop fs -mkdir /user/chen(2)上传文件$ hadoop fs -put README.txt.命令最后一个参数是句点(.),这意味着把本地文件放入到默认的工作目录,该命令等价于:$ hadoop fs -put README.txt/user/jcxyHD

12、FS的常用操作(3)列出HDFS上的文件$ hadoop fs -ls /user/chenHDFS中没有当前工作目录的概念,若无文件 夹名,则返回HDFS的“home”目录下的内容。(4)查看文件$ hadoop fs -cat /user/chen/*查看/user/chen目录下所有的文件内容。HDFS的常用操作(5)将HDFS中的文件到本地$ hadoop fs -get /user/chen IN1将HDFS中/user/chen目录下的文件到本地并重命名为IN1。(6)删除文件$ hadoop fs -rmr /user/chen/out.txt(7)其他$ hadoop fs -

13、help commandNameHDFS的其他操作(1)chgrp$ hadoop fs -chgrp -R root /user/hadoop/input更改文件或目录所属的组,使用者必须是文件的所有者或超级用户。(2)chmod$ hadoop fs -chmod -R 755 /user/chen/out.txt更改文件或目录的权限,使用者必须是文件的所有者或超级用户。HDFS的其他操作(3)chown$ hadoop fs -chown -R hadoop /user/hadoop/input更改文件或目录的拥有者,使用者必须是超级用户。(4)cp$ hadoop fs -cp /us

14、er/chen/out.txt /user/chen/out1.txt将文件从源路径到目标路径。HDFS的其他操作(5)du$ hadoop fs -du/user/hadoop显示目录中所有文件的大小。当只指定一个文件时,显示此文件大小。(6)expunge$ hadoop fs -expunge清空回收站。HDFS的其他操作(7) mv$ hadoop fs -mv /user/chen/out.txt /user/chen/out1.txt将文件从源路径移动到目标路径。(8) setrep$ hadoop fs setrep 3 -R /user/hadoop修改一个文件的副本系数。(9

15、) text$ hadoop fs -text /user/chen/out.txt将源文件输出为文本格式。HDFS的其他操作(10)test$ hadoop fs -test -ezd /user/hadoop/out.txt-e:检查文件是否存在,如果存在返回0.-z:检查文件是否是0字节,如果是返回0.-d:如果路径是一个目录,返回1,否则返回0.HDFS的管理与更新(1)report$ hadoop dfsadmin -report查看HDFS的基本统计信息。(2)safemode$ hadoop dfsadmin -safemode enter$ hadoop dfsadmin -s

16、afemeave进入与安全模式。HDFS的管理与更新(3)负载均衡$ cd /hadoop/bin$ ./start-balancer.sh3.5 HDFS API编程 1. 配置Hadoop的开发环境 2. HDFS API简介 3. HDFS文件操作编程示例2015年5月21日四1. 配置Hadoop的开发环境(1)eclipse和hadoop插件地址:此zip文件包含了源码,我们使用编译好的jar即可,解压后,release文件夹中的hadoop.eclipse-kepler-plugin- 2.2.0.jar就是编译好的插件。(2)把插件放到eclipse/plugins目录下2015

17、年5月21日四(3)重启eclipse,配置Hadoopinstallation directory。 打开WindowsPreferences后2015年5月21日四(4)配置Map/Reduce Locations 打开WindowsOpen PerspectiveOther 选择Map/Reduce,点击OK2015年5月21日四(5)点击Map/Reduce Location选项卡,点击右边小象图标,打开Hadoop Location配置窗口。2015年5月21日四(6) 安装 安装时,出现:2015年5月21日四2015年5月21日四2. HDFS API简介位于org.apache

18、.hadoop.fsBlockLocationFileContextFileStatus FileSystem FSDataInputStreaFSDataOutputStre mFsStatusPathRepresents the network location of a block, information about about the hosts that contain block replicas, and other block block metadata.The FileContext class provides an interface to the applicati

19、on application writer for using the Hadoop file system.Interface that represents the client side information for a file. for a file.An abstract base class for a fairly generic filesystem.Utility that wraps a FSInputStream in a DataInputStream and a DataInputStream and buffers input through aBuffered

20、InputStream.Utility that wraps a OutputStream in a DataOutputStream. a DataOutputStream.This class is used to represent the capacity, free and used used space on a FileSystem.Names a file or directory in a FileSystem.FileSystem的常用方法get(Configuration)checkPath(Path)getFileBlockLocations(FileStatus, l

21、ong, long)create(Path)exists(Path) isDirectory(Path) isFile(Path) getLength(Path) listStatus(Path) mkdirs(Path)getFileStatus(Path)append(Path)rename(Path, Path)delete(Path)hadoop/FileSystem.html2015年5月21日四3. HDFS文件操作编程示例(1) 上传本地文件到HDFS(2)创建HDFS文件(3)重命名HDFS文件(4)删除HDFS文件(5)查看HDFS文件是否存在(6)查看HDFS文件在集群的位

22、置2015年5月21日四(1) 上传本地文件到HDFSimport org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;public class CopyFile public static void main(String args) throws Exception /见下页2015年5月21日四上传本地文件到HDFSConfiguration

23、conf =new Configuration();FileSystem hdfs= FileSystem.get(conf);Path src = new Path("c:xx.txt");Path dst = new Path("/");hdfs.copyFromLocalFile(src, dst);System.out.println("Upload to " +conf.get("");FileStatus files=hdfs.listStatus(dst);for(Fil

24、eStatus file:files)System.out.println(file.getPath();2015年5月21日四(2)创建HDFS文件import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;public class CreateFile public static void main(String args)

25、 throws Exception Configuration conf =new Configuration(); FileSystem hdfs= FileSystem.get(conf); byte buff = "hello word".getBytes();Path dfs = new Path("/test");FSDataOutputStream dos = hdfs.create(dfs);dos.write(buff,0,buff.length); dos.flush();dos.close();2015年5月21日四(3)重命名HDF

26、S文件public static void main(String args) throws Exception / TODO Auto-generated method stubConfiguration conf =new Configuration();FileSystem hdfs= FileSystem.get(conf);Path src = new Path("/xx.txt");Path dst = new Path("/.txt");boolean isRename = hdfs.rename(src, dst);2015年5月21日四(4)删除HDFS文件public static void main(String args) throws ExceptionConfiguration conf =new Configuration();FileSystem hdfs= FileSystem.get(conf);Path dst = new Path("/.txt");boolean isDeleted =

温馨提示

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

评论

0/150

提交评论