| 3 | 单一文件Block大小一致,文件与 文件可以不一致 |

| 4 | Block可以设置副本数,副本分散在不同节点中

副本数不要超过节点数量(超过多余的副本会重复将浪费空间) |

| 5 | 文件上传可以设置Block大小和副本数 |

| 6 | 已上传的文件Block副本数可以调整,大小不变 |

| 7 | 只支持一次写入多次读取,同一时刻只有一个写入者(避免修改后要变动后面所有节点的偏移量) |

| 8 | 可以append追加数据 |

上传文件指定block大小和副本数量

hadoop fs -Ddfs.replication=2 -put a.txt /

apache hadoop 怎么修改运行内存_元数据

hadoop fs -Ddfs.blocksize=67108864 -put fun1.sh /

apache hadoop 怎么修改运行内存_后端_02

已上传的文件Block副本数可以调整,大小不变

[root@hadoop-node01 ~]# hadoop fs -setrep -w 3 /fun1.sh

Replication 3 set: /fun1.sh

Waiting for /fun1.sh … done

apache hadoop 怎么修改运行内存_数据_03

apache hadoop 怎么修改运行内存_面试_04

append追加数据

hadoop fs -appendToFile b.txt /a.txt

apache hadoop 怎么修改运行内存_后端_05

![在这里插入图片描述](

rk,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9kcGItYm9ib2thb3lhLXNtLmJsb2cuY3Nkbi5uZXQ=,size_16,color_FFFFFF,t_70)

架构模型

==================================================================

apache hadoop 怎么修改运行内存_java_06

  1. 文件元数据MetaData,文件数据

元数据

数据本身

  1. (主)NameNode节点保存文件元数据:单节点 posix
  2. (从)DataNode节点保存文件Block数据:多节点
  3. DataNode与NameNode保持心跳,提交Block列表
  4. HdfsClient与NameNode交互元数据信息
  5. HdfsClient与DataNode交互文件Block数据

NameNode

======================================================================

存储元数据(MetaData),不存储具体的block

| 序号 | 特点 |

| — | :-- |

| 1 | 基于内存存储,不和硬盘发生交互 |

| 2 | 持久化 |

NameNode主要功能:

| 序号 | 功能 |

| — | :-- |

| 1 | 接受客户端的读写服务 |

| 2 | 收集DataNode汇报的Block列表信息 |

| 3 | NameNode保存metadata信息包括:文件owership和permissions,文件大小,

时间(Block列表:Block偏移量),位置信息 |

NameNode持久化

  1. NameNode的metadate信息在启动后会加载到内存
  2. metadata存储到磁盘文件名为”fsimage”
  3. Block的位置信息不会保存到fsimage
  4. edits记录对metadata的操作日志。。。

DataNode

======================================================================

本地磁盘目录存储数据(Block),文件形式,同时存储Block的元数据信息文件,启动DN时会向NN汇报block信息,通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其它DN

apache hadoop 怎么修改运行内存_元数据_07