什么是HDFS(一)

HDFS是Hadoop的核心组件,作为分布式存储服务,它解决了大数据存储问题。Namenode负责管理文件系统元数据和数据节点,DataNode则执行实际的数据读写并定期汇报状态。HDFS具有数据副本机制,保证高容错性和可扩展性,但存在低延迟访问不足、小文件存储限制、文件修改不便及不支持并行写入等缺点。

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

HDFS 是 Hadoop 的重要组成部分

HDFS 是 Hadoop Distribute File System 的简称,
意为:Hadoop 分布式文件系统。是 Hadoop 核心组件之一,作为最底层的分布式存储服务而存在。
分布式文件系统解决的问题就是大数据存储。

HDFS集群

在这里插入图片描述
管理者:NameNode
作用:负责管理,管理集群内各个节点。
负责管理整个文件系统的元数据(指的是数据的存放位置或存放路径)或名字空间
辅助管理者:SecondaryNameNode
作用:责辅助NameNode管理工作。
工作者:DataNode
作用:负责工作,进行读写数据。 周期向NameNode汇报。
负责管理用户的文件数据块(一个大的数据拆分成多个小的数据块)

Namenode作用

1、维护 管理文件系统的名字空间(元数据信息)
2、负责确定指定的文件块到具体的Datanode结点的映射关系。
3、维护管理 DataNode上报的心跳信息

DataNode作用

1、执行数据的读写(响应的是客户端)
2、周期性向NameNode做汇报(数据块的信息、校验和)
若datanode 10分钟没有向NameNode做汇报,表示已丢失(已宕机)
心跳周期 3秒 3、执行流水线的复制(一点一点复制)

HDFS 副本存放

HDFS,即Hadoop分布式文件系统(Hadoop Distributed File System),是Hadoop项目的核心组件之,专门用于存储和管理大规模数据集。它设计用于运行在廉价的硬件上,提供高吞吐量的数据访问,并支持大规模数据集的应用。 ### 主要功能 1. **数据的分布式存储和处理**:HDFS将大文件分割为数据块(通常为64MB或128MB)并分布存储在集群的各个节点上,从而实现高效的数据处理和存储能力。 2. **命令行接口**:Hadoop提供了组命令行工具,允许用户与HDFS进行交互,如上传、下载、删除文件等操作。 3. **内置服务器支持**:NameNode和DataNode提供内置的Web服务器,用户可以通过浏览器查看集群的运行状态和相关信息。 4. **流式数据访问**:HDFS优化了流式数据访问模式,适合次写入、多次读取的场景。 5. **文件权限和身份验证**:HDFS支持类似于Unix的文件权限模型,并集成了Kerberos等身份验证机制,以确保数据的安全性。 6. **快照功能**:HDFS支持快照(Snapshot)功能,可以对文件系统中的某个目录进行快照,用于数据备份和恢复。 7. **回收站机制**:HDFS提供回收站(Trash)功能,用户删除的文件会先进入回收站,而不是立即删除,这样可以在定时间内恢复误删的数据[^3]。 ### 应用场景 1. **大数据存储**:HDFS适合存储和管理大规模的非结构化或半结构化数据,例如日志文件、图像、视频等。由于其分布式特性,能够轻松扩展到数百甚至数千台服务器。 2. **数据湖架构**:在数据湖架构中,HDFS常被用作底层存储系统,存储来自不同来源的原始数据,供后续的数据处理和分析使用。 3. **批处理和分析**:HDFS与MapReduce、Spark等计算框架结合,适合进行大规模数据的批处理和分析任务,例如数据挖掘、机器学习等。 4. **备份和归档**:HDFS的快照和回收站功能使其成为数据备份和归档的理想选择,能够确保数据的安全性和可恢复性。 5. **高吞吐量场景**:HDFS优化了数据的吞吐量,适合需要大量数据读取的应用,例如数据仓库和报表生成。 6. **小文件存储优化**:虽然HDFS最初设计用于存储大文件,但它也提供了些小文件存储的解决方案,例如使用HAR(Hadoop Archive)文件或将多个小文件合并为个SequenceFile[^2]。 ### 代码示例 以下是个简单的HDFS操作示例,展示如何使用Java API与HDFS进行交互: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java.net.URI; public class HDFSExample { public static void main(String[] args) throws Exception { // 配置HDFS的地址和用户 Configuration conf = new Configuration(); URI uri = new URI("hdfs://localhost:9000"); String user = "hadoop"; // 获取文件系统对象 FileSystem fs = FileSystem.get(uri, conf, user); // 创建个新文件 Path filePath = new Path("/user/hadoop/test.txt"); FSDataOutputStream out = fs.create(filePath); out.write("Hello HDFS!".getBytes()); out.close(); // 查看文件内容 FSDataInputStream in = fs.open(filePath); byte[] buffer = new byte[1024]; int bytesRead = in.read(buffer); while (bytesRead >= 0) { System.out.write(buffer, 0, bytesRead); bytesRead = in.read(buffer); } in.close(); // 删除文件(进入回收站) Trash trash = new Trash(fs, conf); trash.moveToTrash(filePath); // 关闭文件系统 fs.close(); } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值