一种hdfs中热点数据文件的动态副本创建方法和系统的制作方法
【专利摘要】本发明提供了一种Hadoop分布式文件系统(HDFS)中热点数据文件的动态副本创建方法和系统,其中,所述方法包括:识别热点数据文件;对所述文件动态创建副本,包括:优先在对所述热点数据文件发生请求的本地节点创建所述热点数据文件的副本。本发明避免了数据文件副本大量移动带来的数据读取延迟和网络开销大。
【专利说明】一种HDFS中热点数据文件的动态副本创建方法和系统
【技术领域】
[0001] 本发明涉及数据文件的副本创建,尤其涉及一种Hadoop分布式文件系统(HDFS) 中热点数据文件的动态副本创建方法和系统。
【背景技术】
[0002] 随着现代网络的发展,数据量剧增。为实现对海量数据量进行高效、可靠地处理, 出现了 Hadoop集群,其由多台廉价机器作为集群节点搭建而成。Hadoop集群能够把应用程 序分割成许多很小的工作单元,每个单元可以在任何集群节点上执行。此外,Hadoop还提 供一个分布式文件系统HDFS用来在各个集群节点上存储数据,提供了对数据读写的高吞 吐率。
[0003] 目前,HDFS在为节点配置数据文件副本时不区分冷热数据文件,对所有的数据文 件均通过静态配置副本以保证容错性,一旦配置完成,集群启动后数据文件的副本数就一 直保持配置值的副本数。
[0004] 并且,现有的静态配置的文件副本通常存储在固定的集群节点上,如果数据文件 的处理请求不是发生在所述固定的集群节点上,需要从所述固定集群节点上存储的文件副 本传输到请求发生的集群节点上,大量的数据移动也会增加数据读取延迟和网络开销。
【发明内容】
[0005] 本发明提供了一种HDFS中热点数据文件的动态副本创建方法和系统,以解决如 何避免数据文件副本大量移动带来的数据读取延迟和网络开销大的技术问题。
[0006] -种HDFS中热点数据文件的动态副本创建方法,所述方法包括:
[0007] 识别热点数据文件;
[0008] 对所述文件动态创建副本,包括:优先在对所述热点数据文件发生请求的本地节 点创建所述热点数据文件的副本。
[0009] 可选地,所述识别热点数据文件,包括:
[0010] 按时间顺序依次记录被访问的数据文件并为每个被访问的数据文件分配权值;分 配权值时,先访问的数据文件被分配的权值小,后访问的数据文件被分配的权值大;
[0011] 达到预设时间时,统计记录的每个被访问的数据文件被分配的权值之和,权值之 和最大的文件为热点数据所在的文件。
[0012] 可选地,所述方法还包括:
[0013] 在预设时间到达前,若按时间顺序依次记录的被访问的数据文件占用的空间达到 或超过阈值,则删除最早记录的被访问的数据文件直至已记录的被访问的数据文件占用的 空间满足要求。
[0014] 可选地,所述方法包括:
[0015] 将被访问的数据文件存储进队列,依次对进入队列中的数据文件分配从小到大的 权值;
[0016] 在预设时间到达前,若队列满,则按照先入先出(FIFO)原则,将数据文件从队列 头开始移出,将新被访问的数据文件继续存储进该队列;并且将更新后的队列中的数据文 件的权值顺序设置为与更新前的队列中的数据文件的权值顺序相同。
[0017] 可选地,所述依次对进入队列中的数据文件分配从小到大的权值,包括:
[0018] 将位于对头的数据文件分配权值1,队列中对头数据文件的后续数据文件被分配 的权值比各自前一个数据文件被分配的权值多1。
[0019] 可选地,对所述文件动态创建副本,还包括:
[0020] 当所述本地节点创建的热点数据文件的副本数达到预设的节点可存储副本阈值 时,则依次在本地节点所在机架的其他节点、其他机架的节点上创建所述热点数据文件的 副本。
[0021] 一种HDFS中热点数据文件的动态副本创建系统,所述系统包括文件识别模块、副 本创建模块,其中,
[0022] 所述文件识别模块,用于识别热点数据文件;
[0023] 所述副本创建模块,用于对所述文件动态创建副本,包括:优先在对所述热点数据 文件发生请求的本地节点创建所述热点数据文件的副本。
[0024] 可选地,所述文件识别模块,用于识别热点数据文件,包括:
[0025] 按时间顺序依次记录被访问的数据文件并为每个被访问的数据文件分配权值;分 配权值时,先访问的数据文件被分配的权值小,后访问的数据文件被分配的权值大;达到预 设时间时,统计记录的每个被访问的数据文件被分配的权值之和,权值之和最大的文件为 热点数据所在的文件。
[0026] 可选地,
[0027] 所述文件识别模块,还用于在预设时间到达前,若判断出按时间顺序依次记录的 被访问的数据文件占用的空间达到或超过阈值,则删除最早记录的被访问的数据文件直至 已记录的被访问的数据文件占用的空间满足要求。
[0028] 可选地,
[0029] 所述文件识别模块,用于将被访问的数据文件存储进队列,依次对进入队列中的 数据文件分配从小到大的权值;在预设时间到达前,若队列满,则按照先入先出(FIFO)原 贝1J,将数据文件从队列头开始移出,将新被访问的数据文件继续存储进该队列;并且将更新 后的队列中的数据文件的权值顺序设置为与更新前的队列中的数据文件的权值顺序相同。
[0030] 可选地,所述文件识别模块,用于依次对进入队列中的数据文件分配从小到大的 权值,包括:
[0031] 将位于对头的数据文件分配权值1,队列中对头数据文件的后续数据文件被分配 的权值比各自前一个数据文件被分配的权值多1。
[0032] 可选地,所述副本创建模块,用于对所述文件动态创建副本,还包括:
[0033] 当所述本地节点创建的热点数据文件的副本数达到预设的节点可存储副本阈值 时,则依次在本地节点所在机架的其他节点、其他机架的节点上创建所述热点数据文件的 副本
[0034] 上述技术方案对热点数据文件的副本进行动态创建,并且优先在对所述热点数据 文件发生请求的本地节点创建所述热点数据文件的副本,保证发出请求的程序能够在本地 获取到所需的热点数据文件,避免了热点数据文件在节点间传输带来的数据读取延迟和网 络延迟。
【专利附图】
【附图说明】
[0035] 图1为本实施例的HDFS中热点数据文件的动态副本创建方法流程图;
[0036] 图2为本实施例的HDFS中热点数据文件的动态副本创建系统组成图。
【具体实施方式】
[0037] 为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明 的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中 的特征可以相互任意组合。
[0038] 图1为本实施例的HDFS中热点数据文件的动态副本创建方法流程图。
[0039] S101识别热点数据文件;
[0040] 识别热点数据文件的方法可以包括以下步骤:
[0041] 按时间顺序依次记录被访问的数据文件并为每个被访问的数据文件分配权值;分 配权值时,先访问的数据文件被分配的权值小,后访问的数据文件被分配的权值大;
[0042] 达到预设时间时,统计记录的每个被访问的数据文件被分配的权值之和,权值之 和最大的文件为热点数据所在的文件;
[0043] 由于在分配数据文件的权值时,考虑了数据被访问的时间先后,并且最近被访问 的数据文件被分配的权值大,因此根据上述方法识别出的热点数据文件是当前被访问次数 较多的数据文件,使得后续根据热点文件创建的文件副本能够较好的满足当前的数据处理 请求,提升集群系统的用户友好度;
[0044] 通常存储被访问的数据文件的空间有限,在预设时间到达前,若按时间顺序依次 记录的被访问的数据文件占用的空间达到或超过阈值,则删除最早记录的被访问的数据文 件直至已记录的被访问的数据文件占用的空间满足要求;由于最早记录的被访问的数据文 件的权值最小,删除该最早记录的被访问的数据文件对后续权值的计算影响不大;
[0045] 可选择地,将被访问的数据文件存储进队列,依次对进入队列中的数据文件分配 从小到大的权值。在分配权值时,最新被访问的数据文件被分配的权值与前一个被访问的 数据文件被分配的权值不能相差太大,可将位于队列中对头的数据文件分配权值1,队列中 对头数据文件的后续数据文件被分配的权值比各自前一个数据文件被分配的权值多1。这 是由于,当最新被访问的数据文件被分配的权值与前一个被访问的数据文件被分配的权值 相差过大时,会造成对热点数据文件的识别不准确,比如队列中存储了 4个数据文件,前三 个数据文件为相同的数据文件,如果前三个数据文件的权值小于第四个数据文件的权值, 根据上述热点数据文件的识别方法,第四个数据文件会被识别为当前热点数据文件,而实 际前三个数据文件才满足当前热点数据文件的特征。
[0046] 在预设时间到达前,若队列满,则按照先入先出(FIFO)原则,将数据文件从队列 头开始移出,将新被访问的数据文件继续存储进该队列;并且将更新后的队列中的数据文 件的权值顺序设置为与更新前的队列中的数据文件的权值顺序相同;
[0047] S102对所述文件动态创建副本,包括:优先在对所述热点数据文件发生请求的本 地节点创建所述热点数据文件的副本。
[0048] 可选地,为热点数据文件创建副本的步骤包括:
[0049] 步骤一:判断所述发出热点数据文件处理请求的节点是否存在文件副本,如果存 在文件副本,执行步骤三;如果不存在文件副本,执行步骤二;
[0050] 步骤二,创建文件副本;
[0051] 步骤三,判断存在的文件副本数是否已达到预设的节点可存储副本阈值,如果没 有达到所述阈值,执行步骤二;如果达到所述阈值,执行步骤四;
[0052] 步骤四,判断本地机架的其他节点上是否存在文件副本,如果存在文件副本,执行 步骤六;如果不存在文件副本,执行步骤五;
[0053] 步骤五,创建文件副本;
[0054] 步骤六,判断存在的文件副本数是否已达到预设的节点可存储副本阈值,如果没 有达到该阈值,执行步骤五;如果达到该阈值,执行步骤七;
[0055] 步骤七,判断本地机架是否还有其他节点,如果有其他节点,执行步骤四;如果没 有其他节点,执行步骤八;
[0056] 步骤八,判断其他机架的其他节点上是否存在文件副本,如果存在文件副本,执行 步骤十;如果不存在文件副本,执行步骤九;
[0057] 步骤九,创建文件副本;
[0058] 步骤十,判断存在的文件副本数是否已达到预设的节点可存储副本阈值,如果没 有达到该阈值,执行步骤九;如果达到该阈值,执行步骤十一;
[0059] 步骤^^一,判断其他机架是否还有其他节点,如果有其他节点,执行步骤八;如果 没有其他节点,执行步骤十二;
[0060] 步骤十二,流程结束。
[0061] 上述创建热点数据文件的副本时,首先在发出热点数据文件处理请求的节点创建 热点,保证发出请求的程序能够在本地获取到所需的热点数据文件,避免了热点数据文件 在节点间传输带来的数据读取延迟和网络延迟;由于在创建数据文件副本时,按照本地节 点--本地机架的其他节点--其他机架的其他节点的顺序进行创建,使得发出请求的程 序在本地节点获取不到要求数量的热点数据文件的副本时,可以优先从离本地节点较劲的 节点处获取到副本,尽可能节省了数据传输带来的延迟。另外,上述在节点上创建热点文件 的副本时,根据节点上已有的副本数可调整在该节点上创建的副本数,使得创建的副本更 加灵活。
[0062] 图2为本实施例的HDFS中热点数据文件的动态副本创建系统组成图。
[0063] 该系统包括:所述系统包括文件识别模块、副本创建模块,其中,
[0064] 所述文件识别模块,用于识别热点数据文件;
[0065] 为识别热点数据文件,该文件识别模块可按时间顺序依次记录被访问的数据文件 并为每个被访问的数据文件分配权值;分配权值时,先访问的数据文件被分配的权值小,后 访问的数据文件被分配的权值大;达到预设时间时,统计记录的每个被访问的数据文件被 分配的权值之和,权值之和最大的文件为热点数据所在的文件;
[0066] 由于在分配数据文件的权值时,考虑了数据被访问的时间先后,并且最近被访问 的数据文件被分配的权值大,因此根据上述方法识别出的热点数据文件是当前被访问次数 较多的数据文件,使得后续根据热点文件创建的文件副本能够较好的满足当前的数据处理 请求,提升集群系统的用户友好度;
[0067] 通常存储被访问的数据文件的空间有限,所述文件识别模块,还用于在预设时间 到达前,若判断出按时间顺序依次记录的被访问的数据文件占用的空间达到或超过阈值, 则删除最早记录的被访问的数据文件直至已记录的被访问的数据文件占用的空间满足要 求;由于最早记录的被访问的数据文件的权值最小,删除该最早记录的被访问的数据文件 对后续权值的计算影响不大;
[0068] 优选地,所述文件识别模块,用于将被访问的数据文件存储进队列,依次对进入 队列中的数据文件分配从小到大的权值;在预设时间到达前,若队列满,则按照先入先出 (FIFO)原则,将数据文件从队列头开始移出,将新被访问的数据文件继续存储进该队列; 并且将更新后的队列中的数据文件的权值顺序设置为与更新前的队列中的数据文件的权 值顺序相同;在分配权值时,最新被访问的数据文件被分配的权值与前一个被访问的数据 文件被分配的权值不能相差太大,可将位于队列中对头的数据文件分配权值1,队列中对头 数据文件的后续数据文件被分配的权值比各自前一个数据文件被分配的权值多1 ;
[0069] 所述副本创建模块,用于对所述文件动态创建副本,包括:优先在对所述热点数据 文件发生请求的本地节点创建所述热点数据文件的副本;
[0070] 所述副本创建模块对所述文件动态创建副本,还包括当所述本地节点创建的热点 数据文件的副本数达到预设的节点可存储副本阈值时,则依次在本地节点所在机架的其他 节点、其他机架的节点上创建所述热点数据文件的副本;
[0071] 可选地,在本地节点所在机架的其他节点、其他机架的节点上创建所述热点数据 文件的副本时,可在本地节点所在机架的所有其他节点建所述热点数据文件的副本后,再 去其他机架的全部节点上创建所述热点数据文件的副本;在每个节点上创建的所述热点数 据文件的副本数可以为预设的该节点可存储副本阈值减去该节点上已有的副本数。
[0072] 本实施例在创建热点数据文件的副本时,首先在发出热点数据文件处理请求的节 点创建热点,保证发出请求的程序能够在本地获取到所需的热点数据文件,避免了热点数 据文件在节点间传输带来的数据读取延迟和网络延迟;由于在创建数据文件副本时,按照 本地节点--本地机架的其他节点--其他机架的其他节点的顺序进行创建,使得发出请 求的程序在本地节点获取不到要求数量的热点数据文件的副本时,可以优先从离本地节点 较劲的节点处获取到副本,尽可能节省了数据传输带来的延迟。另外,上述在节点上创建热 点文件的副本时,根据节点上已有的副本数可调整在该节点上创建的副本数,使得创建的 副本更加灵活。
[0073] 本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令 相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘 等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应 地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的 形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
[〇〇74] 需要说明的是,本发明还可有其他多种实施例,在不背离本发明精神及其实质的 情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的 改变和变形都应属于本发明所附的权利要求的保护范围。
【权利要求】
1. 一种HDFS中热点数据文件的动态副本创建方法,其特征在于,所述方法包括: 识别热点数据文件; 对所述文件动态创建副本,包括:优先在对所述热点数据文件发生请求的本地节点创 建所述热点数据文件的副本。
2. 如权利要求1所述的方法,其特征在于,所述识别热点数据文件,包括: 按时间顺序依次记录被访问的数据文件并为每个被访问的数据文件分配权值;分配权 值时,先访问的数据文件被分配的权值小,后访问的数据文件被分配的权值大; 达到预设时间时,统计记录的每个被访问的数据文件被分配的权值之和,权值之和最 大的文件为热点数据所在的文件。
3. 如权利要求2所述的方法,其特征在于,所述方法还包括: 在预设时间到达前,若按时间顺序依次记录的被访问的数据文件占用的空间达到或超 过阈值,则删除最早记录的被访问的数据文件直至已记录的被访问的数据文件占用的空间 满足要求。
4. 如权利要求3所述的方法,其特征在于,所述方法包括: 将被访问的数据文件存储进队列,依次对进入队列中的数据文件分配从小到大的权 值; 在预设时间到达前,若队列满,则按照先入先出(FIFO)原则,将数据文件从队列头开 始移出,将新被访问的数据文件继续存储进该队列;并且将更新后的队列中的数据文件的 权值顺序设置为与更新前的队列中的数据文件的权值顺序相同。
5. 如权利要求4所述的方法,其特征在于,所述依次对进入队列中的数据文件分配从 小到大的权值,包括: 将位于对头的数据文件分配权值1,队列中对头数据文件的后续数据文件被分配的权 值比各自前一个数据文件被分配的权值多1。
6. 如权利要求1?5中任一项所述的方法,其特征在于,对所述文件动态创建副本,还 包括: 当所述本地节点创建的热点数据文件的副本数达到预设的节点可存储副本阈值时,则 依次在本地节点所在机架的其他节点、其他机架的节点上创建所述热点数据文件的副本。
7. -种HDFS中热点数据文件的动态副本创建系统,其特征在于,所述系统包括文件识 别模块、副本创建模块,其中, 所述文件识别模块,用于识别热点数据文件; 所述副本创建模块,用于对所述文件动态创建副本,包括:优先在对所述热点数据文件 发生请求的本地节点创建所述热点数据文件的副本。
8. 如权利要求7所述的系统,其特征在于,所述文件识别模块,用于识别热点数据文 件,包括: 按时间顺序依次记录被访问的数据文件并为每个被访问的数据文件分配权值;分配权 值时,先访问的数据文件被分配的权值小,后访问的数据文件被分配的权值大;达到预设时 间时,统计记录的每个被访问的数据文件被分配的权值之和,权值之和最大的文件为热点 数据所在的文件。
9. 如权利要求8所述的系统,其特征在于, 所述文件识别模块,还用于在预设时间到达前,若判断出按时间顺序依次记录的被访 问的数据文件占用的空间达到或超过阈值,则删除最早记录的被访问的数据文件直至已记 录的被访问的数据文件占用的空间满足要求。
10. 如权利要求9所述的系统,其特征在于, 所述文件识别模块,用于将被访问的数据文件存储进队列,依次对进入队列中的数据 文件分配从小到大的权值;在预设时间到达前,若队列满,则按照先入先出(FIFO)原则,将 数据文件从队列头开始移出,将新被访问的数据文件继续存储进该队列;并且将更新后的 队列中的数据文件的权值顺序设置为与更新前的队列中的数据文件的权值顺序相同。
11. 如权利要求11所述的系统,其特征在于,所述文件识别模块,用于依次对进入队列 中的数据文件分配从小到大的权值,包括: 将位于对头的数据文件分配权值1,队列中对头数据文件的后续数据文件被分配的权 值比各自前一个数据文件被分配的权值多1。
12. 如权利要求7?11中任一项所述的系统,其特征在于,所述副本创建模块,用于对 所述文件动态创建副本,还包括: 当所述本地节点创建的热点数据文件的副本数达到预设的节点可存储副本阈值时,则 依次在本地节点所在机架的其他节点、其他机架的节点上创建所述热点数据文件的副本。
【文档编号】G06F17/30GK104102725SQ201410350401
【公开日】2014年10月15日 申请日期:2014年7月22日 优先权日:2014年7月22日
【发明者】郭美思, 吴楠 申请人:浪潮(北京)电子信息产业有限公司