HDFS的详解(一)

本文详细介绍了Hadoop的三大核心组件:NameNode负责文件系统的命名空间管理,包括文件名、目录结构及其属性;DataNode用于存储数据块并定期向NameNode发送心跳信号;SecondaryNameNode辅助NameNode进行fsimage与editlog文件的合并。
      1. 三个进程
        1)NameNode (NN): 名称节点  --》client第一个操作的对象

        NameNode的功能: 文件系统的命名空间  
                                      1.文件名称
                                      2.文件目录结构
                                      3.文件的属性(权限 创建时间 副本数)
                                      4.文件对应哪些数据块--》这些数据块对应哪些DataNode节点上,不会持久化存储这个映射关系,通过集群的启动和运行时,datanode定期发送blockReport给NN,以此NN在【内存】中动态维护这种映射关系。
         存储:   维护文件系统树及整个树内的所有文件和目录,这些信息以两种文件形式永久保存在本地磁盘上,命名空间镜像文件fsimage+编辑日志editlog
        2)DataNode (DN): 数据节点  --》存储数据的

        DataNode的作用:
            1.每隔3秒发送一次心跳  参数可配置 (默认)
            2.每隔10次心跳发送一次blockReport  (30s)(默认)

        存储: 数据块+数据块校验,和与NN通信
        3)Secondary NameNode(SNN): 第二名称节点

         Secondary NameNode的作用:

                                   定期合并fsimage+editlog文件为新的fsimage,推送给NN,称为检查点,checkpoint

                                  存储: 命名空间镜像文件fsimage+编辑日志editlog        

                                参数:fs.checkpoint.period-->1h    fs.checkpoint.size -->64M

2.block(数据块)
大小: 64M  128M(目前2.x中默认)

参数: dfs.blocksize   

3.副本数
dfs.replication    : 3    一个块会变为3个块 

案例
1个文件130M : 128M 2M 两个块     默认块大小为128M  实际存储: 130M*3     多少个块: 6

4. 副本放置策略

第一副本: 放置在上传文件的DataNode上;
如果是集群外提交,则随机挑选一台磁盘
不太慢、 CPU不太忙的节点上;

第二副本: 放置在于第一个副本不同的机
架的节点上;
第三副本: 与第二个副本相同机架的不同
节点上;

如果还有更多的副本:随机放在节 点中;



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31496956/viewspace-2199364/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31496956/viewspace-2199364/

随着信息技术在管理上越来越深入而广泛的应用,作为学校以及些培训机构,都在用信息化战术来部署线上学习以及线上考试,可以与线下的考试有机的结合在起,实现基于SSM的小码创客教育教学资源库的设计与实现在技术上已成熟。本文介绍了基于SSM的小码创客教育教学资源库的设计与实现的开发全过程。通过分析企业对于基于SSM的小码创客教育教学资源库的设计与实现的需求,创建了个计算机管理基于SSM的小码创客教育教学资源库的设计与实现的方案。文章介绍了基于SSM的小码创客教育教学资源库的设计与实现的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。 本基于SSM的小码创客教育教学资源库的设计与实现有管理员,校长,教师,学员四个角色。管理员可以管理校长,教师,学员等基本信息,校长角色除了校长管理之外,其他管理员可以操作的校长角色都可以操作。教师可以发布论坛,课件,视频,作业,学员可以查看和下载所有发布的信息,还可以上传作业。因而具有定的实用性。 本站是个B/S模式系统,采用Java的SSM框架作为开发技术,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SSM的小码创客教育教学资源库的设计与实现管理工作系统化、规范化。
### HDFS 详解:分布式文件系统架构与原理 #### HDFS概述 HDFS(Hadoop Distributed File System)是种专为大数据存储和处理而设计的分布式文件系统[^2]。它是Hadoop生态系统的核心组件之,旨在解决海量数据的可靠存储和高效访问问题。 #### HDFS的设计目标 HDFS的主要设计目标包括但不限于以下几个方面: - **大文件存储**:适合存储TB甚至PB级别的超大规模文件。 - **高吞吐量**:通过批量读写操作减少网络传输开销,提升数据访问效率[^4]。 - **容错能力**:即使部分节点发生故障,也能保证系统的正常运行。 - **可扩展性**:可以通过增加硬件资源轻松扩展存储容量和性能。 #### HDFS基本架构 HDFS采用主从结构(Master-Slave Architecture),主要由以下三个核心组件构成: 1. **NameNode** NameNode是HDFS集群的大脑,负责管理整个文件系统的命名空间和元数据信息。它记录了每个文件被分割成哪些数据块(Block),以及这些数据块分布在哪个DataNode上[^3]。此外,NameNode还接收客户端请求并协调执行各种文件操作。 2. **DataNode** DataNode是实际存储数据的工作节点,在物理磁盘上保存文件的内容片段即数据块。当启动时,它们向NameNode汇报当前持有的所有块列表;之后定期发送心跳信号以维持联系状态同时更新可用空间等动态参数[^3]。 3. **Secondary NameNode** 虽然名字里带“name”,但它并非真正的名称服务器替代品而是辅助角色——主要用于周期性合并fsimage(镜像文件)与edits log日志从而减轻primary namenode负担防止内存溢出风险但不参与实时业务流程因此严格意义上不属于HA(high availability)范畴内的备用方案[^未提及]. #### 工作原理 以下是HDFS的关键工作机制描述: - **文件写入过程**: 客户端发起上传请求给namenode,后者分配block id并将该id告知相应datanodes形成pipeline链路以便后续streaming-style write;期间每完成个chunk size大小的数据传递后立即同步副本至其他指定位置直到达到预设replication factor为止. - **文件读取过程**: 用户定位所需resource path提交query到nn获取target blocks location info随后直接连接dn拉取content而非经由中间层转发以此降低latency提高efficiency. - **数据复制机制**: 默认情况下份data会被copy三次分别放置于不同machine之上确保即便遭遇single point failure仍能恢复original content without loss.[^not specific] - **故障检测与恢复**: dn定时上报health status report to nn so that it can promptly detect any abnormal situation like node offline or disk corruption etc., then trigger corresponding recovery actions such as re-replicating lost chunks elsewhere within cluster boundaries accordingly.[^also not clear here] #### 性能优化特点 除了基础功能外,hdfs还有诸多针对特定场景做了专门调优的地方比如: - 支持rack awareness configuration which helps balance load across multiple racks thereby reducing inter-rack traffic costs significantly while enhancing fault tolerance at the same time.[^no exact source provided yet] - Implementing short-circuit reads when possible allows bypassing normal network channels between client and remote datanodes thus achieving faster local access speeds under certain conditions where both parties reside on identical physical hosts/machines.[^again no direct citation available currently] ```python # 示例代码展示如何简单交互hdfs api from hdfs import InsecureClient client = InsecureClient('http://localhost:9870', user='hadoop') with client.write('/example.txt') as writer: writer.write(b'Hello World\n') result = client.read('/example.txt').decode() print(result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值