Hadoop中的HDFS

本文深入探讨Hadoop中的HDFS,阐述其优点如支持超大文件处理、高容错性和流式文件写入,同时指出其缺点如不适合低延迟数据访问和小文件存储。详细解析HDFS的设计目标和架构,包括数据块、元数据节点和数据节点的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hadoop中的HDFS

HDFS的优点:

  1. 支持处理超大文件。
  2. 运行在廉价的服务器上
  3. 高容错性:hdfs上传的数据会自动保存多个副本,一个副本的丢失,hdfs副本冗余机制会自动复制其他机器上的副本。
  4. 流式文件写入:一次写入、多次读取的服务。文件一旦写入,就不能修改,只能增加,提高I/O性能。

HDFS的缺点:

  1. 不适合低延迟数据访问场景,实时性、低延迟的查询应用HBase会是更好。
  2. 不适合小文件。hdfs的元数据存放在namenode中,整个文件系统的文件数量会受限于namenode的内存大小,一旦小文件过多,会使namenode的压力倍增,影响集群性能,采用sequencefile等方式对小文件进行合并。
  3. 不适合并发写入

hdfs的设计目标

  1. 硬件故障:硬件故障时常态而不是异常,构成系统的组件数目是非常巨大的,每一个组件都可能失效,意味着总有一部分hdfs组件是不工作的,因此故障检测和自动快速恢复是hdfs最核心的架构设计目标。
  2. 大规模数据集。典型的hdfs文件大小一般都在gb至tb量级,hdfs应该提供更高的聚合数据宽带,能在一个及群里扩展到数百个节点。一个单一的hdfs实例应该能支撑数以万计的文件。
  3. 移动计算比移动数据更经济。

HDFS架构

采用了典型的master/slave架构设计,一个hdfs集群包含了一个活动namenode,它的职责是管理文件系统名字空间以及处理用户对数据的访问。还包含了一定数量的DataNode。一般是一个DataNode对应一个节点,每一个DataNode都管理并存储了整体数据的一部分。NameNode会执行类似于打开、关闭或者重命名文件夹或文件的操作,同时也负责确定数据块到具体DataNode的映射。DataNode负责处理文件系统客户端的读写请求,在NameNode的统一调度下进行数据块的创建删除和复制。

  1. 数据块(Block):hdfs最基本的存储单位是数据块,默认的块大小是128MB
  2. 元数据节点(NameNode):NameNode是管理者,一个hadoop集群中只有一个活动的NameNode节点,他负责管理文件系统的命名空间和控制用户的访问
    • NameNode提供名称查询服务
    • NameNode保存元数据信息。具体包括:文件包含哪些块,块保存在哪个DataNode。元数据信息在NameNode启动后会加载到内存
  3. 数据节点(DataNode):一般而言,DataNode是一个在hdfs实例中的单独机器上运行的进程。Hadoop集群包含大量的DataNode。DataNode是文件系统真正存储数据的地方,一个文件被拆分成多个块后,会将这些块存储在对应的DataNode上。客户端向NameNode发起请求,然后对应的DataNode上写入或者读出对应的数据块。
    • 保存块:每个块对应一个元数据信息文件,这个文件主要描述块属于哪个文件、是文件中第几个块等信息。
    • 启动DataNode进程的时候向NameNode汇报块信息
    • 通过向NameNode发送心跳与其保持联系(3秒一次),如果NameNode在10分钟还没有收到DataNode的心跳,则认为该DataNode已经丢失,NameNode会将DataNode上的块复制到其他DataNode
  4. 从元数据节点(Secondary Namenode):周期性的将editlog文件中对hdfs的操作合并到一个FsImage文件中,然后清空editlog文件,防治日志文件过大。帮助NameNode将内存中的元数据信息持久化到硬盘上的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值