Hadoop学习笔记二

hadoop分布式文件系统

设计目的

  1. 是为了大文件(大到一台机器无法存储)所设计。
  2. 流式数据读取,一般会在批处理中使用HDFS。
  3. 节点故障是常态,能在机器故障后恢复。

Blocks

HDFS中最小的存储单位,默认最小为128M。小于128M并不会占用一个单独的block。

设计成这么大是为了减少寻址的时间,但是也不应该太大,
大的block从硬盘转换的时间也会相应变慢。一般map任务会工作在一个单独的block上,如果block很少,map任务也会很慢。

Namenodes and Datanodes

HDFS集群两种节点

  1. 一个 namenode(master):

    管理文件系统的命名空间,维护了所有文件和目录的文件系统的文件树与元数据。

    namenode知道一个文件的所有block在哪个datanode上,但并不会存储这些信息。

  2. 数个datanode(worker):

    datanode是文件系统的实际工作者,它们在工作的时候存储或取回block,给namenode报告自己存储了那些block。

如果没有namenode文件系统将不可用。实际上,如果namenode消失了文件系统中的所有文件都会丢失,因为这样会不知道如何由block重建为一个文件。

保证namenode的可用性

  1. 定期向硬盘上写入文件系统的元数据,一般是同步的,原子性的。

  2. 运行secondary namenode,持续从主拷贝文件系统的更改日志并合并(这将消耗大量的系统资源)。当主namenode不可用时,由于同步会有延迟,数据可能会丢失,此时secondary成为主。

Block Caching

通常bkock会从硬盘中读取,但是重复使用的block会缓存在内存中。默认情况下一个block只会缓存在一个namenode中,但是这个是可以控制的。

坚持原创技术分享,您的支持将鼓励我继续创作!