1.Namenode
(1)是整个文件系统的管理节点
(2)它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。
(3)接收用户的操作请求
(4)目录管理者
元数据信息:举例见下图
文件块(block):最基本的存储单位。对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。HDFS默认Block大小是128MB
2.与Namenode相关的三个文件
(1) fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息
(2)edits:操作日志文件。
(3)fstime:保存最近一次checkpoint的时间
以上这些文件是保存在linux的文件系统中。
Hadoop会维护一个fsimage文件,也就是namenode中metedata的镜像(存在磁盘上),但是fsimage不会随时与namenode内存中的metedata保持一致(2.0是一致的),而是每隔一段时间通过合并edits文件来更新内容。Secondary namenode就是用来合并fsimage和edits文件来更新NameNode的metedata的。
3.三个文件的图解
4.HDFS优缺点
优点:存储超大数据;流式访问(数据分发到不同块上);运行在廉价的商用机群
缺点:不适合低延时访问;不能有效存储大量小文件(元数据条数会太多,占用内存大)
5.关于副本
HDFS的存放策略是将一个副本存放在本地机架的节点上,另一个副本放在同一机架的另一个节点上,第三个副本放在不同机架的节点上。
6.JavaAPI
主要是FileSystem这个类
7.HDFS读写数据流