前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Hadoop分布式文件系统(HDFS)

Hadoop分布式文件系统(HDFS)

作者头像
大数据老哥
发布于 2021-03-23 13:27:13
发布于 2021-03-23 13:27:13
1.5K0
举报

一、介绍

HDFSHadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署在低成本的硬件上。

二、HDFS 设计原理

2.1 HDFS 架构

HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成:

  • NameNode : 负责执行有关 文件系统命名空间 的操作,例如打开,关闭、重命名文件和目录等。它同时还负责集群元数据的存储,记录着文件中各个数据块的位置信息。
  • DataNode:负责提供来自文件系统客户端的读写请求,执行块的创建,删除等操作。

2.2 文件系统命名空间

HDFS 的 文件系统命名空间 的层次结构与大多数文件系统类似 (如 Linux), 支持目录和文件的创建、移动、删除和重命名等操作,支持配置用户和访问权限,但不支持硬链接和软连接。NameNode 负责维护文件系统名称空间,记录对名称空间或其属性的任何更改。

2.3 数据复制

由于 Hadoop 被设计运行在廉价的机器上,这意味着硬件是不可靠的,为了保证容错性,HDFS 提供了数据复制机制。HDFS 将每一个文件存储为一系列,每个块由多个副本来保证容错,块的大小和复制因子可以自行配置(默认情况下,块大小是 128M,默认复制因子是 3)。

2.4 数据复制的实现原理

大型的 HDFS 实例在通常分布在多个机架的多台服务器上,不同机架上的两台服务器之间通过交换机进行通讯。在大多数情况下,同一机架中的服务器间的网络带宽大于不同机架中的服务器之间的带宽。因此 HDFS 采用机架感知副本放置策略,对于常见情况,当复制因子为 3 时,HDFS 的放置策略是:

在写入程序位于 datanode 上时,就优先将写入文件的一个副本放置在该 datanode 上,否则放在随机 datanode 上。之后在另一个远程机架上的任意一个节点上放置另一个副本,并在该机架上的另一个节点上放置最后一个副本。此策略可以减少机架间的写入流量,从而提高写入性能。

如果复制因子大于 3,则随机确定第 4 个和之后副本的放置位置,同时保持每个机架的副本数量低于上限,上限值通常为 (复制系数 - 1)/机架数量 + 2,需要注意的是不允许同一个 dataNode 上具有同一个块的多个副本。

2.5 副本的选择

为了最大限度地减少带宽消耗和读取延迟,HDFS 在执行读取请求时,优先读取距离读取器最近的副本。如果在与读取器节点相同的机架上存在副本,则优先选择该副本。如果 HDFS 群集跨越多个数据中心,则优先选择本地数据中心上的副本。

2.6 架构的稳定性

1. 心跳机制和重新复制

每个 DataNode 定期向 NameNode 发送心跳消息,如果超过指定时间没有收到心跳消息,则将 DataNode 标记为死亡。NameNode 不会将任何新的 IO 请求转发给标记为死亡的 DataNode,也不会再使用这些 DataNode 上的数据。由于数据不再可用,可能会导致某些块的复制因子小于其指定值,NameNode 会跟踪这些块,并在必要的时候进行重新复制。

2. 数据的完整性

由于存储设备故障等原因,存储在 DataNode 上的数据块也会发生损坏。为了避免读取到已经损坏的数据而导致错误,HDFS 提供了数据完整性校验机制来保证数据的完整性,具体操作如下:

当客户端创建 HDFS 文件时,它会计算文件的每个块的 校验和,并将 校验和 存储在同一 HDFS 命名空间下的单独的隐藏文件中。当客户端检索文件内容时,它会验证从每个 DataNode 接收的数据是否与存储在关联校验和文件中的 校验和 匹配。如果匹配失败,则证明数据已经损坏,此时客户端会选择从其他 DataNode 获取该块的其他可用副本。

3.元数据的磁盘故障

