数据存储系统,数据存储的可靠性至关重要。HDFS是如何保证其可靠性呢?它主要采用如下机理。
1)冗余副本策略
即所有数据都有副本,副本的数目可以在hdfs-site.xml中设置相应的复制因子,或者put操作时-D dfs.block.size=2123123
,这样的形式指定块的大小。
2)副本放置策略
即HDFS的“机架感知”,一般在本机架存放一个副本,在其它机架再存放别的副本,这样可以防止机架失效时丢失数据,也可以提供带宽利用率。
3)心跳机制
即Namenode周期性从Datanode接受心跳信号和快报告,没有按时发送心跳的Datanode会被标记为宕机,不会再给任何I/O请求,若是Datanode失效造成副本数量下降,并且低于预先设置的阈值,Namenode会检测出这些数据块,并在合适的时机进行重新复制。
4)安全模式
Namenode启动时会先经过一个“安全模式”阶段。
5)校验和
客户端获取数据通过检查校验和,发现数据块是否损坏,从而确定是否要读取副本。
6)回收站
删除文件,会先到回收站/trash,其里面文件可以快速回复。
7)元数据保护
映像文件和事务日志是Namenode的核心数据,可以配置为拥有多个副本。
8)快照
支持存储某个时间点的映像,需要时可以使数据重返这个时间点的状态。
网友评论