| 3 | 单一文件Block大小一致,文件与 文件可以不一致 |
| 4 | Block可以设置副本数,副本分散在不同节点中
副本数不要超过节点数量(超过多余的副本会重复将浪费空间) |
| 5 | 文件上传可以设置Block大小和副本数 |
| 6 | 已上传的文件Block副本数可以调整,大小不变 |
| 7 | 只支持一次写入多次读取,同一时刻只有一个写入者(避免修改后要变动后面所有节点的偏移量) |
| 8 | 可以append追加数据 |
上传文件指定block大小和副本数量
hadoop fs -Ddfs.replication=2 -put a.txt /
hadoop fs -Ddfs.blocksize=67108864 -put fun1.sh /
已上传的文件Block副本数可以调整,大小不变
[root@hadoop-node01 ~]# hadoop fs -setrep -w 3 /fun1.sh
Replication 3 set: /fun1.sh
Waiting for /fun1.sh … done
append追加数据
hadoop fs -appendToFile b.txt /a.txt
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190402164742158.png?x-oss-process=image/waterma
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
rk,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9kcGItYm9ib2thb3lhLXNtLmJsb2cuY3Nkbi5uZXQ=,size_16,color_FFFFFF,t_70)
==================================================================
- 文件元数据MetaData,文件数据
元数据
数据本身
-
(主)NameNode节点保存文件元数据:单节点 posix
-
(从)DataNode节点保存文件Block数据:多节点
-
DataNode与NameNode保持心跳,提交Block列表
-
HdfsClient与NameNode交互元数据信息
-
HdfsClient与DataNode交互文件Block数据
======================================================================
存储元数据(MetaData),不存储具体的block
| 序号 | 特点 |
| — | :-- |
| 1 | 基于内存存储,不和硬盘发生交互 |
| 2 | 持久化 |
NameNode主要功能:
| 序号 | 功能 |
| — | :-- |
| 1 | 接受客户端的读写服务 |
| 2 | 收集DataNode汇报的Block列表信息 |
| 3 | NameNode保存metadata信息包括:文件owership和permissions,文件大小,
时间(Block列表:Block偏移量),位置信息 |
NameNode持久化
-
NameNode的metadate信息在启动后会加载到内存
-
metadata存储到磁盘文件名为”fsimage”
-
Block的位置信息不会保存到fsimage
-
edits记录对metadata的操作日志。。。
======================================================================
本地磁盘目录存储数据(Block),文件形式,同时存储Block的元数据信息文件,启动DN时会向NN汇报block信息,通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其它DN