CN112241365B - 一种面向Namenode的高效元数据构建和RPC性能提升的方法和装置 - Google Patents
一种面向Namenode的高效元数据构建和RPC性能提升的方法和装置 Download PDFInfo
- Publication number
- CN112241365B CN112241365B CN202010722288.9A CN202010722288A CN112241365B CN 112241365 B CN112241365 B CN 112241365B CN 202010722288 A CN202010722288 A CN 202010722288A CN 112241365 B CN112241365 B CN 112241365B
- Authority
- CN
- China
- Prior art keywords
- namenode
- cluster
- file
- namenodes
- metadata
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种面向Namenode的高效元数据构建和RPC性能提升的方法和装置。该方法通过性能测试工具中的创建文件功能构造文件对象,通过在内存中虚拟出的仅有基本结构的Datanode节点构造文件块对象,由文件对象和文件块对象构成Namenode内存元数据;基于构建的元数据,构造与生产环境相符的Namenode负载状态,并进行Namenode内部扩展和集群扩展,实现RPC性能优化。本发明能够高速构建Namenode元数据,为快速搭建接近生产环境的测试集群提供了帮助,全局锁的拆分能够提升RPC性能,多个Namenode协作管理集群且同时对外提供服务,提供了更高的读写吞吐量。
Description
技术领域
本发明属于大数据技术领域,具体提出一种面向Namenode(管理节点)的高效元数据构建和RPC(Remote Procedure Call,远程过程调用)性能提升的方法和装置。
背景技术
随着计算机存储能力的提升和复杂算法的发展,近年来的数据量成指数型增长,这些趋势使科学技术发展也日新月异,商业模式发生了颠覆式变化。
Hadoop是Apache软件基金会下的开源分布式计算平台,实现在大量计算机组成的集群中对海量数据进行分布式计算,为大数据的分布式存储和计算提供了有效支撑。HDFS是Hadoop的核心组件之一,实现海量数据的分布式存储。HDFS架构采用主从架构(master/slave)。一个典型的HDFS集群包含一个NameNode节点(管理节点)和多个DataNode节点(工作节点)。NameNode节点负责整个HDFS文件系统中的文件的元数据的保管和管理;DataNode负责存储客户端(Client)发来的数据块(Block),执行数据块的读写操作。在此架构设计中HDFS的性能主要取决于Namenode的RPC性能。因此能够快速地构建Namenode的内存元数据以接近真实线上环境、测试Namenode的性能以及RPC性能的优化是提升HDFS性能的关键。
发明内容
本发明的目的是提出一种高效构建Namenode元数据和提升HDFS性能的方法,以支撑大规模集群的测试和扩展。
为实现上述目的,本发明采用的技术方案如下:
一种面向Namenode节点的高效元数据构建方法,包括以下步骤:
通过性能测试工具中的创建文件功能构造文件对象;
在内存中虚拟出仅有基本结构的Datanode节点,通过虚拟的Datanode节点构造文件块对象;
由构造的文件对象和文件块对象,构成Namenode内存元数据。
进一步地,所述虚拟的Datanode节点的字段包含:名称空间信息、Datanode注册信息、块信息列表。
进一步地,所述通过虚拟的Datanode节点构造文件块对象,包括:
在内存中初始化一定数量的TinyDatanode对象,并注册到Namenode中;其中TinyDataNode表示内存中虚拟出来的仅有基本结构的Datanode;
通过HDFS的客户端协议请求Namenode进行块创建,同时将favoredNodes参数设定为初始化的TinyDatanode;
以多线程的方式执行上述逻辑,完成虚拟块的创建。
一种HDFS的RPC性能提升方法,包括以下步骤:
基于本发明方法构建的元数据,构造与生产环境相符的Namenode负载状态;
基于与生产环境相符的Namenode负载状态,进行Namenode内部扩展和集群扩展,实现RPC性能优化。
其中,负载状态是指与生产环境相同的内存映像,具体包括Namenode中的元数据数量以及文件树的结构,保持这些条件相同,以便进行后续的优化和测评。
进一步地,所述Namenode内部扩展,是对Namenode全局锁进行垂直切分,在Namenode内部将与RPC调用有关的重要数据结构进行垂直切分。
进一步地,所述集群扩展,包括:
增加集群中Namenode节点的数量,增加的Namenode节点保持工作状态;
将Namenode节点与HDFS特定路径相绑定,实现Namenode间的隔离和均衡,所有Namenode相互协作,共同管理整个集群。
进一步地,所述的将Namenode节点与HDFS特定路径相绑定,实现Namenode间的隔离和均衡,包括:
为每个Namenode设置一个全局唯一的节点标识,集群通过节点标识管理多个Namenode;
将所有的Datanode存储块抽象为逻辑上的块池,每一个块都有唯一的标识ID,通过将Namenode和逻辑上的块池绑定实现Namenode间的隔离;
将Namenode的Namespace和对应的块池绑定在HDFS集群的特定目录下,实现集群的均衡。
一种电子装置,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行上述方法的指令。
一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现上述方法。
本发明提出的方法具有以下的优点及效果:
1、能够高速构建Namenode元数据。本发明的元数据构建方法可以高速构建Namenode元数据,为快速搭建接近生产环境的测试集群提供了帮助。
2、能够提升RPC性能。全局锁的拆分减少了写锁长时间占用其他所有操作都进入请求队列等待发生的情况,调整后的Namenode性能测试结果显示RPC调用性能提升20%。
3、能够提升集群吞吐量。实验结果表明,多个Namenode扩展下的集群吞吐量和Namenode个数正相关,多个Namenode协作管理集群,且同时对外提供服务,提供更高的读写吞吐量。
附图说明
图1是块构造虚拟Datanode架构示意图。
图2是NameNode全局锁垂直切分示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步详细说明。
本发明的元数据构建基于多线程技术实现,在一个节点(该节点可以是任何一个HDFS集群的节点)上通过客户端协议并发请求Namenode的RPC接口,实现文件对象和文件块对象的高效创建,同时不需要与Datanode交互,不占用真实的物理存储。文件组织方式为每个线程对应Namenode的一个文件夹,每个文件夹下有10000个文件(与机器的硬件性能相关,也可以是其他数量)。
本发明的RPC优化通过Namenode内部的扩展和集群的扩展两个方面实现。内部扩展通过梳理Namenode内存结构、垂直切分Namenode的全局锁,降低Namenode数据结构间的锁竞争,从而降低各个RPC操作的串行度,降低单个Namenode的RPC延迟;集群扩展通过增加active状态(工作状态)的Namenode数量并使之协作处理客户端的请求,提高集群规模上限的同时提高集群的吞吐量。
其中,RPC优化是基于与生产环境相仿的负载状态,元数据的构建也是为了构造和生产环境相像的Namenode负载状态(主要是Namenode内存中元数据的分布情况)。同时构建工具还能提供同时间的大量并发请求,不仅可以模拟生产环境的大量RPC请求,还能够记录请求前后需要的时间,给出性能的量化指标。
1、性能测试工具设计
本发明中Namenode的性能测试工具将HDFS操作分为创建文件、创建文件夹、打开文件、删除文件、重命名文件、获取文件状态六个操作,使用多线程技术并发请求Namenode给Namenode施加压力,同时统计耗时等信息,最后输出统计信息实现一整套的性能测试。工具将RPC地址和线程数作为参数暴露给用户,提供多种并行度的循环测试。
上述创建文件、创建文件夹、打开文件、删除文件、重命名文件、获取文件状态六个操作是根据实际生产环境的操作日志分析得出的,这六个操作占据了HDFS操作访问的绝大多数。
2、元数据高效构建工具设计
Namenode内存元数据主要由文件对象和文件块对象构成。
文件对象可以通过性能测试工具中的创建文件功能构造,用户只需在配置文件中设定要构造的文件对象数即可。通过性能测试工具中的创建文件功能构造文件对象的方法是:将构造程序通过shell脚本进一步封装,用户可以在命令行中直接运行。用户需要提供脚本的三个参数:HDFS集群的地址、用来构造数据的线程数和每个线程创建的元数据数量。
文件块对象的构造比文件对象的构造要复杂,对HDFS的细节调研显示文件块对象的操作需要Datanode的支持。为了不违反不占用物理空间、不与集群中Datanode交互(那样会严重影响构造的速度)的设计理念,根据HDFS的模型抽象了Datanode的基本机构,在内存中虚拟出仅有基本结构的Datanode用以支持文件块对象的构造。同时加入多线程的技术,实现Namenode的文件块对象的高速创建,块的数量和虚拟Datanode数量也需要在配置文件中设置。
图1是块构造虚拟Datanode架构示意图,其中TinyDataNode表示内存中虚拟出来的仅有基本结构的Datanode。通过对HDFS块读写机制的调研,发现块的读写与Datanode的交互不可分割,为了既不占用物理存储,又不破坏HDFS本身的机制,本发明将必要的Datanode属性抽取出来,构造新的类TinyDatanode辅助块的元数据构造。其中:TinyDatanode字段只包含NamespaceInfo(名称空间信息)、DatanodeRegistration(Datanode注册信息)、blocks(块信息列表)等;TinyDatanode方法只包含register(向Namenode注册)、sendHearbeat(发送心跳)等。
在得到虚拟的DataNode节点即TinyDataNode后,采用以下方法构造文件块对象:
1)在内存中初始化一定数量的TinyDatanode对象,并注册到Namenode中;
2)通过HDFS的客户端协议请求Namenode进行块创建,同时将favoredNodes()参数设定为初始化的TinyDatanode;其中favoredNodes是程序内部的一个参数,此参数的设置可以将文件块指定到某些特定的TinyDatanode上,可以称为偏好的节点;
3)以多线程的方式执行上述逻辑,完成虚拟块的创建。
3、集群规模扩展设计
单个Namenode不仅管理的Datanode数量是有限的,RPC的性能也是有限的。无法支撑大规模集群的扩展和吞吐量的要求。集群的扩展提升仿照HDFS高可用的思路,增加集群Namenode的数量,同时增加的Namenode保持active状态。通过将Namenode与整个HDFS特定路径相绑定实现Namenode间的隔离和均衡。所有Namenode相互协作,共同管理整个集群。
其中,“将Namenode与整个HDFS特定路径相绑定实现Namenode间的隔离和均衡”的方法是:
1)为每个Namenode设置一个全局唯一的节点标识,集群通过节点标识管理多个Namenode;
2)将所有的Datanode存储块抽象为逻辑上的Block Pool(块池),每一个块都有唯一的标识ID,通过将Namenode和逻辑上的块池绑定实现Namenode间的隔离;
3)将Namenode的Namespace(名称空间)和对应的块池绑定在HDFS集群的特定目录下,例如namenode1绑定到/user,namenode2绑定到/tmp等,实现集群的均衡。
4、Namenode RPC性能提升改进设计
通过对Namenode RPC流程上实现细节的调研,发现制约Namenode RPC性能表现的核心问题在于全局唯一锁。因此降低全局锁(FSNamesystemLock)的粒度是提升NamenodeRPC性能的可选路线。借鉴集群规模的扩展思路,在Namenode内部将与RPC调用有关的重要数据结构垂直切分,相当于在Namenode进程内做扩展。
其中Namespace变化成两级管理结构:RangeMap(Range-GSet)和GSet(Key-INode/BlockInfo)。其中,RangeMap表示域映射;Range-GSet表示域集合;Range表示域,即单Namenode划分的内部子Namenode;GSet表示子Namenode的节点映射;Key-INode表示节点映射中的键值对;BlockInfo表示块信息。Range内独享锁,且Range之间可以并行访问;跨Range的多元操作按照Range排序后顺序加锁,避免死锁;当单进程整体负载较高时,Range重新分配独立进程,实现动态切分目录树的效果。
图2是NameNode全局锁垂直切分示意图。其中,NameNodePart1、NameNodePart2、NameNodePart3表示单Namenode划分的内部子Namenode;INodeMap表示节点映射,Part-Gset表示子Namenode的节点映射,BlocksMap表示块映射,DataNode Manager表示Namenode内部管理Datanode的组件。
性能测试工具的测试结果显示,垂直切分Namenode内部重要数据结构全局锁可以将RPC调用性能提升20%。
基于同一发明构思,本发明的另一个实施例提供一种电子装置(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。
基于同一发明构思,本发明的另一个实施例提供一种计算机可读存储介质(如ROM/RAM、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。
本发明未详细阐述的部分属于本领域技术人员的公知技术。
以上公开的本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例和附图所公开的内容,本发明的保护范围以权利要求书界定的范围为准。
Claims (8)
1.一种面向Namenode节点的高效元数据构建方法,其特征在于,包括以下步骤:
通过性能测试工具中的创建文件功能构造文件对象;
在内存中虚拟出仅有基本结构的Datanode节点,通过虚拟的Datanode节点构造文件块对象;
由构造的文件对象和文件块对象,构成Namenode内存元数据;
所述通过虚拟的Datanode节点构造文件块对象,包括:
在内存中初始化一定数量的TinyDatanode对象,并注册到Namenode中;其中TinyDataNode表示内存中虚拟出来的仅有基本结构的Datanode;
通过HDFS的客户端协议请求Namenode进行块创建,同时将favoredNodes参数设定为初始化的TinyDatanode;
以多线程的方式执行上述逻辑,完成虚拟块的创建。
2.根据权利要求1所述的方法,其特征在于,所述虚拟的Datanode节点的字段包含:名称空间信息、Datanode注册信息、块信息列表。
3.一种HDFS的RPC性能提升方法,其特征在于,包括以下步骤:
基于权利要求1或2所述方法构建的元数据,构造与生产环境相符的Namenode负载状态;
基于与生产环境相符的Namenode负载状态,进行Namenode内部扩展和集群扩展,实现RPC性能优化。
4.根据权利要求3所述的方法,其特征在于,所述Namenode内部扩展,是对Namenode全局锁进行垂直切分,在Namenode内部将与RPC调用有关的重要数据结构进行垂直切分。
5.根据权利要求3所述的方法,其特征在于,所述集群扩展,包括:
增加集群中Namenode节点的数量,增加的Namenode节点保持工作状态;
将Namenode节点与HDFS特定路径相绑定,实现Namenode间的隔离和均衡,所有Namenode相互协作,共同管理整个集群。
6.根据权利要求5所述的方法,其特征在于,所述的将Namenode节点与HDFS特定路径相绑定,实现Namenode间的隔离和均衡,包括:
为每个Namenode设置一个全局唯一的节点标识,集群通过节点标识管理多个Namenode;
将所有的Datanode存储块抽象为逻辑上的块池,每一个块都有唯一的标识ID,通过将Namenode和逻辑上的块池绑定实现Namenode间的隔离;
将Namenode的Namespace和对应的块池绑定在HDFS集群的特定目录下,实现集群的均衡。
7.一种电子装置,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1~6中任一权利要求所述方法的指令。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现权利要求1~6中任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010722288.9A CN112241365B (zh) | 2020-07-24 | 2020-07-24 | 一种面向Namenode的高效元数据构建和RPC性能提升的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010722288.9A CN112241365B (zh) | 2020-07-24 | 2020-07-24 | 一种面向Namenode的高效元数据构建和RPC性能提升的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112241365A CN112241365A (zh) | 2021-01-19 |
CN112241365B true CN112241365B (zh) | 2022-09-30 |
Family
ID=74171100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010722288.9A Active CN112241365B (zh) | 2020-07-24 | 2020-07-24 | 一种面向Namenode的高效元数据构建和RPC性能提升的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112241365B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1304961C (zh) * | 2005-03-11 | 2007-03-14 | 清华大学 | 基于元数据服务器的存储虚拟化管理方法 |
CN103279489A (zh) * | 2013-04-25 | 2013-09-04 | 安科智慧城市技术(中国)有限公司 | 一种元数据的存储方法、装置 |
CN103475732A (zh) * | 2013-09-25 | 2013-12-25 | 浪潮电子信息产业股份有限公司 | 一种基于虚拟地址池的分布式文件系统数据卷部署方法 |
CN106844184A (zh) * | 2017-02-20 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种分布式系统元数据性能测试方法、脚本及工具 |
US10789217B2 (en) * | 2018-06-22 | 2020-09-29 | Microsoft Technology Licensing, Llc | Hierarchical namespace with strong consistency and horizontal scalability |
-
2020
- 2020-07-24 CN CN202010722288.9A patent/CN112241365B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112241365A (zh) | 2021-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tantisiriroj et al. | On the duality of data-intensive file system design: reconciling HDFS and PVFS | |
Xu et al. | Integrating hadoop and parallel dbms | |
US20160267132A1 (en) | Abstraction layer between a database query engine and a distributed file system | |
Mikami et al. | Using the Gfarm File System as a POSIX compatible storage platform for Hadoop MapReduce applications | |
Pandey | Performance benchmarking and comparison of cloud-based databases MongoDB (NoSQL) vs MySQL (Relational) using YCSB | |
US11687513B2 (en) | Virtual data source manager of data virtualization-based architecture | |
US11960616B2 (en) | Virtual data sources of data virtualization-based architecture | |
US11263026B2 (en) | Software plugins of data virtualization-based architecture | |
Serbanescu et al. | Architecture of distributed data aggregation service | |
CN112241365B (zh) | 一种面向Namenode的高效元数据构建和RPC性能提升的方法和装置 | |
Liu et al. | Massively parallel I/O for partitioned solver systems | |
Saxena et al. | Concepts of HBase archetypes in big data engineering | |
Ali et al. | Revisiting the metadata architecture of parallel file systems | |
Mishra et al. | On-disk data processing: Issues and future directions | |
Tanase et al. | System G distributed graph database | |
Gupta et al. | Correlation and comparison of nosql specimen with relational data store | |
US20200125650A1 (en) | Lazy virtual filesystem instantiation and caching | |
Yu et al. | MPDBS: A multi-level parallel database system based on B-Tree | |
Tanvir et al. | Translytics: A Novel Approach for Runtime Selection of Database Layout Based on User’s Context | |
Zhang et al. | An Efficient Massive Data Processing Model in the Cloud--A Preliminary Report | |
US11803568B1 (en) | Replicating changes from a database to a destination and modifying replication capacity | |
Ren et al. | File system performance tuning for standard big data benchmarks | |
Rong et al. | Scaling a Declarative Cluster Manager Architecture with Query Optimization Techniques (Technical Report) | |
Padulano et al. | A caching mechanism to exploit object store speed in High Energy Physics analysis | |
Padulano et al. | submitter: A caching mechanism to exploit object store speed in High Energy Physics analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |