H :hadoop D: Distributed 分布式 F:File 文件 S:System系统
hadoop分布式文件系统
传统扩容的方式:1.纵向扩容:增加磁盘和内存
2.横向扩容:增加服务器数量
主要目的: 解决海量数据存储问题,和上传下载效率
实现方式: 将大文件分成多个数据块以并行(同时)方式存储到不同的服务器中,每个服务器存储两个数据块进行备份,这样每个服务器存储的文件要小很多,再增加一台服务器,专门记录,文件被切割后的数据块信息及数据块的存储位置信息
(这里借用一个图演示一下实现方式,DataNode存储数据块,NameNode存储信息和管理,处理客户端读写请求)
1.NameNode(名称节点,master主服务器)
2.DataNode(数据节点,slave从服务器)
3.Secondary NameNode(辅助NameNode,定期合并Fsimage和Edits,并推送给NameNode)
心跳检测机制:DataNode周期性向NameNode发送心跳信号,如果发现DataNode宕机或者副本丢失,HDFS会从其他DataNode上面的副本自动恢复
缺点之二 :1…不支持并发写入:文件只能有一个写,不允许多个线程同时写
2.不支持文件随机修改,仅支持数据append(追加)
架构:NameNode、DataNode、Secondary NameNode、Cilent
寻址时间(文件被切分成数据块,读取文件需要找到被切分的数据块的时间):平均10ms
合适的读取(传输)时间:与寻址时间保持在1:100的比例,即寻址时间为传输时间的1%
可计算为10ms/0.01=1000ms=1s
数据块的默认大小:128M(Hadoop2.x)
如果块设置太小,会增加寻址时间,程序一直在找开始的位置
太大 ,传输时间明显大于寻址时间,导致程序处理数据块时非常慢,会使MapReduce处理数据不方便
大小设置主要取决于磁盘传输速率