一、概念
1.分布式文件系统把文件分布存储到多个计算机节点上,通过网络实现、文件在多台主机上进行分布式存储的文件系统。(就是你的电脑存a,我的电脑存pple)
2.降低了硬件开销:
与之前使用多个处理器和专用高级硬件的并行化处理装置相比,目前的分布式文件系统所采用的计算机集群,都是由普通硬件构成的。
3.设计目标:透明性、并发控制、可伸缩性、容错及安全需求 等 。
4.数据磁盘读写的最小单位是块。
(1)一个文件被分成多个块,以块作为存储单位。
(2)块的大小远远大于普通文件系统,可以最小化寻址开销。
5.采用块的好处
(1)支持大规模文件存储
(2)简化系统设计
(3)适合数据备份
二、名称节点
1.“主节点”(Master Node)或者也被称为“名称结点”(NameNode)
(1)存储元数据
(2)元数据保存在内存中
(3)保存文件,块,数据节点 之间的映射关系
(4)在内存中保存着名称空间和文件数据块的地址映射,管理文件系统的命名空间,维护文件系统树及树内所有的文件和目录(通过fsimage)。
2.名称节点和数据节点的关系:
(1)记录每个文件中各个块所在的数据节点信息(即保存在数据节点的位置),但并不永久保存,这些信息会在系统启动时根据数据节点信息重建。
(2)整个HDFS可存储的文件数受限于NameNode的内存大小。
(3)数据流不经过NameNode, 会询问NameNode与哪个DataNode联系。
3.Fslmage、EditLog
(1)每个文件和每个数据块的引用关系数据会定期保存到本地磁盘,信息以两个文件形式永久保存在本地磁盘:FsImage镜像文件,EditLog日志文件。
(2)FsImage文件用于维护文件系统树和元数据,EditLog用于记录关于文件的操作。
(3)在Namenode 启动的时候,它会将FsImage文件中的内容加载到内存中,之后再执行EditLog文件中的各项操作,使得内存中的元数据和实际的同步。一旦在内存中成功建立文件系统元数据的映射,则创建一个新的FsImage文件和一个空的EditLog文件。
4.什么是命名空间?
主要包括以下几个方面的功能:
(1)文件系统的命名管理
(2)元数据存储:
(3)命名空间操作的控制与管理:
(4)数据块的管理:
三、第二名称节点
1.用来EditLog 不断变大的问题
(1)用EditLog的操作更新FsImage里面的记录,然后格式化EditLog
(2)作为NameNode的检查点,周期性的备份名称节点的元数据信息。
四、数据节点
1.“从节点”(Slave Node)或者也被称为“数据节点”(DataNode)
(1)存储文件内容
(2)文件内容保存在磁盘
(3)维护了 块id到 数据节点本地文件 的映射关系
(4)向名称节点定期发送自己所存储的块的列表
2.结构:
3.副本存放策略:
(1)第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点 .
(2)第二个副本:放置在与第一个副本不同的机架的节点上 。
(3)第三个副本:与第一个副本相同机架的其他节点上 。
(4)更多副本:随机节点。(不过默认冗余复制因子是3,也就是默认保存3个副本)
(5)HDFS 和其它分布式文件系统的最大区别就是可以调整冗余数据的位置。
4.HDFS在不发生故障的情况下读、写文件的过程:
写文件过程
(1)客户端向名称节点发起写文件请求。
(2)名称节点检查请求路径是否存在,并验证客户端的写权限。然后为文件分配数据块ID和副本位置。
(3)客户端从名称节点获取数据块的元数据,包括每个数据块的副本位置。然后,客户端将第一个数据块的数据流传送到第一个数据节点。
(4) 第一个数据节点接收到数据后,立即将其写入本地存储,同时将数据传输到下一个数据节点,形成数据传输流水线,然后其他数据节点重复这俩操作。
(5)当全部都写成功后,最后一个数据节点会通知前一个数据节点直到第一个数据节点,再由第一个数据节点通知客户端写入成功。
读文件过程
(1)客户端向名称节点发起读文件请求。
(2)名称节点根据请求路径,查找文件的元数据并返回数据块的位置(数据节点列表)给客户端。
(3)客户端根据表选择一个最近或最优的数据节点,直接从该数据节点请求数据块。
(4)数据节点将数据块的内容传输给客户端。客户端依次读取每个数据块,直到整个文件读取完毕。
(5)客户端读取完所有数据块后,关闭连接,完成读文件操作。
五、数据错误与恢复(重点)
1.名称节点出错
HDFS 设置了备份机制,故障时用第二名称节点当名称节点使用,但是我们的习题告诉我们这样说是不对的,估计是因为这样做仍然会丢失部分数据,所以判定为不对吧。
2.数据节点出错
(1)每个数据节点会定期向名称节点发送“心跳”信息,向名称节点报告自己的状态
(2)当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来自一些数据节点的心跳信息,这时,这些数据节点就会被标记为“宕机”,节点上面的所有数据都会被标记为“不可读”,名称节点不会再给它们发送任何I/O请求。(即如果不发了就是认为死机了,就不用它了)
3.数据出错
(1)有校验机制,如果校验失败,就报告这个数据块出错了。
(2)当客户端读取文件的时候,会先读取该信息文件,然后,利用该信息文件对每个读取的数据块进行校验,如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并且向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个块。
六、HDFS常用命令(重点)
1.hadoop fs -ls <path>:显示路径指定文件的详细信息(不是内容)
2.hadoop fs -cat<path>:将该路径文件输出(就是运行)
3.hadoop fs -chown:改变路径文件的对应权限。
4.hadoop fs -touchz <path>:在该路径创建一个空文件
5.hadoop fs -mkdir <paths>:创建一个文件夹
6.hadoop fs -put <localsrc> <dst>:从本地通过hdfs上传到dst(就是上传到其他电脑那了)
7.hadoop fs -mv <src> <dest>:将文件从路径下移动到<dst>
8.hadoop fs -rm <path>:删除指定文件
9.hadoop fs -rm -r <path>:删除指定文件夹下所有文件还有文件夹自己
七、习题
单选题
1.HDFS核心的概念是()
A. 单元
B. 节点
C. 块
D. 文件
正确答案:C
记住,记住,记住
2.下面哪个程序负责 HDFS 数据文件存储。( )
A. NameNode
B. Jobtracker
C. DataNode
D. secondaryNameNode
正确答案:C
3.HDFS和其它分布式文件系统的最大区别就是 ( )
A. 可以调整冗余数据的位置
B. HDFS在部署时都提供了客户端
C. HDFS是一个部署在集群上的分布式文件系统
D. HDFS集群中只有一个命名空间
正确答案:A
4.名称结点在分布式文件系统中又叫做( )
A. 数据节点
B. 从节点
C. 集群节点
D. 主节点
正确答案:D
5.如何解决名称节点运行期间EditLog不断变大导致的名称节点启动缓慢的问题?( )
A. 第二名称节点
B. FsImage
C. 数据节点协议
D. RPC(Remote Procedure Call)
正确答案:A
6.Hadoop平台中,创建一个或多个指定文件夹的命令是()。
A. hadoop fs -ls
B. hadoop fs -chown
C. hadoop fs -mkdir
D. hadoop fs -copyFromLocal
正确答案:C
7.Hadoop平台中,显示指定文件夹详细信息的命令是()
A. hadoop fs -ls
B. hadoop fs -chown
C. hadoop fs -mkdir
D. hadoop fs -copyFromLocal
正确答案:A
8.当客户端读取数据时,从名称节点获得数据块不同副本的存放位置列表,列表中包含了副本所在的数据节点,客户端通过什么判断读取那个副本?()
A. 块编号
B. 地理位置
C. 机架ID
D. 名称节点指定
正确答案:C
注意结构图,很多数据节点位于一个机架上,试想有100个数据节点,这样节点编号就是100个,但是如果有机架,那就是一个机架上放50个节点编号。
9.名称节点命名空间不足的问题通过下列哪种技术可以解决?()
A. HDFS Federation (联邦)
B. HDFS HA
C. SecondaryNameNode
正确答案:A
在后面的第8章会讲
10.副本复制的方式是()
A. 客户端同时在多个数据节点上执行写操作
B. 数据节点之间流水线复制
C. 名称节点将数据分别发送到多个数据节点
D. 客户端直接将数据发送给名称节点
正确答案:B
客户端将数据块写入一个数据节点,然后该数据节点会将数据块传递给下一个数据节点,以此类推,形成一个数据流水线。这种方式可以有效地减少网络传输的开销,提高数据复制的效率。
多选题
11.下列各项中,属于名称节点的功能的有()
A. 管理分布式文件系统系统的命名空间
B. 记录分布式文件系统中的每个文件中各个块所在的数据节点的位置信息
C. 管理数据块(Block)映射信息
D. 在运行过程中合并FSImage和Editlog的内容
正确答案:A,B,C
12.下列各项中,属于DataNode的功能的是()
A. 存储实际的数据块
B. 执行数据块的读/写操作
C. 周期性向NameNode汇报心跳信息和数据块信息
D. 自动配置副本策略
正确答案:A,B,C
13.下列各项中,属于SecondaryNameNode的功能的有()
A. 辅助恢复NameNode
B. NameNode出现故障的时候直接接管系统
C. 解决单点故障
D. 定期合并fsimage和edits,并推送给NameNode
正确答案:A,D
HDFS通过HA(高可用性)机制来解决单点故障问题。第8章内容。
14.下列属于正确的副本存放策略的是()
A. 第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点
B. 第二个副本:放置在与第一个副本不同的机架的节点上
C. 第三个副本:与第一个副本相同机架的其他节点上
D. 更多副本:随机节点
正确答案:A,B,C,D
15.下列对于HDFS错误与恢复的机制中,描述正确的有()
A. 名称节点出错时,就可以根据备份服务器SecondaryNameNode中的FsImage和Editlog数据进行恢复。
B. 当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来自一些数据节点的心跳信息,这时,这些数据节点就会被标记为“宕机”,节点上面的所有数据都会被标记为“不可读”,名称节点不会再给它们发送任何I/O请求。
C. 由于一些数据节点的不可用,会导致一些数据块的副本数量小于冗余因子;名称节点会定期检查这种情况,一旦发现某个数据块的副本数量小于冗余因子,就会启动数据冗余复制,为它生成新的副本。
D. 当客户端读取文件的时候,会先读取该信息文件,然后,利用该信息文件对每个读取的数据块进行校验,如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并且向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个块。
正确答案:A,B,C,D
大题
1.请分别对下面的命令进行解释:
答:
- hdfs dfs -cp /a /b解释:将路径
/a
处的文件或目录复制到路径/b
。- hdfs dfs -copyToLocal /tmp/test_hdfs.zip /usr解释:将路径
/tmp/test_hdfs.zip
的文件复制到本地文件系统的/usr
目录下。- hdfs dfs -cat /tmp/a.txt解释:将路径
/tmp/a.txt
的文件内容输出。- hdfs dfs -rm -r /tmp解释:递归删除HDFS文件系统中路径
/tmp
下的所有文件和目录。
版权归原作者 lsy永烨 所有, 如有侵权,请联系我们删除。