CN117331886A - 一种将Hadoop的数据平滑迁移至对象存储的方法及装置 - Google Patents

一种将Hadoop的数据平滑迁移至对象存储的方法及装置 Download PDF

Info

Publication number
CN117331886A
CN117331886A CN202311258465.2A CN202311258465A CN117331886A CN 117331886 A CN117331886 A CN 117331886A CN 202311258465 A CN202311258465 A CN 202311258465A CN 117331886 A CN117331886 A CN 117331886A
Authority
CN
China
Prior art keywords
data
data synchronization
hadoop
node
copy
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.)
Pending
Application number
CN202311258465.2A
Other languages
English (en)
Inventor
周朝卫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unihub China Information Technology Co Ltd
Original Assignee
Unihub China Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Unihub China Information Technology Co Ltd filed Critical Unihub China Information Technology Co Ltd
Priority to CN202311258465.2A priority Critical patent/CN117331886A/zh
Publication of CN117331886A publication Critical patent/CN117331886A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/119Details of migration of file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种将Hadoop的数据平滑迁移至对象存储的方法及装置,其中,该方法包括:暂停Hadoop写操作,从主NameNode备份元数据,记录HDFS的JournalNode的编辑日志当前的最大偏移量,下线已备份的NameNode元数据中每个Block块的其中一个副本,恢复Hadoop写操作;解析已备份的NameNode元数据,建立DataNote节点和已下线Block块副本的映射关系,数据同步任务分解,同步数据并限制数据同步的速率;以记录的HDFS的JournalNode的编辑日志当前的最大偏移量作为起点,同步HDFS的JournalNode的编辑日志记录的数据变更的操作信息,基于数据变更的操作信息增量同步数据,平滑迁移。该方法及装置将Hadoop的数据平滑迁移至对象存储,可进行分布式的数据同步,不影响线上正常业务的运行效率,支持热迁移。

Description

