date: 2016-10-21 15:34
tags:HADOOP
** hdfs的由来:由于数据越来越多,单个操作系统/服务器的磁盘存放不下,于是,需要将这些数据存放在其他的操作系统或者服务器上,但是这样就会出现维护、管理不方便,需要一个分布式文件系统来管理,给用户一个单机操作的便捷性。
** hdfs:一种分布式文件系统 ,文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。源自谷歌三篇论文中的GFS分布式文件系统。
特点:通透性(由程序与用户看来,就像是访问本地的磁盘一般。),容错性(冗余副本策略)
** 概括要点:**
1. 源自GFS
2. 分布式文件系统
3. 块存储,可以并发式读取
4. Namenode+datanode+secondaryNamenode
5. 文件数据一次追加,多次读写,不可修改
6. Master/slaves结构。(Master_Namenode\ slaves_datanode)
** Namenode:(名字节点,元数据节点)**
*** 相关文件:**
Fsimage:元数据镜像文件,存储某一时段NameNode 内存元数据
Edits:操作日志文件
Fstime:保存上一次checkpoint的时间
以上的文件均在Linux文件系统中
** 职责:*
1.分配并记录文件的块信息和块的位置信息,这些信息即为元数据。
2.将元数据的信息放入到fsimage中,每次保存fsimage之后到下一次保持之间的所有hdfs操作,记录在edits中。
3.被动接收datanode的heartbeat信息,记录datanode的block信息
4.将命令通过心跳包返回给datanode去。
** Datanode:(数据节点)**
多副本(默认是3分,在hdfs-site.xml 文件中设置),保证数据安全性。
文件块存储:最基本的存储单位
** 职责:**
1.数据的处理(读写复删)
2.将块的实时定时通过心跳传递个Namenode,并等待Namenode的指令
** Namenode 与SecondaryNamenode的关系**
①secondary namenode通知namenode切换edits文件
②secondary namenode从namenode获得fsimage和edits(通过http)
③secondary namenode将fsimage载入内存,然后开始合并 edits
④secondary namenode将新的fsimage发回给namenode
⑤namenode用新的fsimage替换旧的fsimage
** 什么时候checkpiont**
- fs.checkpoint.period 指定两次checkpoint的最大时间间隔,默认3600秒。
- fs.checkpoint.size 规定edits文件的最大值,一旦超过这个值则* 强制checkpoint,不管是否到达最大时间间隔。默认大小是64M。