




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章HDFS分布式文件系统
·Hadoop的文件系统·HDFS的简介·HDFS的框架及原理·HDFS的shell操作1·HDFS的读写数据流程·HDFS的JavaAPI操作2✎学习目标了解掌握掌握掌握了解HDFS的概念与特性12掌握HDFS的特点4掌握HDFS的架构与原理3掌握HDFS的Shell和JavaAPI操作本章通过对文件系统的简介、HDFS的设计特点、HDFS的架构与原理、HDFS的shell操作、HDFS的JavaAPI操作及HDFS的读写数据流程进行详细讲解。章节概要HDFS
是一种将系统数据存储在集群中多个节点或机器上,并且这些数据允许多个用户访问的文件系统。分布式文件系统解决了数据集的大小超过一台独立物理计算机的存储能力的问题,庞大的数据集被存放在多台机器上,分布式文件系统可以组织这些在不同机器上的数据通过网络对数据进行读写,这使得人们感觉所有的数据都存储在一台机器上。
3.1Hadoop的文件系统文件系统的介绍Hadoop整合了很多的文件系统,而HDFS只是Hadoop文件系统中比较优秀的一种,Hadoop可以集成除了HDFS的其他文件系统,这点也充分体现出Hadoop的可扩展性。Hadoop定义了一个文件系统的抽象类,在Java中这个抽象类是“org.apache.hadoop.fs.FileSystem”,一个文件系统只有实现了这个抽象类的方法才可以成为支持Hadoop的文件系统。
3.1Hadoop的文件系统文件系统的介绍文件系统URI方案Java实现(org.apache.hadoop)定义LocalFileFs.localFileSystem支持有客户端校验和本地文件系统。带有校验和的本地系统文件在fs.RawLocalFileSystem中实现HDFSHdfsHdfs.DistributionFileSystemHadoop的分布式文件系统WebHDFSWebhdfsHdfs.web.WebHdfsFileSystem使用HTTP方式读写HDFS数据的文件系统SecureWebHDFSSwebhdfsHdfs.web.SWebHdfsFileSystemWebHDFS的HTTPS传输方式ViewViewfsViewfs.ViewFileSystem一种Hadoop文件系统的挂载表,通常被用来创建namenode的挂载点HFTPHftphdfs.HftpFileSystem支持通过HTTP方式以只读的方式访问HDFS,distcp经常用在不同的HDFS集群间复制数据HSFTPHsftphdfs.HsftpFileSystem支持通过HTTPS方式以只读的方式访问HDFSHARHarfs.HarFileSystem构建在Hadoop文件系统之上,对文件进行归档。Hadoop归档文件主要用来减少NameNode的内存使用FTPftpfs.ftp.FtpFileSystem由FTP服务器支持的文件系统S3(本地)s3nfs.s3native.NativeS3FileSystem基于AmazonS3的文件系统S3(基于块)s3fs.s3.NativeS3FileSystem基于AmazonS3的文件系统,以块格式存储解决了S3的5GB文件大小的限制SwiftSwiftfs.swift.snative.SwiftNativeFileSystem对接Openstack的swift服务的文件系统
3.1Hadoop的文件系统Hadoop文件系统对外接口Hadoop提供了很多文件系统的访问接口,由于Hadoop是用Java进行开发的,所以可以通过调用JavaAPI实现与Hadoop文件系统的交互操作。除此之外,使用文件系统的方法还有:命令行、HTTP、C语言API、NFS、FUSER等方式。HTTP调用JAVA接口C语言库WebDAVFuseThrift
3.2HDFS的简介HDFS的设计特点Hadoop分布式文件系统(HDFS)是一种可以在低成本计算机硬件上运行的高容错性分布式文件系统。HDFS提供对应用程序数据的高吞吐量访问,并且适用于具有大数据集的应用程序。大数据处理流式数据访问高容错性检测和快速应对硬件故障
3.2HDFS的简介HDFS的局限性HDFS虽然有着大数据处理、流式数据访问、高容错性、检测和快速应对硬件故障等优势,但是,现在的HDFS在处理某些特定问题时不但没有优势,反而会存在一定的局限性,因此,了解HDFS的优势和劣势对以后使用HDFS解决特定问题很有帮助。不适合大量的小文件存储不适合低延迟数据访问不支持多用户的并行写入和文件修改
3.3HDFS的架构及原理HDFS的架构一个HDFS的分布式集群由单个NameNode、多个DataNode和Client组成。NameNode是一个中心服务器,也称为主节点,它主要用来管理HDFS的名称空间、处理客户端读写请求、管理数据块映射信息、配置副本策略等。DataNode是数据节点,也称为从节点,它主要负责存储实际的数据块和执行数据块的读写操作,一个文件被分解成一个或多个数据块,这些块数据被存储在一组DataNode上。
3.3HDFS的架构及原理HDFS的架构
3.3HDFS的架构及原理HDFS的架构——数据块数据块是HDFS中每个磁盘都有的默认存储最小单位,数据块是文件存储处理的逻辑单元,这种概念与Linux文件系统中的磁盘块类似。HDFS上的文件系统被划分为多个块作为独立的存储单元,其大小可以已通过Hadoop的配置参数“dfs.blocksize”来规定,在Hadoop2.x版本中Block的默认大小被定义为128MB,而在老版本中一般大小为64MB。
3.3HDFS的架构及原理HDFS的架构——数据块数据块信息可以通过Hadoop的Web界面查看到,存储在HDFS的文件名称为“helloworld.txt”,且该文件存储在slave2和slave1两个DataNode上,数据块池ID为“BP-1743969542-00-1578923091266”,该存储块的BlockID为“1073741993”,可以在节点slave1和节点slave2上找到该文件的数据块,并查看其内容。
3.3HDFS的架构及原理HDFS的架构——副本存放策略为了保证数据节点或机架出现故障后数据的完整性,每个块都会被复制到多台DataNode上,默认复制三份,并且分布在两个机架内的三个节点上,当一个DataNode出现故障后,因为A数据块存储在两个机架上且有三个副本,所以可以保证数据不丢失且正常运行。
3.3HDFS的架构及原理HDFS的架构——副本存放策略副本存放原则:①Block副本放在与Client所在的Node里(如果所在Node太忙,也会随机选择)。②副本放置在与第一个节点不同的机架中的Node中。③副本与第二个在同一个机架,随机放在不同的Node中。
3.3HDFS的架构及原理HDFS的架构——NameNodeNameNode是分布式系统中的主节点,也称为中心服务器,它是HDFS的主从结构中的中心枢纽,存储着元数据等重要信息。元数据包括两个部分:文件与数据块的映射表、数据块与数据节点的映射表。NameNode的四个功能:管理HDFS的名称空间、配置副本策略、管理数据块的映射信息、处理客户端读写请求。
3.3HDFS的架构及原理HDFS的架构——NameNodeNameNode将元数据保存到磁盘上的流程,如下图所示。该元数据包括两个文件,即Fsimage和Editlogs。Fsimage是在NameNode启动时对整个文件系统的快照,Editlogs是在NameNode启动后对文件系统的改动序列。只有在NameNode重启时,Editlogs才会合并到Fsimage文件中,从而得到一个文件系统的最新快照。
3.3HDFS的架构及原理HDFS的架构——DataNodeDataNode
是分布式系统中的从节点,也称为slaver。它是HDFS中的工作节点,用于存放数据块Block,一个集群中可以一个NameNode和多个DataNode。DataNode
通常以机架的形式组织,机架之间通过交换机将整个系统连接起来。DataNode
的功能有两个:存储实际的数据块和执行数据块的读写操作。
3.3HDFS的架构及原理HDFS的架构——SecondaryNameNode只有在NameNode重启时,Editlogs才会合并到Fsimage文件中,从而得到一个文件系统的最新快照。但是,在产品集群中NameNode是很少重启的,而在运行过程中Editlogs就会变得越来越大,使得其很难管理。SencondaryNameNode
就是用来解决这种问题的,它的主要作用是合并NameNode的editlogs到Fsimage文件中,从而解决Editlogs越来越大的问题。
3.3HDFS的架构及原理HDFS的架构——SecondaryNameNodeSecondaryNameNode
的工作流程如下:①SecondaryNameNode
定时到NameNode去获取Editlogs,并更新到Fsimage上。②一旦它有了新的Fsimage文件,它将其拷贝回NameNode中。③NameNode在下次重启时会使用这个新的Fsimage文件,从而减少重启的时间。
3.4HDFS的Shell操作HDFS的Shell操作HDFS
是一种能够对大量文件进行存储和读取的分布式文件系统,HDFS
将这些文件分成数据块以后再将其副本存储到不同的DataNode中。Hadoop提供了很多对外操作文件的方式,其中包括Web方式、API方式、Shell
方式等。本节主要介绍HDFS分布式文件系统的Shell操作,Hadoop支持很多Shell
命令,比如:“hadoopversion、hadoopjar、hadoopchecknative、hadoopfs”等。
3.4HDFS的Shell操作Hadoop相关命令Hadoop使用方法:
3.4HDFS的Shell操作查看Hadoop版本使用命令“hadoopversion”查看Hadoop运行版本,可以看到使用的是Hadoop2.7.7版本,正在运行的Jar包的位置等信息。
3.4HDFS的Shell操作检查Hadoop本地代码可用性使用命令“hadoopchecknative-a”查看Hadoop本地代码的可用性,在默认情况下,此命令只检查libhadoop的可用性,也可以使用该命令检查环境的安装情况。除此之外,也可以使用“hadoopchecknative-h”查看命令的具体解释情况。
3.4HDFS的Shell操作执行Jar包运行命令“hadoopjarhadoop-mapreduce-examples-2.7.7.jarpi1010”通过启动10个“map”和10个“reduce”任务求pi值。
3.4HDFS的Shell操作修改与查看Log日志级别使用“hadoopdaemonlog-getlevel”获取日志级别。使用“hadoopdaemonlog-setlevel”设置日志级别。可以设置的节点包括HDFS、NameNode、SecondaryNameNode、DataNode、JournalNode、YARN、ResourceManager、NodeManager
3.4HDFS的Shell操作修改与查看Log日志级别查看NameNode的Log日志级别使用命令“hadoopdaemonlog-getlevel:50070node.NameNode”。
3.4HDFS的Shell操作修改与查看Log日志级别使用命令“hadoopdaemonlog-setlevel:50070node.NameNodeWARN”将NameNode的日志级别从“INFO“改为“WARN”级别。
3.4HDFS的Shell操作集群间拷贝DistCPDistCP
是ApacheHadoop上下文中的DistributedCopy(分布式拷贝)的缩写。它是一个用于大规模集群内部和集群之间拷贝的工具。DisctCP使用MapReduce实现文件分发、数据错误处理与恢复、报告生成等功能。由于其MapReduce的使用,使得DisctCP可以在集群中的多个可用节点上进行操作,从而提高效率。上述命令会将nn1集群的“/source”目录下的所有文件或目录展开并存储到一个临时文件中,这些文件内容的拷贝工作被分配给多个Map任务,然后每个NodeManager分别执行从nn1到nn2的拷贝操作。
3.4HDFS的Shell操作Hadoop文件处理命令Hadoop对于文件处理包括很多种类型的命令,比如hadoopfs、hadoopdfs和hdfsdfs都是HDFS最常用的Shell命令,用来查看HDFS文件系统的目录结构、上传和下载数据、创建文件等。这三个命令既有联系有又区别:①hadoopfs:适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统。②hadoopdfs:只能适用于HDFS文件系统。③hdfsdfs:与“hadoopdfs”命令的作用一样,也只能适用于HDFS文件系统。
3.4HDFS的Shell操作Hadoop文件处理命令Hadoopfs使用方法
3.4HDFS的Shell操作Hadoop文件处理命令——帮助参数查看命令“rm”的使用方法,输入“hadoopfs-helprm”。除此之外,该命令可以查看很多其他的命令,包括mkdir、put、get等。
3.4HDFS的Shell操作Hadoop文件处理命令——显示目录查看HDFS中根路径下的文件目录,输入命令“hadoopfs-ls/”。除此之外,还可以使用命令“hadoopfs-lsr”递归列出匹配Pattern的文件信息,类似ls,只不过递归列出所有子目录信息。
3.4HDFS的Shell操作Hadoop文件处理命令——创建目录创建文件夹目录“/sanguo/shuguo”,输入命令“hadoopfs-mkdir-p/sanguo/shuguo”。
3.4HDFS的Shell操作Hadoop文件处理命令——删除目录删除文件夹“/test”,输入命令“hadoopfs-rm/test”。使用命令“hadoopfs-rmr[skipTrash]<src>”,可以递归删除所有的文件和目录,等价于UNIX下的“rm-rf<src>”。
3.4HDFS的Shell操作Hadoop文件处理命令——剪切粘贴在/tmp目录下,创建“helloworld.txt”文件;然后将该文件剪切到HDFS中已经创建好的“/sanguo/shuguo”目录下,使用命令“hadoopfs-moveFromLocal/tmp/helloworld.txt/sanguo/shuguo”。
3.4HDFS的Shell操作Hadoop文件处理命令——剪切粘贴在/tmp目录下,创建“helloworld.txt”文件;然后将该文件剪切到HDFS中已经创建好的“/sanguo/shuguo”目录下,使用命令“hadoopfs-moveFromLocal/tmp/helloworld.txt/sanguo/shuguo”。
3.4HDFS的Shell操作Hadoop文件处理命令——粘贴将刚才保存在HDFS中的“helloworld.txt”文件复制粘贴到“/tmp”目录下,可以使用命令“hadoopfs-copyToLocal/sanguo/shuguo/helloworld.txt/tmp。与copyToLocal相同的参数还有“-get”,可以使用命令“hadoopfs-get/sanguo/shuguo/helloworld.txt/tmp/test.txt”,将HDFS文件拷贝到本地“/tmp”目录下,并重命名为“test.txt”。
3.4HDFS的Shell操作Hadoop文件处理命令——查看查看保存在HDFS中的文本文件“helloworld.txt”的内容,可以使用命令“hadoopfs-cat/sanguo/shuguo/helloworld.txt”。
3.4HDFS的Shell操作Hadoop文件处理命令——追加appendToFile是将文本追加到HDFS文本文件后的命令,首先需要在本地目录下创建“aaa.txt”文本文件内容为“apache”,然后将该文本文件的内容追加到已经在HDFS文件“helloworld.txt”后面,使用命令“hadoopfs-appendToFile/tmp/aaa.txt/sanguo/shuguo/helloworld.txt”,完成功能。
3.4HDFS的Shell操作Hadoop文件处理命令——副本数HDFS是分布式存储系统,存储在HDFS的文件为了保证其数据不丢失,一般该文件会存在副本,且这些副本会存储在同一个DataNode或不同的DataNode或不同的机架,而setrep就是将存储在HDFS中文本的副本数量进行修改的命令,因此,可以使用命令“hadoopfs–setrep10/sanguo/shuguo/test.txt”,修改副本的保存数量。
3.4HDFS的Shell操作Hadoop文件处理命令——系统空间“hadoopfs-du<path>”命令的含义是:列出指定的文件系统空间总量(B),等价于unix下的针对目录命令“du-sb<path>/∗”和针对文件命令“du-b<path>”,输出格式如“name(fullpath)size(inbytes)”。下面使用命令“hadoopfs-du/”,列出HDFS中根目录下的占
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六一活动投壶活动方案
- 六一活动进社区活动方案
- 六一活动酒馆活动方案
- 六一灯饰活动方案
- 六一童话互动活动方案
- 六一美术绘画活动方案
- 六一西餐活动方案
- 六一餐饮品牌活动方案
- 六城同创活动方案
- 农民试题及答案
- 《旅游概论》考试复习题库(附答案)
- 2024年基金应知应会考试试题
- 康复进修汇报
- 2024年云南省中考物理试题含答案
- 2024年石家庄市市属国企业面向社会公开招聘403名管理人员及专业技术人员高频难、易错点500题模拟试题附带答案详解
- 医药代表聘用合同模板
- 2024-2030年中国公路工程行业市场发展分析及前景预判与投资研究报告
- 2.4圆周角(第1课时)(课件)九年级数学上册(苏科版)
- 杆塔组立施工安全检查表
- DL∕T 1392-2014 直流电源系统绝缘监测装置技术条件
- 2024年山东省高中学业水平合格考生物试卷试题(含答案详解)
评论
0/150
提交评论