一种将Hadoop的数据平滑迁移至对象存储的方法及装置
技术领域
本发明涉及对象存储架构领域,尤其是一种将Hadoop的数据平滑迁移至对象存储的方法及装置。
背景技术
1、为什么要将数据从Hadoop迁移至对象存储
传统的大数据平台一般是基于Hadoop的,随着现代数据技术栈的发展,Hadoop的问题也不断的显现出来,主要表现有:
(1)存储管理复杂性:Hadoop的分布式文件系统HDFS(Hadoop Distributed FileSystem)需要管理块存储,而且需要定期进行数据块的复制和分片等操作,这增加了存储管理的复杂性。
(2)硬件成本高:Hadoop集群通常需要大量的物理服务器以及额外的网络设备和存储设备,这导致硬件成本相对较高。
(3)扩展性挑战:尽管Hadoop可以实现横向扩展,但添加新节点并不总是简单的。配置、调优和维护新节点都需要一定的技术知识,这可能会增加部署和维护的复杂性。
(4)资源浪费:在Hadoop中,每个节点通常都要存储多份数据副本,以实现容错。这可能导致存储资源的浪费,特别是对于不太重要或不需要高可用性的数据。
(5)数据访问速度:传统Hadoop在处理小文件时可能会存在性能问题,因为需要管理大量小文件的元数据,这可能导致较低的数据访问速度。
(6)数据存储效率:Hadoop通常使用块存储,这可能会导致数据存储的效率不高,特别是对于稀疏数据和小文件。
相比之下,对象存储(OSS)在一定程度上可以缓解上述问题。对象存储通常使用分布式、扁平的存储体系结构,不需要像HDFS那样复杂的管理和复制。对象存储还提供更好的数据访问速度,适合存储大量的小文件和大文件,适用于各种不同的用例,包括备份、存档、图像和视频存储、数据湖以及内容分发等,它们可以用于存储不同类型的数据,而不仅限于大数据处理。对象存储可以轻松实现全球数据分布,使数据在不同地理位置之间进行迁移变得更加简单,有助于满足合规性和数据本地化要求。此外,对象存储通常具有更好的可扩展性和灵活性,并且在云环境中更为常见,使得资源的配置和管理更加简化。
2、将数据从Hadoop迁移至对象存储的挑战
基于Hadoop存在的上述问题以及对象存储的上述优点,越来越多的企业将大数据平台从Hadoop升级为对象存储,但是如何将Hadoop的数据平滑迁移至对象存储,存在如下挑战:
(1)同步效率低:Hadoop存储的数据量非常大,甚至超过PB级别,如此庞大的数据量迁移至对象存储,同步的时间长,效率低。
(2)影响线上正常业务的运行效率:巨量的数据同步将会导致极高的磁盘IO和网络IO占用,甚至影响线上正常业务的运行效率。
(3)难以支持热迁移:如果不停止服务迁移数据,迁移期过程中,大数据集群无时无刻进行着数据的上传、删除和移动等变更动作,难以保证迁移前后数据的一致性。而为了保证Hadoop的数据和对象存储的数据的一致性,通常在迁移期间需要停止Hadoop服务,停止服务的时间越长,对线上业务的影响就越大。
发明内容
为解决现有技术存在的上述问题,本发明提供一种将Hadoop的数据平滑迁移至对象存储的方法及装置,将Hadoop的数据平滑迁移至对象存储,可进行分布式的数据同步,不影响线上正常业务的运行效率,支持热迁移。
为实现上述目的,本发明采用下述技术方案:
在本发明一实施例中,提出了一种将Hadoop的数据平滑迁移至对象存储的方法,该方法包括:
创建NameNode元数据的拷贝:暂停Hadoop的写操作,从主NameNode备份元数据,记录HDFS的JournalNode的编辑日志当前的最大偏移量,下线已备份的NameNode元数据中任一个Block块副本,恢复Hadoop的写操作;
存量数据同步:解析已备份的NameNode元数据,建立DataNote节点和已下线Block块副本的映射关系,数据同步任务分解,同步数据并限制数据同步的速率;
增量数据同步:以记录的HDFS的JournalNode的编辑日志当前的最大偏移量作为起点,同步HDFS的JournalNode的编辑日志记录的数据变更的操作信息,基于数据变更的操作信息增量同步数据,平滑迁移。
进一步地,当数据同步至对象存储的进度与数据写入Hadoop的进度保持一致时,将数据的入库程序、清洗程序以及分析程序接入对象存储。
进一步地,数据同步任务分解,包括:
若DataNode节点需要同步的文件和已下线Block块副本为一对一,则主服务将数据同步任务下发至已下线Block块副本所在的DataNode节点;
若DataNode节点需要同步的文件和已下线Block块副本为一对多,则主服务将数据同步任务下发至最大的已下线Block块副本所在的DataNode节点,若存在两个相同大小的已下线Block块副本,则随机选择一个已下线Block块副本所在的DataNode节点。
进一步地,同步数据,包括:
若当前DataNode节点需要同步的文件只对应一个已下线Block块副本,则该DataNode节点上部署的从服务从当前DataNode节点的磁盘读取已下线Block块副本的数据,发送至对象存储;
若当前DataNode节点需要同步的文件对应两个及以上已下线Block块副本,则该DataNode节点上部署的从服务从当前DataNode节点的磁盘读取已下线Block块副本的数据,并从其它DataNode节点拉取已下线Block块副本的数据,将这些已下线Block块副本的数据拼接,发送至对象存储。
进一步地,限制数据同步的速率,包括:
在每台HDFS的DataNode节点,初始化一个数据同步队列,该数据同步队列的容量固定;数据同步队列中的元素,用于触发一次数据同步请求;
数据同步队列中的元素以固定的速率生成,生成的元素被放置到数据同步队列中;
数据同步队列有一个容量限制,若数据同步队列已满,并且没有新的元素生成,则多余的数据同步请求将无法获取到元素,从而限制了数据同步的速率。
在本发明一实施例中,还提出了一种将Hadoop的数据平滑迁移至对象存储的装置,该装置包括:
创建NameNode元数据的拷贝模块,用于暂停Hadoop的写操作,从主NameNode备份元数据,记录HDFS的JournalNode的编辑日志当前的最大偏移量,下线已备份的NameNode元数据中任一个Block块副本,恢复Hadoop的写操作;
存量数据同步模块,用于解析已备份的NameNode元数据,建立DataNote节点和已下线Block块副本的映射关系,数据同步任务分解,同步数据并限制数据同步的速率;
增量数据同步模块,用于以记录的HDFS的JournalNode的编辑日志当前的最大偏移量作为起点,同步HDFS的JournalNode的编辑日志记录的数据变更的操作信息,基于数据变更的操作信息增量同步数据,平滑迁移。
进一步地,当数据同步至对象存储的进度与数据写入Hadoop的进度保持一致时,将数据的入库程序、清洗程序以及分析程序接入对象存储。
进一步地,数据同步任务分解,包括:
若DataNode节点需要同步的文件和已下线Block块副本为一对一,则主服务将数据同步任务下发至已下线Block块副本所在的DataNode节点;
若DataNode节点需要同步的文件和已下线Block块副本为一对多,则主服务将数据同步任务下发至最大的已下线Block块副本所在的DataNode节点,若存在两个相同大小的已下线Block块副本,则随机选择一个已下线Block块副本所在的DataNode节点。
进一步地,同步数据,包括:
若当前DataNode节点需要同步的文件只对应一个已下线Block块副本,则该DataNode节点上部署的从服务从当前DataNode节点的磁盘读取已下线Block块副本的数据,发送至对象存储;
若当前DataNode节点需要同步的文件对应两个及以上已下线Block块副本,则该DataNode节点上部署的从服务从当前DataNode节点的磁盘读取已下线Block块副本的数据,并从其它DataNode节点拉取已下线Block块副本的数据,将这些已下线Block块副本的数据拼接,发送至对象存储。
进一步地,限制数据同步的速率,包括:
在每台HDFS的DataNode节点,初始化一个数据同步队列,该数据同步队列的容量固定;数据同步队列中的元素,用于触发一次数据同步请求;
数据同步队列中的元素以固定的速率生成,生成的元素被放置到数据同步队列中;
数据同步队列有一个容量限制,若数据同步队列已满,并且没有新的元素生成,则多余的数据同步请求将无法获取到元素,从而限制了数据同步的速率。
在本发明一实施例中,还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述将Hadoop的数据平滑迁移至对象存储的方法。
在本发明一实施例中,还提出了一种计算机可读存储介质,计算机可读存储介质存储有执行将Hadoop的数据平滑迁移至对象存储的方法的计算机程序。
有益效果:
1、同步效率高:在Hadoop的每个DataNode节点,分别执行数据同步,效率高。
2、不影响线上正常业务的运行效率:巨量的数据同步任务下发至每个DataNode节点,并且支持对数据同步的操作进行限速。
3、支持热迁移:在数据同步的过程中,只有在NameNode元数据拷贝期间暂停大数据集群的写操作,且暂停的时间较短。在NameNode元数据拷贝完成之后,大数据集群无时无刻进行着数据的上传、删除、移动等变更操作,这些操作均可同步至对象存储。
4、迁移平滑:在数据同步至对象存储期间,数据的入库、清洗、分析等程序可提前接入对象存储。数据同步至对象存储的进度已经和数据写入Hadoop的进度保持一致,即可将入库、清洗、分析等所有程序接入对象存储,实现平滑迁移。
附图说明
图1是本发明的将Hadoop的数据平滑迁移至对象存储的方法流程示意图;
图2是本发明一实施例的存量数据同步的架构图;
图3是本发明的将Hadoop的数据平滑迁移至对象存储的装置结构示意图;
图4是本发明的计算机设备结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神,应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种将Hadoop的数据平滑迁移至对象存储的方法及装置,Hadoop的数据同步至对象存储,拆分为两个步骤:(1)同步存量数据;(2)存量数据同步完成之后,同步增量数据。在存量数据同步之前,暂停Hadoop大数据集群的写操作,拷贝NameNode元数据,并下线每个Block块的其中一个副本,由于下线后的Block块副本不再有任何的修改、删除等操作,因此,使用该Block块副本进行存量数据的同步。在拷贝NameNode元数据完成之后,恢复Hadoop大数据集群的写操作。存量数据的同步操作分发至大数据集群的DataNode节点,分布式执行。为了避免对线上业务造成影响,对同步的速度进行限制。在拷贝NameNode元数据完成之后,Hadoop大数据集群可执行写操作,产生数据的新增、删除、修改等变更操作,将这些变更操作信息记录在HDFS的JournalNode的Edit Log(编辑日志)中,通过定期同步JournalNode的Edit Log(编辑日志)至消息队列Kafka或者文件系统中,增量数据同步的程序消费消息队列kafka或者文件系统中的数据,每次取一个批次的变更操作信息,并对变更操作信息进行合并后形成数据同步的内容,再根据数据同步的内容执行增量数据同步的操作,从而可以保证在Hadoop大数据集群可正常读写的前提下,完成数据的热迁移。在数据同步至对象存储期间,数据的入库、清洗、分析等程序可提前接入对象存储。数据同步至对象存储的进度已经和数据写入Hadoop的进度一致时,可将入库、清洗、分析等所有程序接入对象存储,实现平滑迁移。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
图1是本发明的将Hadoop的数据平滑迁移至对象存储的方法流程示意图。如图1所示,该方法包括:
创建NameNode元数据的拷贝:暂停Hadoop的写操作,从主NameNode备份元数据,记录HDFS的JournalNode的编辑日志当前的最大偏移量,下线已备份的NameNode元数据中任一个Block块副本,恢复Hadoop的写操作。
在HDFS中,有一个关键的组件叫做NameNode,它负责管理文件系统的元数据(例如文件和目录的信息)。为了确保即使在NameNode发生故障的情况下,数据也能够恢复,HDFS使用了JournalNode来记录所有的文件系统操作。
当在HDFS上进行写入操作时,例如创建新文件或修改现有文件,这些操作会首先被记录到JournalNode中。JournalNode接收到这些操作后,将它们存储在持久化的日志文件中,并确保它们被复制到其他JournalNode节点上,以提供冗余备份。
存量数据同步:解析已备份的NameNode元数据,建立DataNote节点和已下线Block块副本的映射关系,数据同步任务分解,同步数据并限制数据同步的速率,存量数据同步完成。
增量数据同步:以记录的HDFS的JournalNode的编辑日志当前的最大偏移量作为起点,同步HDFS的JournalNode的编辑日志记录的数据变更的操作信息至消息队列Kafka或者文件系统等中,基于数据变更的操作信息增量同步数据,平滑迁移。
通过最大偏移量可以定位到编辑日志中,在创建完成NameNode元数据的拷贝后,NameNode元数据记录在编辑日志中结束的位置。等全量备份完成后,从这个记录的位置开始读取数据,也就是读取数据的增加、删除、修改等操作。
由于数据是源源不断写入Hadoop的,而Hadoop的数据又需要同步至对象存储。当数据同步至对象存储的进度与数据写入Hadoop的进度保持一致,即写入Hadoop的数据可以比较及时的被同步至对象存储,而没有被阻塞时,将数据的入库程序、清洗程序以及分析程序等接入对象存储。
需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
为了对上述将Hadoop的数据平滑迁移至对象存储的方法进行更为清楚的解释,下面结合一个具体的实施例来进行说明,然而值得注意的是该实施例仅是为了更好地说明本发明,并不构成对本发明不当的限定。
1、创建NameNode元数据的拷贝
为了确保Hadoop的高可用性和数据的一致性,在拷贝NameNode元数据的过程中,会暂停Hadoop大数据集群的写操作,但读操作仍然可用。由于该操作仅涉及对NameNode元数据的拷贝,速度较快,因此写操作的暂停时间很短,对业务的影响较小。
具体的流程如下:
(1)启用安全模式,停止写数据的操作,但允许读取数据。
(2)从主NameNode备份元数据。
(3)记录JournalNode的Edit Log(编辑日志)当前的最大偏移量。
(4)下线副本数据。解析备份的NameNode元数据,针对每个Block块,下线其中的一个副本,作为下线副本,并在已备份的NameNode元数据中标记已下线Block块副本的状态为下线。下线的Block块副本不再用于数据的查询、修改、删除等操作。
(5)退出安全模式,恢复写数据的操作。
创建NameNode元数据拷贝后,随后将进行以下两个流程:
流程1:根据NameNode元数据拷贝,将存量数据同步到对象存储中。
流程2:从JournalNode同步数据变更的操作信息,提取新增文件、删除文件、添加块、删除块等关键操作,作为文件系统变更操作日志。以创建NameNode元数据拷贝期间记录的JournalNode的Edit Log(编辑日志)当前的最大偏移量作为起点,从JournalNode同步数据变更的操作信息。在存量数据同步完成后,根据文件系统变更操作日志,同步增量数据。
流程1的关键难点在于,如何在每个数据节点上执行分布式的数据同步,以及如何限制数据同步的速率,以免对线上环境造成影响。
流程2的关键难点在于,如何根据日志回放增量数据同步的过程。
2、存量数据同步
(1)存量数据同步的架构
存量数据同步采用比较常规的主从架构,分为主服务和从服务。主服务作为中心节点,负责将数据同步任务进行分解。从服务部署在Hadoop的每个DataNode节点,用于接收主服务的数据同步的指令,并执行数据的同步,如图2所示。
(2)主服务是如何控制数据同步的主服务的工作流程如下:
(a)解析已备份的NameNode数据
(b)建立DataNode节点和已下线Block块副本的映射关系
从已备份的NameNode元数据中提取标记了下线状态的Block块副本,将DataNode节点和标记了下线状态的Block块副本建立映射关系。
一个DataNode节点对应多个标记了下线状态的Block块副本。映射关系的结构如下:
(c)数据同步任务分解
DataNode节点需要同步的文件是由已下线Block块副本组成的,即一个DataNode节点需要同步的文件由一个或一个以上的已下线Block块副本组成。DataNode节点需要同步的文件和已下线Block块副本之间的关系有两种:
DataNode节点需要同步的文件和已下线Block块副本:一对一的关系。
DataNode节点需要同步的文件和已下线Block块副本:一对多的关系。
在大部分场景下,DataNode节点需要同步的文件和已下线Block块副本是一对一的关系。但有少部分的DataNode节点需要同步的文件,是由两个及以上的已下线Block块副本组成。
DataNode节点需要同步的文件和已下线Block块副本为一对一:将数据同步任务下发至已下线Block块副本所在的DataNode节点。
DataNode节点需要同步的文件和已下线Block块副本为一对多:将数据同步任务下发至最大的已下线Block块副本所在的DataNode节点,如果存在两个相同大小的已下线Block块副本,随机选择一个已下线Block块副本所在的DataNode节点。
从服务部署在DataNode节点上,接收主服务下发的数据同步任务,执行数据同步操作。
(3)从服务是如何同步数据并限速的
在每台HDFS的DataNode节点上部署从服务,接收主服务发送过来的指令以及当前DataNode节点需要同步的文件和已下线Block块副本信息。执行如下的操作:
(a)如果当前DataNode节点需要同步的文件只对应一个已下线Block块副本,则表示该已下线Block块副本归属当前的DataNode节点,从当前的DataNode节点的磁盘读取已下线Block块副本的数据,然后发送至对象存储。
(b)如果当前DataNode节点需要同步的文件对应两个及以上已下线Block块副本,则表示最大的已下线Block块副本在当前的DataNode节点,其它的已下线Block块副本在其他DataNode节点存储,则从当前DataNode节点的磁盘读取已下线Block块副本的数据,并从其它DataNode节点拉取已下线Block块副本的数据,将这些已下线Block块副本的数据拼接,发送至对象存储。
由于在每个DataNode节点执行数据发送至对象存储的操作,为了避免对线上的业务造成影响,如何避免限制数据同步的速率,需要解决,具体的实现思路如下:
(a)在每台HDFS的DataNode节点,初始化一个数据同步队列,这个数据同步队列的容量固定。数据同步队列中的元素没有业务含义,仅用于触发一次数据同步的请求。
将一个完整文件的同步,拆分为多个数据同步请求。每个数据同步请求在启动时,从数据同步队列中获取一个元素,才能继续执行。如果数据同步队列中有可用的元素,则数据同步请求可以立即执行,并从数据同步队列中删除一个元素。如果数据同步队列中没有可用的元素,则数据同步请求需要等待,直到数据同步队列中有可用的元素为止。
(b)数据同步队列生成:数据同步队列中的元素以固定的速率生成,例如每秒生成N个元素,生成的元素被放置到数据同步队列中。
(c)数据同步队列的容量:数据同步队列有一个容量限制,即数据同步队列中最多存放的元素数量。如果数据同步队列已满,并且没有新的元素生成,那么多余的数据同步请求将无法获取到元素,从而限制了数据同步的速率。
例如根据业务请求,数据发送的速率为1000字节/秒,分5次发送,则每200毫秒发送一次,发送的大小为200字节。
可指定数据同步队列的大小为5,即每秒生成5个数据同步队列的元素。
在进行数据同步时,需指定两个参数:
同步的速率Rate,即每秒发送的字节数大小。
同步队列的容量N,即每秒最多生成N个数据同步队列的元素。
基于这两个参数,可推算出数据同步请求的次数以及每次发送的数据量大小。
每秒数据同步请求的次数=N。
每次同步请求发送的数据量大小=Rate/N。
(4)存量数据同步完成
存量数据同步完成之后,由各个DataNode节点的从服务发送消息告知主服务,主服务对数据同步的状态进行监控,当所有DataNode节点的数据同步任务完成之后,将下线的Block块副本上线,并启动增量数据同步的操作。
3、增量数据同步
增量数据的同步操作如下:
(1)数据操作
HDFS的数据操作主要有:
新增数据;
删除数据;
修改数据。
对于新增、修改、删除数据的操作,都会在JournalNode的Edit Log(编辑日志)记录。但是JournalNode有容量限制,会定期清理。
(2)同步数据变更的操作
从JournalNode同步数据变更的操作信息,提取新增文件、删除文件、添加块、删除块等关键操作,作为文件系统变更操作日志。以创建NameNode元数据拷贝期间记录的JournalNode的Edit Log(编辑日志)当前的最大偏移量作为起点,从JournalNode同步数据变更的操作信息。在存量数据同步完成后,根据文件系统变更操作日志,同步增量数据。
同步的增量数据可存放在消息队列Kafka或者文件系统中。
(3)基于数据变更的操作信息增量同步数据
在存量数据完成同步之后,启动增量数据同步的程序。
增量数据同步从消息队列Kafka或者文件系统,按照数据变更的操作信息产生的时间顺序,消费变更操作的数据。根据增、删、改、查的操作,获取数据变更的操作信息,执行数据的同步,具体如下:
(a)每次取一个批次的数据变更的操作信息,例如每次取1000条数据变更的操作信息。
(b)对数据变更的操作信息进行整合。
例如1:对于一个文件,一共由两条数据变更的操作信息,按照数据变更的操作信息的产生时间排序,分别对应新增、修改,这个文件最终是修改的,那么数据同步的操作内容是:只需要将修改后的文件同步至对象存储即可。
例如2:对于一个文件,一共由三条数据变更的操作信息,按照数据变更的操作信息的产生时间排序,分别对应新增、修改和删除三个操作,这个文件最终是删除的,因此该文件在这个批次,无需执行同步。那么数据同步的操作内容是:空操作。
例如3:对于一个文件,一共由一条数据变更的操作信息,对应文件修改操作。那么数据同步的操作内容是:删除对象存储的文件,并将修改后的文件上传至对象存储。
(c)根据要执行的同步操作的内容,执行数据的同步,写入对象存储。
4、平台切换
在数据同步至对象存储期间,数据的入库、清洗、分析等程序可提前接入对象存储,相当于有两套程序并存,一份对接原有的Hadoop,另外一份对接对象存储。
数据同步至对象存储的进度已经和数据写入Hadoop的进度保持一致时,可将入库、清洗、分析等所有程序接入对象存储,实现平滑迁移。
基于同一发明构思,本发明还提出一种将Hadoop的数据平滑迁移至对象存储的装置。该装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的术语“模块”,可以是实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图3是本发明的将Hadoop的数据平滑迁移至对象存储的装置结构示意图。如图3所示,该装置包括:
创建NameNode元数据的拷贝模块101,用于暂停Hadoop的写操作,从主NameNode备份元数据,记录HDFS的JournalNode的编辑日志当前的最大偏移量,下线已备份的NameNode元数据中任一个Block块副本,恢复Hadoop的写操作。
存量数据同步模块102,用于解析已备份的NameNode元数据,建立DataNote节点和已下线Block块副本的映射关系,数据同步任务分解,同步数据并限制数据同步的速率;
数据同步任务分解,包括:
若DataNode节点需要同步的文件和已下线Block块副本为一对一,则主服务将数据同步任务下发至已下线Block块副本所在的DataNode节点;
若DataNode节点需要同步的文件和已下线Block块副本为一对多,则主服务将数据同步任务下发至最大的已下线Block块副本所在的DataNode节点,若存在两个相同大小的已下线Block块副本,则随机选择一个已下线Block块副本所在的DataNode节点。
同步数据,包括:
若当前DataNode节点需要同步的文件只对应一个已下线Block块副本,则该DataNode节点上部署的从服务从当前DataNode节点的磁盘读取已下线Block块副本的数据,发送至对象存储;
若当前DataNode节点需要同步的文件对应两个及以上已下线Block块副本,则该DataNode节点上部署的从服务从当前DataNode节点的磁盘读取已下线Block块副本的数据,并从其它DataNode节点拉取已下线Block块副本的数据,将这些已下线Block块副本的数据拼接,发送至对象存储。
限制数据同步的速率,包括:
在每台HDFS的DataNode节点,初始化一个数据同步队列,该数据同步队列的容量固定;数据同步队列中的元素,用于触发一次数据同步请求;
数据同步队列中的元素以固定的速率生成,生成的元素被放置到数据同步队列中;
数据同步队列有一个容量限制,若数据同步队列已满,并且没有新的元素生成,则多余的数据同步请求将无法获取到元素,从而限制了数据同步的速率。
增量数据同步模块103,用于以记录的HDFS的JournalNode的编辑日志当前的最大偏移量作为起点,同步HDFS的JournalNode的编辑日志记录的数据变更的操作信息,基于数据变更的操作信息增量同步数据,平滑迁移。
当数据同步至对象存储的进度与数据写入Hadoop的进度保持一致时,将数据的入库程序、清洗程序以及分析程序接入对象存储。
应当注意,尽管在上文详细描述中提及了将Hadoop的数据平滑迁移至对象存储的装置的若干模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
基于前述发明构思,如图4所示,本发明还提出一种计算机设备200,包括存储器210、处理器220及存储在存储器210上并可在处理器220上运行的计算机程序230,处理器220执行计算机程序230时实现前述将Hadoop的数据平滑迁移至对象存储的方法。
基于前述发明构思,本发明还提出一种计算机可读存储介质,计算机可读存储介质存储有执行前述将Hadoop的数据平滑迁移至对象存储的方法的计算机程序。
本发明提出的将Hadoop的数据平滑迁移至对象存储的方法及装置,具有如下亮点:
1、同步效率高:在Hadoop的每个DataNode节点,分别执行数据同步,效率高。
2、不影响线上正常业务的运行效率:巨量的数据同步任务下发至每个DataNode节点,并且支持对数据同步的操作进行限速。
3、支持热迁移:在数据同步的过程中,只有在NameNode元数据拷贝期间暂停大数据集群的写操作,且暂停的时间较短。在NameNode元数据拷贝完成之后,大数据集群无时无刻进行着数据的上传、删除、移动等变更操作,这些操作均可同步至对象存储。
4、迁移平滑:在数据同步至对象存储期间,数据的入库、清洗、分析等程序可提前接入对象存储。数据同步至对象存储的进度已经和数据写入Hadoop的进度保持一致,即可将入库、清洗、分析等所有程序接入对象存储,实现平滑迁移。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包含的各种修改和等同布置。
对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (12)

