HDFS原理
HDFS全称Hadoop Distributed File System,是hadoop中的一个分布式文件系统,与传统的文件系统不同,HDFS主针对的是大数据情景下的文件存储。
1 区别:
普通文件系统:数据块/磁盘块*n = 文件系统块的大小
(512KB) (若n<1,则n=1)
HDFS:block(64MB)独立的存储单元,文件可以大于磁盘大小,也可以存在不同的磁盘上。定位较快。
2 优劣
1、高容错性 2、适合批处理 3、适合大数据处理 4、流式文件访问 5、可构建在廉价机器上
1、低延时数据访问 2、小文件存储 3、并发写入、文件随机修改
3 框架
client:文件切分->block;与NN交互;与DN交互;
NameNode:master,在内存中。管理block,处理client请求
DataNode:slave,在磁盘中。存储实际数据块,读写。
SecondaryNameNode:冷备份。分担NN工作量,合并fsiamge和fsedits,恢复NN
4 读取和写入
5 容错处理
1、NameNode Federation
不同的NameNode管理不同的目录,共用DN,这样一部分NN挂掉以后不影响其他部分
2、NNHA
NameNode是唯一一个对文件元数据和file-block映射负责的地方, 当它挂了之后,包括MapReduce在内的作业都无法进行读写。当NameNode故障时,常规的做法是使用元数据备份重新启动一个NameNode。采用HA的HDFS集群配置两个NameNode,分别处于Active和Standby状态。当Active NameNode故障之后,Standby接过责任继续提供服务,用户没有明显的中断感觉。一般耗时在几十秒到数分钟。
1、基于NFS方案:Active NN与Standby NN通过NFS实现共享数据,但如果Active NN与NFS之间或Standby NN与NFS之间,其中一处有网络故障的话,那就会造成数据同步问题。
2、基于QJM方案:
ActiveNameNode会把日志文件写入JournalNode,StandbyNameNode从JN中读取日志文件和fsimage合并。而DN需要向主从节点都进行汇报。用zookeeper决定主从关系。