hdfs初步学习

一、HDFS基本概念

HDFS是一个高度容错性的系统,设计用来部署在低成本硬件上,提供高吞吐量的数据访问。它放宽了POSIX的一些要求,以实现对文件系统数据的流式访问。HDFS将文件以块(Block)的形式存储,每个块默认大小为128MB(在Hadoop 2.x版本中),但可以通过配置参数调整。

二、HDFS架构

HDFS架构主要包括以下几个部分:

  • NameNode(名称节点)

    • 管理HDFS的命名空间(Namespace),包括文件和目录的元数据。
    • 维护文件系统的树状结构,以及文件与数据块之间的映射关系。
    • 持久化存储元数据,包括FsImage(元数据镜像文件)和EditLog(操作日志文件)。
  • DataNode(数据节点)

    • 存储文件的实际数据块。
    • 执行数据块的读写操作。
    • 定期向NameNode发送心跳信息,并报告自己存储的数据块列表。
  • SecondaryNameNode(次级名称节点)

    • 定期合并Fsimage和Edits,并将合并后的结果推送给NameNode。
    • 在紧急情况下,可辅助恢复NameNode,但不能替代NameNode工作。

三、HDFS工作原理

1. 数据写入流程
  1. 客户端通过RPC(远程过程调用)向NameNode发起写入请求。
  2. NameNode检查文件是否存在、客户端是否有权限写入等,并返回数据块的位置信息给客户端。
  3. 客户端根据返回的位置信息,将数据块写入到相应的DataNode中。
  4. 每个数据块会被复制到多个DataNode上(默认3个副本),以确保数据的可靠性。
2. 数据读取流程
  1. 客户端通过RPC向NameNode请求读取文件。
  2. NameNode返回文件的元数据信息,包括数据块的位置信息。
  3. 客户端根据返回的位置信息,从最近的DataNode读取数据块。
  4. 客户端将所有读取的数据块合并成完整的文件。

四、数据复制与容错处理

HDFS通过数据复制来提高数据的可靠性和可用性。每个数据块都会被复制到多个DataNode上(默认3个副本)。当某个DataNode出现故障时,HDFS会自动从其他DataNode上的副本中读取数据,以确保数据的可用性。此外,HDFS还提供了多种容错机制,如数据块的自动恢复、NameNode的容错等。

五、HDFS访问方式

HDFS提供了多种访问方式,包括:

  • Java API:通过Hadoop提供的Java API,可以编写程序来访问HDFS。
  • HTTP方式:通过WebHDFS或HttpFS,可以通过HTTP协议来访问HDFS。
  • Shell命令:Hadoop提供了一套Shell命令,可以在命令行中直接操作HDFS。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值