1.一种将Hadoop的数据平滑迁移至对象存储的方法,其特征在于,该方法包括:
创建NameNode元数据的拷贝:暂停Hadoop的写操作,从主NameNode备份元数据,记录HDFS的JournalNode的编辑日志当前的最大偏移量,下线已备份的NameNode元数据中每个Block块的其中一个副本,恢复Hadoop的写操作;
存量数据同步:解析已备份的NameNode元数据,建立DataNote节点和已下线Block块副本的映射关系,数据同步任务分解,同步数据并限制数据同步的速率;
增量数据同步:以记录的HDFS的JournalNode的编辑日志当前的最大偏移量作为起点,同步HDFS的JournalNode的编辑日志记录的数据变更的操作信息,基于数据变更的操作信息增量同步数据,平滑迁移。
2.根据权利要求1所述的将Hadoop的数据平滑迁移至对象存储的方法,其特征在于,当数据同步至对象存储的进度与数据写入Hadoop的进度保持一致时,将数据的入库程序、清洗程序以及分析程序接入对象存储。
3.根据权利要求1所述的将Hadoop的数据平滑迁移至对象存储的方法,其特征在于,所述数据同步任务分解,包括:
若DataNode节点需要同步的文件和已下线Block块副本为一对一,则主服务将数据同步任务下发至已下线Block块副本所在的DataNode节点;
若DataNode节点需要同步的文件和已下线Block块副本为一对多,则主服务将数据同步任务下发至最大的已下线Block块副本所在的DataNode节点,若存在两个相同大小的已下线Block块副本,则随机选择一个已下线Block块副本所在的DataNode节点。
4.根据权利要求1所述的将Hadoop的数据平滑迁移至对象存储的方法,其特征在于,所述同步数据,包括:
若当前DataNode节点需要同步的文件只对应一个已下线Block块副本,则该DataNode节点上部署的从服务从当前DataNode节点的磁盘读取已下线Block块副本的数据,发送至对象存储;
若当前DataNode节点需要同步的文件对应两个及以上已下线Block块副本,则该DataNode节点上部署的从服务从当前DataNode节点的磁盘读取已下线Block块副本的数据,并从其它DataNode节点拉取已下线Block块副本的数据,将这些已下线Block块副本的数据拼接,发送至对象存储。
5.根据权利要求1所述的将Hadoop的数据平滑迁移至对象存储的方法,其特征在于,所述限制数据同步的速率,包括:
在每台HDFS的DataNode节点,初始化一个数据同步队列,该数据同步队列的容量固定;数据同步队列中的元素,用于触发一次数据同步请求;
数据同步队列中的元素以固定的速率生成,生成的元素被放置到数据同步队列中;
数据同步队列有一个容量限制,若数据同步队列已满,并且没有新的元素生成,则多余的数据同步请求将无法获取到元素,从而限制了数据同步的速率。
6.一种将Hadoop的数据平滑迁移至对象存储的装置,其特征在于,该装置包括:
创建NameNode元数据的拷贝模块,用于暂停Hadoop的写操作,从主NameNode备份元数据,记录HDFS的JournalNode的编辑日志当前的最大偏移量,下线已备份的NameNode元数据中任一个Block块副本,恢复Hadoop的写操作;
存量数据同步模块,用于解析已备份的NameNode元数据,建立DataNote节点和已下线Block块副本的映射关系,数据同步任务分解,同步数据并限制数据同步的速率;
增量数据同步模块,用于以记录的HDFS的JournalNode的编辑日志当前的最大偏移量作为起点,同步HDFS的JournalNode的编辑日志记录的数据变更的操作信息,基于数据变更的操作信息增量同步数据,平滑迁移。
7.根据权利要求6所述的将Hadoop的数据平滑迁移至对象存储的装置,其特征在于,当数据同步至对象存储的进度与数据写入Hadoop的进度保持一致时,将数据的入库程序、清洗程序以及分析程序接入对象存储。
8.根据权利要求6所述的将Hadoop的数据平滑迁移至对象存储的装置,其特征在于,所述数据同步任务分解,包括:
若DataNode节点需要同步的文件和已下线Block块副本为一对一,则主服务将数据同步任务下发至已下线Block块副本所在的DataNode节点;
若DataNode节点需要同步的文件和已下线Block块副本为一对多,则主服务将数据同步任务下发至最大的已下线Block块副本所在的DataNode节点,若存在两个相同大小的已下线Block块副本,则随机选择一个已下线Block块副本所在的DataNode节点。
9.根据权利要求6所述的将Hadoop的数据平滑迁移至对象存储的装置,其特征在于,所述同步数据,包括:
若当前DataNode节点需要同步的文件只对应一个已下线Block块副本,则该DataNode节点上部署的从服务从当前DataNode节点的磁盘读取已下线Block块副本的数据,发送至对象存储;
若当前DataNode节点需要同步的文件对应两个及以上已下线Block块副本,则该DataNode节点上部署的从服务从当前DataNode节点的磁盘读取已下线Block块副本的数据,并从其它DataNode节点拉取已下线Block块副本的数据,将这些已下线Block块副本的数据拼接,发送至对象存储。
10.根据权利要求6所述的将Hadoop的数据平滑迁移至对象存储的装置,其特征在于,所述限制数据同步的速率,包括:
在每台HDFS的DataNode节点,初始化一个数据同步队列,该数据同步队列的容量固定;数据同步队列中的元素,用于触发一次数据同步请求;
数据同步队列中的元素以固定的速率生成,生成的元素被放置到数据同步队列中;
数据同步队列有一个容量限制,若数据同步队列已满,并且没有新的元素生成,则多余的数据同步请求将无法获取到元素,从而限制了数据同步的速率。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-5任一项所述方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1-5任一项所述方法的计算机程序。
CN202311258465.2A 2023-09-27 2023-09-27 一种将Hadoop的数据平滑迁移至对象存储的方法及装置 Pending CN117331886A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311258465.2A CN117331886A (zh) 2023-09-27 2023-09-27 一种将Hadoop的数据平滑迁移至对象存储的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311258465.2A CN117331886A (zh) 2023-09-27 2023-09-27 一种将Hadoop的数据平滑迁移至对象存储的方法及装置

