(三)hadoop学习之HDFS简介

Hadoop - HDFS

简介

Hadoop Distributed File System,分布式文件系统

结构

block:

1.数据存储的基本单位,一般情况为64M

2.大文件会被拆分成块,存储于不同机器,如果文件大小低于block大小,那么block大小为实际文件大小

3.读写操作,每次读写一个block

3.block会被复制到多个机器上(Replication)

NameNode:

1.存储文件的元数据信息(metadata),比如命名空间信息,块信息等。当它运行的时候,这些信息是存在内存中的。。整个HDFS可以存储的文件数目取决于NameNode内存的大小

2.每个block在NameNode中对应一条记录,大小一般为150字节,如果有大量小文件,那么会消耗大量内存。同时MapReduce处理大量小文件会产生大量的map task,线程管理开销将会增加作业时间。所以建议存储大文件

3.定时持久化到磁盘上,但是不会保存block的位置信息,DataNode注册时上报和运行时维护

4.如果NameNode失效,整个HDFS都失效

Secondary NameNode:

听起来像是NameNode的备份,实则不然。

看图:

fsimage - 它是在NameNode启动时对整个文件系统的快照 
edit logs - 它是在NameNode启动后,对文件系统的改动序列 

如图,当NameNode启动时,会把改动序列edit logs 合并进fsimage中,从而得到一个最新的文件系统快照,但是实际上NameNode很少重启,那么一旦NameNode崩溃,所有改动都会丢失。这时候secondary NameNode作用体现了,你可以把它当做一个NameNode的监听器,会定时读取NameNode的edit logs 一旦有更新,他会更新fsImage(secondary NameNode自己的fsimage),一旦发现改动,他会把改动拷贝到NameNode中

DataNode:

  1. 保存具体的block数据

  2. 负责数据的读写操作和复制操作

  3. DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时报告修改信息

  4. DataNode之间会进行通信,复制数据块,保证数据的冗余性

猜你喜欢

转载自blog.csdn.net/zhang_zhongkang/article/details/82252136