【赵渝强老师】基于ViewFS的HDFS联邦架构

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 本文介绍了HDFS联盟(Federation)的概念及其在大数据存储中的应用。HDFS联盟通过允许多个NameNode管理不同的命名空间,实现了负载均衡和NameNode的水平扩展。文章还详细解释了基于ViewFS的联盟架构,以及该方案的局限性。附带的视频进一步讲解了相关概念。

b059.png

在实际的生产环境中,一般都会搭建HDFS的集群来进行大数据文件的存储。而作为集群来说,应该提供基本负载均衡的功能。HDFS的联盟Federation便是负载均衡的一种具体实现方式。另一方面,通过使用HDFS的联盟Federation也可以对NameNode进行水平的扩展。

   

视频讲解如下:


一、什么是联盟?

 

HDFS提供的存储服务实际上包含两个部分,即:命名空间管理(Namespace management)和块存储管理服务(Block/Storage management)。HDFS中的目录、文件和数据块都属于命名空间。命名空间管理则是指对目录和文件的基本操作,如:创建、修改、删除等;而块存储管理服务则主要负责将数据按照数据块进行存储。图1(摘自Hadoop官网)明了它们之间的关系。


   

如果在整个HDFS中只存在一个命名空间并且只由一个NameNode来维护,必然存在单点故障的问题;也不利于集群的扩展和性能的提高。因此,HDFS引入了联盟的机制。简单来说,就是让HDFS可以支持多个命名空间,并由不同的NameNode来进行维护。

 

图2(摘自Hadoop官网)使用了多个NameNode来维护不同的命名空间,就相当于在MySQL数据库中创建不同的数据库一样,它们彼此之间可以相互逻辑隔离。尽管是不同的命名空间,但是从数据块存储的角度来看,这些NameNode维护的命名空间是使用的共享存储的方式来存储数据块,即:后端的DataNode将会为每一个命名空间提供存储的空间。

   

另一方面,由于NameNode会接收客户端的请求。如果存在多个NameNode,那么客户端的请求应该由谁进行处理呢?这时候我们就需要有ViewFS(视图文件系统)的支持。ViewFS的本质就是一系列的路由规则,这些路由规则需要事先创建好。客户端的请求先提交到ViewFS上,再根据事先配置好的路由规则,进而转发给不同的NameNode进行处理。


二、基于ViewFS的联盟架构

   

下图展示了以四个节点为例来部署联盟的架构。这里使用了四台虚拟机,分别是:bigdata112、bigdata113、bigdata114和bigdata115。在bigdata112和bigdata113上分别部署两个NameNode;在bigdata114和bigdata115上各部署一个DataNode。而ViewFS可以跟NameNode部署在同一个节点上,即:bigdata112和bigdata113。


   

在解决NameNode扩展能力方面,HDFS虽然提供了ViewFS的联盟架构,但这个方案有很强的局限性,主要体现在以下几个方面:


  • HDFS路径Scheme需要变为ViewFs,ViewFs路径和其他Scheme路径互不兼容。比如DistributedFileSystem无法处理ViewFs的路径,也就是说如果启用ViewFS,则需要将Hive的元数据管理、ETL脚本、MR/Spark作业中的所有HDFS路径修改为ViewFS。
  • ViewFS是基于客户端实现的,需要用户在客户端进行相关的配置,那么后面对客户端升级就会比较困难,这个客户端相当于重客户端了。
  • 新增或者修改路径映射,需要多方配合完成,维护成本比较高。