Publications (1)

Publication Number Publication Date
CN117331886A true CN117331886A (zh) 2024-01-02

Family

ID=89291107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311258465.2A Pending CN117331886A (zh) 2023-09-27 2023-09-27 一种将Hadoop的数据平滑迁移至对象存储的方法及装置

Country Status (1)

Country Link
CN (1) CN117331886A (zh)

Similar Documents

Publication Publication Date Title
US11797395B2 (en) Application migration between environments
CN102594849B (zh) 数据备份、恢复方法、虚拟机快照删除、回滚方法及装置
WO2019154394A1 (zh) 分布式数据库集群系统、数据同步方法及存储介质
GB2564923A (en) Managing digital assets stored as components and packaged files
US20140025637A1 (en) De-Duplication Based Backup Of File Systems
JP4615344B2 (ja) データ処理システム及びデータベースの管理方法
US10353872B2 (en) Method and apparatus for conversion of virtual machine formats utilizing deduplication metadata
CN114466027B (zh) 一种云原生数据库服务提供方法、系统、设备及介质
JP2002091938A (ja) フェールオーバを処理するシステムおよび方法
CN106790713B (zh) 云计算环境下的跨数据中心虚拟机迁移方法
US11256576B2 (en) Intelligent scheduling of backups
CN111177159B (zh) 一种数据处理的系统、方法和数据更新设备
CN115098299B (zh) 一种虚拟机的备份方法、容灾方法、装置及设备
CN111221678A (zh) Hbase数据备份/恢复系统、方法、装置及电子设备
CN103902405A (zh) 一种准连续性数据复制方法及装置
CN109726211B (zh) 一种分布式时序数据库
US8090695B2 (en) Dynamic restoration of message object search indexes
JP3967499B2 (ja) マルチコンピュータ・システムでの復元
CN112579550B (zh) 一种分布式文件系统的元数据信息同步方法及系统
CN114328009A (zh) 基于虚拟化和快照的异构数据库统一容灾备份方法和装置
JP2000099359A5 (zh)
CN113297316A (zh) 一种实现数据同步的方法及装置和系统
WO2023240995A1 (zh) 一种双机热备系统的数据恢复方法、装置及介质
CN115098300B (zh) 一种数据库的备份方法、容灾方法、装置及设备
CN116389233A (zh) 容器云管理平台主备切换系统、方法、装置和计算机设备

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