游戏世界
游戏攻略
网盘资源
有趣网站
游戏资讯
PS2游戏
PS3游戏
PS4游戏
PS5游戏
switch游戏
PC游戏
软件分享
编程指南
开发小册
Java开发
iOS开发
前端开发
JavaScript开发
Android开发
PHP开发
数据库
开发工具
Python开发
Kotlin开发
Ruby开发
.NET开发
服务器运维
开放平台
架构师
大数据
云计算
人工智能
开发语言
其它开发
spring6中文文档
springboot3中文文档
主机游戏
PS订阅游戏-美服
PS订阅游戏-港服
XGP PGP游戏
SteamDeck游戏
VR PSVR2游戏
3A游戏基地
PS3游戏
spring中文文档
spring6中文文档
springboot3中文文档
vlambda博客
学习文章列表
首页
架构师
vlambda
2020-12-24
知识干货 | 大数据全解 HDFS分布式文件系统
HDFS概述
Hadoop分布式文件系统(HDFS)是一种旨在在商品硬件上运行的分布式文件系统。
HDFS具有高度的容错能力,旨在部署在低成本硬件上。
HDFS提供对应用程序数据的高吞吐量访问,并且适用于具有大数据集的应用程序。
HDFS放宽了一些POSIX要求,以实现对文件系统数据的流式访问。
HDFS最初是作为ApacheNutch Web搜索引擎项目的基础结构而构建的。
HDFS是ApacheHadoop Core项目的一部分。
计算机集群结构
分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群。
目前的分布式文件系统所采用的的计算机集群都是由普通硬件构成的,这就大大降低了硬件上的开销。
基本系统架构
Block块
HDFS默认一个块128MB,一个文件被分成多个块,以块作为存储单位。
块的大小远远大于普通文件系统,可以最小化寻址开销。
抽象的块概念可以带来以下几个明显的好处:
支持大规模文件存储
简化系统设计
适合数据备份
NameNode和DataNodes
NameNode
DataNode
存储元数据
存储文件内容
元数据保存在内存中
文件内容保存在磁盘
保存文件,block,datanode之间的映射关系
维护了block id 到datanode本地文件的映射关系
DataNodes
数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表。
每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中。
HDFS体系结构概述
HDFS命名空间管理
HDFS的命名空间包括目录、文件和块。
HDFS使用的是传统的分级文件体系,因此,用户可以像使用普通文件系统一样,创建、删除目录和文件,在目录间转移文件,重命名文件等。
NameNode维护文件系统命名空间。对文件系统命名空间或其属性的任何更改均由NameNode记录。
通信协议
HDFS是一个部署在集群上的分布式文件系统,因此,很多数据需要通过网络进行传输。
所有的HDFS通信协议都是构建在TCP/IP协议基础之上的。
客户端通过一个可配置的端口向名称节点主动发起TCP连接,并使用客户端协议与名称节点进行交互。
名称节点和数据节点之间则使用数据节点协议进行交互。
客户端与数据节点的交互是通过RPC(Remote Procedure Call)来实现的。在设计上,名称节点不会主动发起RPC,而是响应来自客户端和数据节点的RPC请求。
客户端
客户端是用户操作HDFS最常用的方式,HDFS在部署时都提供了客户端。
HDFS客户端是一个库,包含HDFS文件系统接口,这些接口隐藏了HDFS实现中的大部分复杂性。
严格来说,客户端并不算是HDFS的一部分。
客户端可以支持打开、读取、写入等常见的操作,并且提供了类似shell的命令行方式来访问HDFS中的数据。
HDFS也提供了Java API,作为应用程序访问文件系统的客户端编程接口。
HDFS单名称节点体系结构的局限性
HDFS只设置唯一一个名称节点,这样做虽然大大简化了系统设计,但也带来了一些明显的局限性,具体如下:
命名空间的限制:名称节点是保存在内存中的,因此,名称节点能够容纳的对象(文件、块)的个数会受到内存空间大小的限制。
性能的瓶颈:整个分布式文件系统的吞吐量,受限于单个名称节点的吞吐量。
隔离问题:由于集群中只有一个名称节点,只有一个命名空间,因此,无法对不同应用程序进行隔离。
集群的可用性:一旦这个唯一的名称节点发生故障,会导致整个集群变得不可用。
HDFS高可靠性(HA)
元数据持久化
HDFS联邦(Federation)
数据副本机制
HDFS数据完整性保障
HDFS主要目的是保证存储数据完整性,对于各组件的失效,做了可靠性处理。
重建失效数据盘的副本数据
DataNode向NameNode周期上报失败时,NameNode发起副本重建动作以恢复丢失副本。
集群数据均衡
HDFS架构设计了数据均衡机制,此机制保证数据在各个DataNode上分布是平均的。
元数据可靠性保证
采用日志机制操作元数据,同时元数据存放在主备NameNode上。
快照机制实现了文件系统常见的快照机制,保证数据误操作时,能及时恢复。
安全模式
HDFS提供独有安全模式机制,在数据节点故障,硬盘故障时,能防止故障扩散。
HDFS架构其他关键设计要点说明
空间回收机制
支持回收站机制,以及副本数的动态设置机制。
数据组织
数据存储以数据块为单位,存储在操作系统的HDFS文件系统上。
访问方式
提供JAVAAPI,HTTP方式,SHELL方式访问HDFS数据。
HDFS3.0 HDFS新特性总结
支持HDFS中的纠删码ErasureEncoding
基于HDFS路由器的联合
支持多个NameNode
DataNode内部添加了负载均衡 DiskBalancer
常用Shell命令
HDFS数据写入流程
HDFS数据读取流程
标签:
推荐阅读
[5.05] 暗喻幻想港中35周年限定版1.03+DLC+金手指+王中王存档
C++和Java开发哪个更有前景?我选C++,你呢?
相关文章
世界最优秀的分布式文件系统架构演进之路
2020-06-12
HDFS和GFS:详解分布式文件系统
2020-04-27
只知道HDFS和GFS?你其实并不懂分布式文件系统
2020-04-04
ChubaoFS:CNCF的新分布式文件系统,来自京东
2020-01-13