当前位置:   article > 正文

hadoop学习笔记(二)HDFS文件系统_hadoop fs -getmerge

hadoop fs -getmerge

文件系统

在计算机中有内存和外存,内存断电之后,数据就会流失,容量有非常有限,所以一般都配备磁盘这种外存,将数据存储到外存中,需要的时候在调入内存进行运算,外存也是一块磁盘,直接使用很不方便,所以在这之上覆盖了一层管理文件的系统就是文件系统,专门管理文件的存取,提高了操作系统的资源利用率。

文件系统就是管理文件的,也就是软件,所以说,文件就是具有文件名和相关元素或者记录的集合。类似于传统关系数据库中的由多个数据项或字段组成的一条一条记录。例如,{id,name,number,age}等等。这就是记录式文件。比如关系型数据库的表等等。

还有一种文件是流式文件,也就是,也就是没有结构的,无结构文件也可以看作是字符流,比如源程序,可执行程序,文本文件等都是杂乱无章的。

总的来说,文件系统只是管理文件,真正的文件存储在磁盘上。


文件系统的层次结构(由上至下):

  1. 文件系统接口
  2. 对象操纵和对象管理的软件集合
  3. 对象及其属性

最底层的对象及属性就是指:文件,目录(其实也是文件,用文件作为数据元素,其中包含了一条一条的数据项(文件名,物理地址,文件类型等等)),磁盘存储空间。

对象操纵和对象管理的软件集合:与最下面的硬件进行I/O的驱动程序,读写功能等等,也就是对所有的文件进行操作和管理功能。操作系统的内核中包含了文件系统控制。

文件系统接口:文件系统就是一款软件,作为用户如何调用文件系统中的相关内容,有一。套接口,比如:命令接口(Linux中的shell),程序接口(提供一套已经实现的函数方便别人去调用)。

HDFS文件系统

大数据的两一般都是TB级别以上的,一般一台计算机的存储空间无法满足存储需求,除非疯狂的加磁盘和cpu,这样的话成本,计算机的计算资源等等就不好分配,所以就有分布式这样的概念,通过计算机网络使多台计算机连接起来,实现让文件在多台计算机上分布式存储和计算,利用廉价的机器也能完成大量数据的存储和计算功能。

HDFS就是一个基于GFS的思想开发的分布式文件系统,是一种通过计算机网络实现文件多台计算机进行分布式存储的文件系统,采用了C/S架构,通过Client使用特定的网络协议对Server上的文件系统进行访问。在安装hadoop的时候配置SSH免密码登录,通过SSH协议来实现主结点登陆到各个从结点,这就是通过计算机网络连接的一个应用,其主要原因是hadoop没有设置密码登陆,所以也就必须配置来实现免密码登陆。


HDSF整体结构如下:
普通文件系统就是单个计算机结点来完成数据的存储和读取,而HDFS是由多台计算机来完成文件的读取和存储,通过计算机网络将这些结点连接起来。
在这里插入图片描述


传统的文件系统也是用Block(块)作为文件系统读写操作的最小单位,划分磁盘空间,称为磁盘块,普通文件系统读写都是按照一定的大小读取硬盘上的数据 ,通常为4096bit == 512byte,不管文件多大多小都是按照512byte的倍数读写文件。
在这里插入图片描述
HDFS分布式文件系统也是按Block把文件放在硬盘上面,只不过Block的大小是64MB,比普通文件系统大,而且分块是存储在不同文件系统上,并且为了防止数据丢失,会复制副本来确保数据的完整性,而且把文件分块写入,是写入到不同的DataNode上面。

所以说HDFS是建立在本地文件系统之上,是对本地文件系统再次抽象并同时引入了如何管理和连接结点的方法,将多台机器上的本地文件系统看成了一个逻辑整体。


启动hadoop之后,jps是java提供的一个显示当前所有java进程pid的命令,适合在linux/unix平台上简单察看当前java进程的一些简单情况。
在这里插入图片描述
hdfs是运行在jvm上面的,由NmaeNode,DataNode,还有SecondaryNameNode这些进程或者这些软件组成的,平时说的NameNode,DataNode说的都是对应的机器上运行NmaeNode和DataNode进程的机器,而不是给机器起名称。

一般所谓的伪分布式就是一台机器即运行了NameNode,又运行了DataNode的机器。

NameNode的作用就是就是管理命名空间,所谓的命名空间就是在这空间中的文件,块,目录等等,然后对两个重要的数据结构进行管理。

