优点:
高可靠
缺点:
不适合低延迟数据访问
不适合大量小文件存储
不适合并发写入,文件随机修改
HDFS分为三个节点
NameNode:
存储元数据(文件所有者,权限)
保存文件,block,DataNode之间的映射关系
元数据保存在内存之中
元数据存储到磁盘文件名微fsimage
block的位置信息不保存到fsimage.
edits记录堆元数据的操作日志。
处理客户端的读写服务
SecondNameNode:
帮助NameNode合并edits文件到fsimage.
默认3600秒或者文件大小超过64M,进行edits文件合并。
fs.checkpoint.period, fs.checkpoint.size
DataNode:
存储文件内容
文件内容保存在磁盘
维护block id到DataNode本地文件的映射关系
向NameNode发送心跳保持联系(3秒),如果NameNode10分钟没有收到心跳,则认为改DataNode已经失效。
block副本存放策略:
第一个副本:存放在上传文件的DateNode上。如果是集群外提交,则随机挑选一台磁盘不太满,cpu不太忙的节点。
第二个副本:放置在与第一个副本不同机架的节点上。
第三个副本:与第二个副本相同机架的节点上。
更多副本:随机节点
HDFS读流程
客户端通过NameNode访问HDFS
![Kazam_screenshot_00000.png](https://img.haomeiwen.com/i13257943/ef370b13f03dd699.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
HDFS文件写入流程
![Kazam_screenshot_00002.png](https://img.haomeiwen.com/i13257943/c15f218ec3ba0faa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
客户端提交文件信息到NameNode
NameNode返回DateNode,block信息给客户端
客户端向DateNode写入block
DateNode负责副本的复制
副本复制完成,通知客户端block写入完成
当所有block都写入完成后,客户端通知NameNode文件写入完成。
HDFS数据存储单元block
文件被切分成固定大小的数据块
默认64M,可配置。
若文件大小不到64M,则单独存成一个block
文件存储方式
按大小切分成若干block,存储到不同节点上
默认每个block都有3个副本
block大小和副本数通过客户端上传文件时设置。文件上传成功后,文件副本数可变更,block 大小不可变更。
HDFS安全模式:
文件的block位置信息由DataNode上报给NameNode.当HDFS文件系统重启动时,NameNode会重新接受DataNode上报文件block位置信息。在此期间,HDFS处于安全模式。安全模式下不可写入文件。
HDFS文件权限
r,w,x
阻止好人做错事,而不是阻止坏人做坏事
网友评论