Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说大数据高级开发笔记——第二节课 HDFS文件系统「建议收藏」,希望能够帮助你!!!。
大数据开发小白入门群:QQ:699479439
上一节我们简单介绍了hadoop主要由三大块组成:分布式文件系统(HDFS)、分布式计算框架(MapReduce)、分布式调度器(yarn)组成,从这节课开始,我们逐一的详细介绍这些技术。本节课,就详细了解一下分布式文件系统--HDFS。
文件系统: 文件系统(file system)是命名文件及放置文件的逻辑存储和恢复的系统,我的理解就是管理文件命名及存放的一种软件系统。
常见的格式有:windows下:FAT\FAT32\NTFS Linux下:Ext2 Ext3 Mac OS 下:HFS
分布式系统: 分布式文件系统(Distributed File System,DFS)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(节点可简单的理解为一台计算机)相连;
常见的有: GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。
文件系统是一个很庞大的概念,这里只是很简单的一个介绍。
HDFS是大数据系统的基础,它提供了基本的存储功能, HDFS的思想很简单,就是namenode负责数据存储位置的记录,datanode负责数据的存储。使用者client会先访问namenode询问数据存在哪,然后去datanode存储;写流程也基本类似,会先在namenode上询问写到哪,然后把数据存储到对应的datanode上。所以namenode作为整个系统的灵魂,一旦它挂掉了,整个系统也就无法使用了。
1、 这里有几个概念:
namenode:主节点,主要负责HDFS集群的管理以及元数据信息管理
datanode:从节点,主要负责存储用户数据
secondaryNameNode:辅助namenode管理元数据信息,以及元数据信息的冷备份
注:怎么去理解元数据,最简单的一个比喻,我们在windows系统中,在一个文件上鼠标右键选择属性所显示的内容就是元数据,简单说就是描述文件名称、位置、大小等信息的数据。HDFS系统正是通过namenode来保存文件在哪里,有多大,权限等等属性的。
2、HDFS的存储空间
通过上图,我们可以看出,HDFS的总存储容量,是集群中所有的磁盘相加的和,比如上图中,HDFS对上层应用系统提供了共60T的空间,上层应用不需要知道自己保存的文件具体在那一台服务器上。
在Hadoop中,一个文件被划分成大小固定的多个文件块,分布的存储在集群中的节点中。我们将这个划分的块称之为:block,block块的大小可以通过hdfs-site.xml当中的配置文件进行指定。在hadoop1当中,文件的block块默认是64M,hadoop2、3默认是128M。
通过上图,我们可以看出几个概念:
1、blocak划分:一个300M的文件,按128M的划分,被分成了三块,分别是blk1、blk2、blk3,
2、副本:我们可以看出第一个block块,都有三个副本,分别存在同一集群的不同的机器上,(注意:副本数可以根据配置文件设置)
注: 如果有一个文件大小为1KB,也是要占用一个block块,但是实际占用磁盘空间还是1KB大小。所以,HDFS不适合存储小文件的场景,比如:我们应用系统中的一些附件上传,通常文件都不会太大(小于64M),所以,就不适用使用HDFS来存储。
提一个问题:为什么我们不能通过修改配置文件,来让HDFS适用于存储小文件。(提示:和namenode有关,namenode的数据量会非常大)。
先盗一张图来看看,网上基本上都用这张图来说事:
HDFS集群包括,NameNode和DataNode以及Secondary Namenode。