HDFS能解决的问题
1.可以存储几百万个大型文件,每个文件可以超过几十G,文件系统的容量可以达数十PB
2.利用横向扩展模式,使用基于磁盘簇而非磁盘整列的普通商用服务器实现大规模数据存储,同时在应用层完成数据的复制以实现存储的可用性和高吞吐量。
3.优化是针对大型文件的流式读写处理,而非满足小文件的低延时访问。批量的处理能力比互动响应的实时性更加重要
4.能容忍机器某些部件故障和磁盘失效
5.支持M/P处理锁需要的功能和规模要求
文件系统设计
1.传统文件系统是分为内核模块和用户空间工具,HDFS是一种用户空间文件系统。一种运行在操作系统之外的文件系统。
2.HDFS是一种分布式文件系统。各个主机只存储文件系统的一个子集
3.HDFS的基本数据块大小是64M,不是一般文件系统的4KB或是8KB。具体数值可以设置为更大的128M,256M,这样才便于连续读写。
4.通过对文件的多个副本存储到集群的多台机器上,从而实现数据的保护,系统会监控文件副本的个数,若是不满足复制因子个数时候,就会自动穿件副本
守护进程
主要是三个:DataNode、NameNode、次NameNode
DataNode:数据的存储和获取
NameNode:掌控DataNode是否正常工作、那些数据块是否可用的节点。所有的元数据在RAM中,大概1G的RAM可以管理100万个数据块。
文件存储:存储文件大致上分为两个,fsimage和edits。fsimage上是全量的数据,edits上是增量的数据,edits上的增量数据怎么合并到fsimage中呢?就是通过次namenode来处理
高可用性:HA来实现
次NameNode:主要是对于NameNode上元数据的合并处理。
文件合并的过程
1.次NN引导NN滚动更新edits文件,并将新的内容写入edits.new
2.次NN复制NN的fsimage和edits文件,回放edits文件,将其合并到fsimage中
3.次NN将新的fsimage发送给NN,NN接受新的fsimage文件
4.将edits.new命名为edits
读取文件过程
1.从NN读取文件的具体位置信息
2.从DN读取具体的数据。在读取过程中若是出错的话,会尝试从副本进行读取。若是失败的话 会超时或出异常。
写数据过程
1.现在NN写入文件的存储路径
2.在DN中写数据,重复的进行副本写入
3.建立DN中位置信息同NN中的关联。
数据的操作方式
1.命令行: hadoop fs
2.REST的方式支持,目前有WEBHDFS REST 和HttpFS
0 条评论。