跳转至

Chapter2 Hadoop文件系统

1.试举例说明HDFS在实际应用中的作用

  1. 存储TB级别的大文件
  2. 保证文件系统的容错
  3. 实现大文件的并发读写控制

2.HDFS主要部件有哪些?各个部件都有什么作用

  • NameNode: 负责HDFS的管理工作,包括管理文件目录结构、位置等元数据、维护DataNode的状态等,NameNode并不实际存储文件
  • Secondary NameNode: 充当NameNode的备份,NameNode故障时利用Secondary NameNode进行恢复
  • DataNode: 负责存储文件,根据NameNode的控制信息存储和管理对应的文件块,并定期向NameNode汇报自己的状态(通过TCP协议发送心跳信息)

3.HDFS的文件分块是什么?和操作系统的文件系统中块的概念有何联系与区别

HDFS将大文件分切割为数据块,通常每个数据块的大小为128MB(或其它大小)。每个数据块在本地系统中是以单独的文件进行存储的,HDFS采用分而治之的策略让多个节点对逻辑层面的大文件在物理层面进行分布式存储,使用跨机器索引的方式访问。

HDFS的文件分块和操作系统的文件系统的文件块概念有很大区别,操作系统是将“块”作为一个单位,把文件切分为逻辑块(基于逻辑地址空间),保存在物理块(被划分的磁盘空间)中。他们之间的相似点是二者都可以通过索引访问。

4.简述客户端从HDFS读出某一文件时,HDFS是如何工作的?

  1. 客户端和NameNode通信,请求读取一个文件
  2. NameNode判断路径等信息是否合法,如果合法,返回这个文件所有数据块的存放地址
  3. 对于第一个数据块,客户端从最近的存放该数据块的DataNode读取数据
  4. 当读取完第一个数据块后,客户端从最近的存放第二个数据块的DataNode读取数据
  5. 以此类推,直到读取完所有数据块

5.HDFS为什么要采用“一次写入,多次读取”的方式

为了避免读写冲突。

6.为什么HDFS读写文件块都是一个接一个的阻塞方式,能否并行读写文件块?

  1. 不能并行写文件块:原因是向HDFS写入文件时,客户端每次写入文件块都需要询问NameNode该文件块存放的位置,并非是NameNode一次性告知所有应该放置文件块的位置。文件块在写入过程中,HDFS中节点的存活状态、负载均衡等情况在文件块写入的过程中会发生变化。
  2. 可以并行读文件块
  3. 读读可以并行,读写和写写不能并行