相关文章
|
7天前
|
大数据
【赵渝强老师】大数据主从架构的单点故障
大数据体系架构中,核心组件采用主从架构,存在单点故障问题。为提高系统可用性,需实现高可用(HA)架构,通常借助ZooKeeper来实现。ZooKeeper提供配置维护、分布式同步等功能,确保集群稳定运行。下图展示了基于ZooKeeper的HDFS HA架构。
|
7天前
|
SQL 存储 数据库
【赵渝强老师】基于Flink的流批一体架构
本文介绍了Flink如何实现流批一体的系统架构,包括数据集成、数仓架构和数据湖的流批一体方案。Flink通过统一的开发规范和SQL支持,解决了传统架构中的多套技术栈、数据链路冗余和数据口径不一致等问题,提高了开发效率和数据一致性。
|
7天前
|
存储 Oracle NoSQL
【赵渝强老师】Oracle的体系架构
Oracle数据库的核心在于其体系架构,主要包括数据库与实例、存储结构、进程结构和内存结构。数据库由物理文件组成,实例则是内存和进程的组合。存储结构分为逻辑和物理两部分,进程结构涉及多个后台进程如SMON、PMON、DBWn等,内存结构则包含SGA和PGA。掌握这些知识有助于更好地管理和优化Oracle数据库。
|
7天前
|
存储 分布式计算 Hadoop
【赵渝强老师】HDFS数据上传和下载的过程
本文介绍了Hadoop的HDFS中客户端如何通过NameNode上传和下载数据。上传时,数据按块保存至DataNode并实现冗余;下载时,客户端从DataNode获取数据块。文中配有详细流程图及B站视频讲解。
|
7天前
|
SQL 分布式计算 Java
【赵渝强老师】Hive的体系架构
Hive是基于Hadoop的数据仓库平台,提供SQL-like的HQL语言进行数据分析,无需编写复杂的Java代码。Hive支持丰富的数据模型,可将SQL语句转换为MapReduce任务在Yarn上运行,底层依赖HDFS存储数据。Hive可通过CLI、JDBC和Web界面执行SQL查询。
|
6天前
|
存储 缓存 NoSQL
【赵渝强老师】Memcached集群的架构
Memcached 是一个高性能的分布式内存对象缓存系统,通过在内存中维护一个巨大的 Hash 表来存储各种格式的数据,如图像、视频、文件及数据库检索结果等。它主要用于减轻数据库压力,提高网站系统的性能。Memcached 不支持数据持久化,因此仅作为缓存技术使用。其数据分布式存储由客户端应用程序实现,而非服务端。
【赵渝强老师】Memcached集群的架构
|
7天前
|
调度 Docker 容器
【赵渝强老师】Docker Swarm集群的体系架构
Docker Swarm自1.12.0版本起集成至Docker引擎,无需单独安装。它内置服务发现功能,支持跨多服务器或宿主机创建容器,形成集群提供服务。相比之下,Docker Compose仅限于单个宿主机。Docker Swarm采用主从架构,Swarm Manager负责管理和调度集群中的容器资源,用户通过其接口发送指令,Swarm Node根据指令创建容器运行应用。
|
7天前
|
存储 缓存 分布式计算
【赵渝强老师】基于RBF的HDFS联邦架构
最新版Hadoop实现了基于Router的联盟架构,增强了集群管理能力。Router将挂载表从客户端中分离,解决了ViewFS的问题。RBF架构包括Router和State Store两个模块,其中Router作为代理服务,负责解析ViewFS并转发请求至正确子集群,State Store则维护子集群的状态和挂载表信息。
|
7天前
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB复制集的体系架构
MongoDB的复制集是一种集群技术,由一个Primary节点和多个Secondary节点组成,实现数据的高可用性。Primary节点处理写入请求,Secondary节点同步数据。当Primary节点故障时,Secondary节点可通过选举成为新的Primary节点。视频讲解和示意图详见正文。
|
7天前
|
存储 缓存 监控
【赵渝强老师】HBase的体系架构
本文介绍了HBase的体系架构,包括HMaster、RegionServer和ZooKeeper的主要功能。HMaster负责Region的分配和管理,RegionServer处理数据的读写操作,ZooKeeper维护集群状态并协调分布式系统的运行。文章还详细解释了Region、WAL预写日志、Block Cache读缓存和MemStore写缓存的作用。