一个是FsImage:维护元数据,在这里,元数据是指文件分成的块和DataNode的映射关系。而且名称结点并不是永久保存这些元数据信息,而是每次启动重新扫描所有的DataNode来完成构造这些信息。

一个是EditLog用来存储所有文件的操作的日志。


DataNode就是真正读写文件的工作结点,会根据客户端或者NameNode来调度DataNode进行读写操作,检索操作等等数据结点的数据都是通过本地文件系统保存到磁盘上的。


所以安装hadoop的时候,配置文件有两个比较重要,就是core-site.xml和hdfs-site.xml,分别代表了配置hadoop 的核心设置和hdfs相关设置的配置信息。

在这里插入图片描述

  • fs.defaultFS就必须指明NameNode所在的具体位置,通过NameNode才能知道那些文件块在那里
  • 还有就必须设定hadoop.tmp.dir在本地的位置,默认的tmp是在/tmp,但是linux默认的/tmp中的数据在断电之后自动删除,这个tmp里面存放的是各种依赖,比如整个域名文件等等,EditLog和FsImage,比如各个进程ID等等,存放着各个结点的相关信息。断电后

以下就是断电后的部分信息。断电之后信息被删除,意味着以前的那些保存的依赖信息就没有了,重新启动之后虽然能找回一部分,但是有的却赵不回来了,比如无法找回域名文件等等,在说,关于hdfs的很多依赖都是保存到hadoop.tmp.dir所指的位置,名部分可以找回来,但是有的找不回来了,意味着要重新搭建。。。
在这里插入图片描述
在这里插入图片描述


hdfs相关设置的配置信息hdfs-site.xml。
在这里插入图片描述

  • dfs.replication就是Block的副本个数,因为是伪分布式,所以副本个数就是1
  • dfs.namenode.name.dir就是相关的namenode依赖路径,和core-site.xml相呼应
  • dfs.datanode.data.dir就是相关的datanode依赖路径,和core-site.xml相呼应

还有一个进程SecondaryNameNode,其运行过程如下:

在这里插入图片描述

在这里插入图片描述

NameNode进程运行期间,会把FsImage结构加载道内存进行操作,不断执行EditLog的文件的记录,这样不会产生什么影响,但是一旦重新启动NameNode,就会造成不断执行较大的包含了很多操作过程记录的EditLog文件,随着时间的增大,EditLog读取就非常大,就会导致整个读取过程很慢,就无法进行其它的操作了。

过程:

  1. FsImage和EditLog开始合并之后,每隔一段时间SecondaryNameNode就会和NameNode进行通信,停止合并(此时为t1)
  2. 然后把当前时刻的FsImage和EditLog拉到本地运行,就不再jvm上面运行了,这时NameNode上面就会创建新的EditLog.new,暂时把操作记录放在新的日志文件中
  3. 与此同时,新操作写入新的日志文件EditLog.new中,t1时刻的FsImage和EditLog在本地下开始合并,合并好了就将新的FsImage通过SecondaryNameNode发送到NameNode下,替换旧FsImage,然后用这期间新的日志文件EditLog.new替换旧的EditLog,此时为t2,这时就减少了EditLog的大小,应为这期间写入的记录远远比从头到尾写入的记录少

总结:在t1-t2不出错的情况下,就算再次启动FsImage加载到内存中,读取EditLog的速度也会快很多。

弊端: 这个过程对EditLog减少大小很有用,但不能真正起到备份的作用,真正备份的是t1时刻的元数据的数据结构FsImage,若t1-t2
之间发生错误,就会导致EditLog不完整,也就会导致t2时刻内容的不完整,也就会丢失部分元数据。


Rack是一个机架,上面放着许许多多的服务器,类似于:
在这里插入图片描述
Rack上面的每一台机器可以被称为DataNode,也就是专门用来存储数据和读写数据。NameNode是名称结点,在整个HDFS中只有一个,它的作用就是管理DtataNode和文件块的映射关系。

HDFS客户端,一般来说,逻辑结构上,客户端是不属于在HDFS中,客户端是操作HDFS的软件,但是,物理结构上,shell接口和API可以在NameNode或者DataNode上的机器使用,web界面在NameNode所对应的端口使用。

  • HDFS就提供了一套API可以使用JAVA进行对HDFS的访问
    在这里插入图片描述
  • 提供了shell语句
  • 在这里插入图片描述
  • 提供了web界面来进行对HDFS的访问和控制。
    在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/581561
推荐阅读
相关标签
  

闽ICP备14008679号