大数据学习笔记-3-HDFS分布式文件系统
Posted 小神王
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据学习笔记-3-HDFS分布式文件系统相关的知识,希望对你有一定的参考价值。
在之前Hadoop介绍中提及过,基本上所有大数据平台的核心功能是两个方面:(1)大量数据的分布式存储 和 (2)大量数据的分布式处理。
HDFS就是用来解决第一个问题的。
小目录
1. HDFS简介和特点
2. HDFS中涉及的一些主要概念
1.HDFS简介和特点
(1)简介:
HDFS(Hadoop Distributed File System),即Hadoop分布式文件系统,是Hadoop平台的核心子项目,是分布式计算中数据存储和管理的基础系统模块。分布式文件存储系统是将文件存储在多个计算机节点上,这些计算机节点构成了计算机集群。
(2)特点:
a. HDFS可以兼容比较廉价的硬件设备,以前的数据平台基本上需要比较昂贵的服务器去支撑的,现在小型的普通PC机也能作为一个几点纳入到整个计算集群当中,极大减少了企业在硬件上的成本;
b. 可以实现流式读写。流式读写按照通俗理解(我本人只能理解通俗理解......)就是按照顺序来,按照预先设定好的顺序去写文件或读文件。流式读写可以减少磁盘寻址的开销,只需要寻址一次就可以一直访问,因此流式读写比较适合存储在硬盘上的HDFS文件。和流失读写相反的是随机访问,随机访问对数据的定位、查找和修改的延迟较小,传统关系型数据库比较符合随机访问;
c. 支持大数据集。HDFS可以将大数据集进行拆分放在不同的数据节点上,这也是为什么称为分布式存储的一个点;
d. 允许追加,不允许修改。分布式大数据量存储系统从设计之初就不太考虑文件修改的问题,一般只考虑增量追加存储,如果需要修改内容,那就直接追加一个新文件。
2. HDFS中涉及的一些主要概念
先看一下HDFS的大体架构:
我整理的三个比较重要的概念是:块 + 名称节点和数据节点两大核心组件 + HDFS的存储特点。
(1)块
HDFS默认一个块是64MB,也可以自己定义大小,如128MB,一个文件被分成多个块,以块作为单位进行存储。这样可以带来的好处是:
a. 可以支持大规模的数据存储,一个大文件可以被拆分为多个小的块,然后不同的块可以存储在不同的计算机节点上,所以一个大文件并不会受到单一节点的存储容量限制,拥有非常强大的扩展性;
b. 系统设计简单:块大小固定,可以方便地计算出一个节点能存多少东西;
c. 块很容易备份。
(2)HDFS两大组件
HDFS的两大组件是名称节点和数据节点。
名称节点
名称节点,Master Node, 负责文件元数据的存储,相当于数据目录,元数据是描述数据的数据,提供数据的属性,存储位置等信息。
名称节点在HDFS中可以提供的信息有:
a. 文件是什么
b. 文件被分为多少块
c. 每个块和文件之间的相互映射关系
d. 每个块被存在哪个服务器上
名称节点包含了两个比较核心的数据结构:FsImage和EditLog,前者主要负责保存文件树,这样可以知道整个文件系统目录是什么样子的,后者主要是记录对文件本身做过哪些增删改。由此出现一个问题是,当对一个文件的增删改行为越来越多,EditLog的体积会越来越大,如果名称节点正常运行时影响不大,但当名称节点重启的时候,名称节点需要先将FsImage里面的所有内容映像到内存中,然后再一条一条地执行EditLog中的记录,当EditLog文件非常大的时候,会导致名称节点启动操作非常慢。因此用第二名称节点来解决这个问题。第二名称节点也就是名称节点的冷备份,可以解决EditLog不断增大的问题。
数据节点
数据节点,Data Node,是存储具体的文件数据,它是存储在计算机的磁盘上的,会根据客户端或者有何名称节点的调度对数据进行存储和检索,定期向名称节点发送自己所存储的块的列表
(3)HDFS存储原理
数据冗余保存
冗余值默认为3,也就是一份文件备份3份。这样做的优点是:一是加快数据访问速度,如果有多个访问请求,可以直接将访问分别安排在不同的冗余副本上。二是容易检查错误,两两对照可以发现错误的数据块。三是数据比较可靠,抗风险能力强。
数据的存放和读取
存放:
第三副本放置在第一副本相同机架的不同数据节点上,第一副本优先放置在上传文件的节点上,如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点,第二副本放在与第一副本不同机架的数据节点上。
读取:
数据的读取采用就近原则,节省读取的资源开销。
HDFS提供一个API接口以确定数据节点所属机架ID,客户端读取数据时,从名称节点获得数据块不同副本的存放位置列表,这些列表中包含了副本所在的数据节点,通过API可以得到这些节点位于哪个机架,获得机架ID,当发现某个副本的机架ID和客户端的机架ID相同时,优先从相同机架ID的副本读取数据。如果没有发现相同的ID,随机选择一个副本进行读取。
数据错误与恢复
HDFS的两大核心组件名称节点和数据节点。
如果名称节点报错,因为存在第二名称节点,前文提到过它是名称节点的冷备份,因此可以从第二名称节点回复数据,但同时由于是冷备,需要整个HDFS从备份中修复完成后才能重新运行,中间会有时间上的损耗。
如果是数据节点报错,由于名称节点和数据节点定期会进行通信,如果名称节点接收不到数据节点的“心跳”状态报告时,数据节点会被标记为宕机。同时,名称节点发现某个数据块副本数量小于冗余因子(也就是上文提到的3个),那名称节点会启动数据冗余备份,生成新副本。由此可见,HDFS可以调整副本的位置,另一方面也说明HDFS可以调整整个集群的负载结构。
以上是关于大数据学习笔记-3-HDFS分布式文件系统的主要内容,如果未能解决你的问题,请参考以下文章