当前位置: 代码迷 >> 综合 >> HDFS Hadoop-1.x 理论
  详细解决方案

HDFS Hadoop-1.x 理论

热度:100   发布时间:2023-11-18 04:26:43.0

HDFS(分布式文件系统)为了做到可靠性(reliability)创建了多份数据块(data blocks)的复制,并将它们放置在服务器群的计算节点中(compute nodes),MapReduce就可以在它们所在的节点上处理这些数据了。除了可靠性,HDFS在一定程度上可以提高数据的读取速度。

 

HDFS中有三个重要的节点:Name Node,Data Node,Secondary NameNode。

NameNode:存储元数据;元数据保存在内存中;保存文件,block,datanode之间的映射关系。(元数据包括文件名、文件大小、文件权限等除文件内容以外的数据)

DataNode:存储文件内容;文件内容保存在磁盘;维护了block id到datanode本地文件的映射关系。

NameNode数据的大小取决于文件数量的多少,而不是文件内容的大小。

HDFS中存在一个NameNode和多个DataNode。

 

DataNode中存在冗余机制 – 存放的位置(机架感知策略)

HDFS还包括故障检测:对于数据节点有心跳包(检测是否宕机)、块报告(安全模式下检测)、数据完整性检测(校验和比较);对于名字节点(日志文件,镜像文件)。除此之外,HDFS还包括空间回收机制,即DataNode中是否含有多余的空间。

HDFS优点:

  • 高容错性

   (1)数据自动保存多个副本

   (2)副本丢失后,自动恢复

  • 适合批处理

(1)移动计算而非移动数据

(2)数据位置暴露给计算框架

  • 适合大数据处理

(1)GB、TB、甚至PB级数据

(2)百万规模以上的文件数量

(3)可处理10K+节点的规模

  • 流式文件访问

(1)一次写入,多次读取。文件一旦写入不能修改,只能追加

(2)它能保证数据的一致性(校验机制)

  • 可构建在廉价机器上

(1)通过多副本提高可靠性

(2)提供了容错和恢复机制

 

HDFS缺点:

  • 低延迟数据访问

(1)要求毫秒级访问不适合存储在HDFS上

(2)低延迟与高吞吐率

  • 小文件存储(若有大量小文件,需要用压缩机制存储,如将10000个文件压缩为100个文件存储)

(1)占用NameNode大量内存(因为NameNode的大小取决于文件的数量,并且NameNode保存在内存中,而内存大小有限)

(2)寻道时间超过读取时间

  • 并发写入、文件随机修改(不允许修改文件内容)

(1)一个文件只能有一个写者

(2)仅支持append

 

HDFS架构

HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。

HDFS客户端请求NameNode(读写文件),NameNode将请求转发给DataNode。DataNode将数据存储在磁盘上,磁盘上存储的数据都是一块一块的,并且在其他DataNode中保存有副本,副本数越多,可靠性越高。

HDFS Client:就是客户端。

? 1、切分文件:文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。

? 2、与 NameNode 交互,获取文件的位置信息。

? 3、与 DataNode 交互,读取或者写入数据。

? 4、Client 提供一些命令来管理 HDFS,比如启动或者关闭HDFS。

? 5、Client 可以通过一些命令来访问 HDFS。

NameNode:就是 master。

? 1、管理 HDFS 的名称空间(namespace)。

? 2、管理数据块(Block)映射信息

? 3、配置副本策略

? 4、处理客户端读写请求。

Secondary NameNode:并非 NameNode 的热备份。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。

? 1、辅助 NameNode,分担其工作量。

? 2、定期合并 fsimage和edits,并推送给NameNode。

? 3、在紧急情况下,可辅助恢复 NameNode。

DataNode:就是Slave,NameNode 下达命令,DataNode 执行实际的操作。

? 1、存储实际的数据块。

? 2、执行数据块的读/写操作。

 

HDFS数据存储单元(block)

  • 文件被切分成固定大小的数据块

(1)默认数据块大小为64MB,可修改

(2)若文件大小不到64MB,则单独存成一个块(即一个块只可能存同一个文件的数据,不可能有两个文件的数据) 

  • 一个文件存储方式

(1)按大小被切分成若干个block,存储到不同节点上

(2)默认情况下每个block都有三个副本(副本数可修改)

  • Block大小和副本数通过客户端上传文件时设置,文件上传成功后副本数可以变更,块大小不可变更。
  相关解决方案