FsImageEditLog 是 HDFS 的核心数据,这些数据的意外丢失可能会导致整个 HDFS 服务不可用。为了避免这个问题,可以配置 NameNode 使其支持 FsImageEditLog 多副本同步,这样 FsImageEditLog 的任何改变都会引起每个副本 FsImageEditLog 的同步更新。

4.支持快照

快照支持在特定时刻存储数据副本,在数据意外损坏时,可以通过回滚操作恢复到健康的数据状态。

三、HDFS 的特点

3.1 高容错

由于 HDFS 采用数据的多副本方案,所以部分硬件的损坏不会导致全部数据的丢失。

3.2 高吞吐量

HDFS 设计的重点是支持高吞吐量的数据访问,而不是低延迟的数据访问。

3.3 大文件支持

HDFS 适合于大文件的存储,文档的大小应该是是 GB 到 TB 级别的。

3.3 简单一致性模型

HDFS 更适合于一次写入多次读取 (write-once-read-many) 的访问模型。支持将内容追加到文件末尾,但不支持数据的随机访问,不能从文件任意位置新增数据。

3.4 跨平台移植性

HDFS 具有良好的跨平台移植性,这使得其他大数据计算框架都将其作为数据持久化存储的首选方案。

附:图解HDFS存储原理

说明:以下图片引用 (https://blog.csdn.net/hudiefenmu/article/details/37655491)

1. HDFS写数据原理

2. HDFS读数据原理

3. HDFS故障类型和其检测方法

第二部分:读写故障的处理

第三部分:DataNode 故障处理

副本布局策略

彩蛋

资源获取 获取Flink面试题,Spark面试题,程序员必备软件,hive面试题,Hadoop面试题,Docker面试题,简历模板,优质的文章等资源请去 下方链接获取 GitHub自行下载 https://github.com/lhh2002/Framework-Of-BigData Gitee 自行下载 https://gitee.com/li_hey_hey/dashboard/projects

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据老哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从 Bridge 到 OVS,探索虚拟交换机
Linux Bridge 和物理网络一样,虚拟网络要通信,必须借助一些交换设备来转发数据。因此,对于网络虚拟化来说,交换设备的虚拟化是很关键的一环。 上文「网络虚拟化」已经大致介绍了 Linux 内核为了满足网络虚拟化的要求,实现了一套虚拟交换设备——Bridge。本文重点介绍下 Bridge 的加强版——Open vSwitch(OVS),并从 Bridge 过渡到 OVS 的缘由讲起,让大家有个全面的认识。 借助 Linux Bridge 功能,同主机或跨主机的虚拟机之间能够轻松实现通信,也能够让虚拟机
Linux云计算网络
2018/01/11
3.4K0
从 Bridge 到 OVS,探索虚拟交换机
微软Azure加速网络:公共云中的SmartNIC
来源:内容由「网络交换FPGA」编译自「nsdi18」,谢谢。Azure是数据中心的行业标杆,其应用规模和技术都是非常值得借鉴的,文中总结了来自产业界宝贵的经验和教训,探讨为何FPGA是最适合数据中心架构的原因。故翻译此文。
网络交换FPGA
2020/04/21
5.3K0
微软Azure加速网络:公共云中的SmartNIC
云计算与虚拟化硬核技术内幕 (15) —— 《国富论》中的秘密
在上期《云计算与虚拟化硬核技术内幕 (14) —— 不忘初心,删繁就简》中,我们介绍了Linux网桥,也遗留了一些问题:
用户8289326
2022/09/08
6510
云计算与虚拟化硬核技术内幕 (15) —— 《国富论》中的秘密
第一章 SDN介绍 (附件3)【云计算,SDN,虚拟化三者关系】
云计算是一种按需分配、按使用量收费的使用模式,提供了一个可配置的资源共享池,用户可以通过网络访问,获取存储空间、网络带宽、服务器、应用软件等等服务。
红目香薰
2022/11/29
8670
第一章 SDN介绍 (附件3)【云计算,SDN,虚拟化三者关系】
SDN 技术指南(二):OpenFlow
OpenFlow 最早由斯坦福大学提出,目前知识产权由开放网络基金会(Open Networking Foundation,ONF)持有。
RiboseYim
2018/01/13
2.5K0
SDN实战团分享(二十八):VMware NSX技术分享
Vmware是虚拟化技术的先驱者,其强大的计算虚拟化产品已经深入了各行各业的日常使用中。当然,如果没有网络虚拟化的支撑,计算的虚拟化是根本玩不转的。 Vmware最早的虚拟化产品是Vmware Workstation,在PC OS的基础上提供了桌面级的虚拟机,其网络环境比较简单,基本的需求就是虚拟机之间要能够通信,另外虚拟机也可能需要和外界通信。VMnet作为Vmware Workstation中的虚拟交换机,提供了3种网络模式:host-only/nat/bridge。Host-only模式就是只允许虚拟
SDNLAB
2018/03/30
2.5K0
SDN实战团分享(二十八):VMware NSX技术分享
SDN 技术指南(四):Open vSwitch
由之前发布的文章知道 Open vSwitch(Open Source Virtual Switch) 是一款基于软件实现的开源虚拟交换机。
RiboseYim
2018/01/13
2.7K0
SDN交换机是一种新型的防火墙吗?
许多人曾预料,企业组织采用软件定义网络(SDN)技术的步伐会晚于服务提供商或多租户数据中心和云服务提供商。我们现在看到网络功能虚拟化(NFV)在企业内部得到更多的使用,一些企业正开始推行SDN试点项目。就在企业考虑如何在自己的数据中心环境中利用SDN技术之际,也开始考虑SDN能提供哪些新的安全功能。针对控制器不允许传送的数据流,SDN交换机可以丢弃数据包。本文探究SDN交换机运行起来能否像传统防火墙。 软件定义网络是由这个概念发展而来的:将较低层的数据包/帧转发功能与智能化决定如何传送应用程序
SDNLAB
2018/04/04
1.6K0
SDN交换机是一种新型的防火墙吗?
基于SDN网络的QoS机制研究(上)
蒋暕青,华东师范大学研究生学历,先后于思博伦通信、上海宽带技术及工程研究中心、九州云就职。
SDNLAB
2020/06/19
1.6K0
SDN实战团分享(十八):品高云的SDN实践
在讲SDN云网络之前,我们先来回顾一下,传统的云网络。先来一张图(自己画的) 传统的云网络我相信大家一定非常熟悉。我简单介绍一下传统云网络的一些特点。 特点: 绝大部分网络功能都是沿用Linux原生自
SDNLAB
2018/04/02
1.7K0
SDN实战团分享(十八):品高云的SDN实践
什么是软件定义网络中的硬件卸载?
随着对计算机硬件需求的增加,对网络技术的需求也随之提高。不幸的是,计算机系统在很大程度上仍然效率不高,CPU作为各种计算机应用的关键引擎。为了解决这个问题,可以采取不同的方法:使用更大的计算机、在不同的计算机之间分配软件,或者提高其性能。
通往ICT之路
2024/06/07
2840
什么是软件定义网络中的硬件卸载?
白话SDN和学习笔记
---- 概述 最近开发私有云产品,那么不得不提的就是VPC(虚拟专有网络)。VPC是什么且具有什么优势呢?虚拟私有云(Virtual Private Cloud,VPC)可部署一个私有的、隔离的云计算环境,用户/租户可在该VPC中的虚拟网络上创建虚拟机、服务等资源。用户/租户可在 VPC上定义一个非常类似传统网络的虚拟网络拓扑,且对该虚拟网络环境拥有完全的控制权,包括选择IP地址范围、 创建子网、配置路由表及网关等等。由于使用隧道封装技术(VXLAN)对云服务器的IP报文进行封装,所以云服务器的数据链路层
吕海峰
2018/04/03
1.3K0
白话SDN和学习笔记
软件定义网络协议:OpenFlow SDN 协议标准
OpenFlow 是一种 SDN 协议,全称为 OpenFlow Switch Specification,由 ONF(Open Networking Foundation,开放网络基金会)组织开发和维护。
通信行业搬砖工
2023/09/06
8330
软件定义网络协议:OpenFlow SDN 协议标准
【重识云原生】第四章云网络4.8.3.1节——Open vSwitch简介
        在过去十几年中,虚拟化已经改变了应用、数据、服务的实现部署方式。服务器的虚拟化给数据中心网络带来了根本性的变化。在传统的数据中心网络架构基础上,出现了一个新的、位于物理服务器内的接入层。这个新的接入层包含的设备是运行在x86服务器中的vSwitch,而这些vSwitch连接着一个服务器内的多个workload(包括容器和虚机)。
江中散人_Jun
2022/07/12
5.4K0
【重识云原生】第四章云网络4.8.3.1节——Open vSwitch简介
SDN私享汇(十三):DCFabirc控制器实现高级OpenStack网络功能
DCFabirc的主要特性和基于DCFabric的OpenStack网络的高性能优势。DCFabric的最新版本“秦”在峰会上正式发布,新版本主要在多线程优化、网络连接管理、内存管理、主备集群数据同步
SDNLAB
2018/03/29
8280
SDN私享汇(十三):DCFabirc控制器实现高级OpenStack网络功能
SDN实战团分享(十三):SDN测量的研究尝试
各位前辈,大神好!我是张鹏飞,现在上海交大博士生在读,来自OMNILab。我的主要研究兴趣是SDN 网络测量和分析,今天厚着脸皮分享下我们在SDN测量方面的一些工作,希望能够得到大家的反馈意见,最好是批评。因为和业界接触没有那么多,如果分享的Idea有不切实际的地方,恳请大家指出来,谢谢! 网络测量方面,其实无论是SDN还是传统网络,都有很多成熟的工作和Solution,我们分享的工作的出发点,是探索在纯OpenFlow的条件下能否实现网络承载应用的性能测量,所以第一个关键词是SDN,第二个关键词是业务性能
SDNLAB
2018/04/03
9310
SDN实战团分享(十三):SDN测量的研究尝试
OVS 总体架构、源码结构及数据流程全面解析
在前文「从 Bridge 到 OVS」中,我们已经对 OVS 进行了一番探索。本文决定从 OVS 的整体架构到各个组件都进行一个详细的介绍。 OVS 架构 OVS 是产品级的虚拟交换机,大量应用在生产
Linux云计算网络
2018/01/11
5.8K0
OVS 总体架构、源码结构及数据流程全面解析
容器网络硬核技术内幕 (15)
我们发现,flannel的最大优点是简便,部署和配置工作非常简洁,但它也有一些明显的缺陷和限制:
用户8289326
2022/07/28
5050
容器网络硬核技术内幕 (15)
【重识云原生】第四章云网络4.8.1节——SDN总述
        SDN起源于2006年斯坦福大学的Clean Slate研究课题。2009年,Mckeown教授正式提出了SDN概念。
江中散人_Jun
2022/07/12
1.4K0
【重识云原生】第四章云网络4.8.1节——SDN总述
【重识云原生】第四章云网络4.8.2.2节——OpenFlow协议详解
        OpenFlow协议是基于网络中“流”的概念设计的南向接口协议。在OpenFlow引入了“流”的概念之后,控制器可以根据某次通信中“流”的第一个数据分组的特征,使用OpenFlow协议提供的接口对数据平面设备部署策略——流表,而这次通信的后续流量则按照相应流表在硬件层次上进行匹配、转发,从而实现了灵活的网络转发策略。
江中散人_Jun
2022/07/12
2.5K0
【重识云原生】第四章云网络4.8.2.2节——OpenFlow协议详解
推荐阅读
相关推荐
从 Bridge 到 OVS,探索虚拟交换机
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档