一种基于任务负载的数据迁移方法

文档序号:10725065阅读:260来源:国知局
一种基于任务负载的数据迁移方法
【专利摘要】本发明公开了一种基于任务负载的数据迁移方法,其实现过程为,在关系型数据库中抽取数据,并对数据进行格式转换;开始执行数据迁移,该数据迁移过程采用MapReduce架构,具体迁移过程为:首先在数据源导入数据,生成对应的运行类打包成jar包,传递给Hadoop平台存储和处理。该基于任务负载的数据迁移方法与现有技术相比,解决了每个节点的任务处理能力、CPU运算速度和map分配数量的假设问题,通过任务的调度的优化尽量避免出现部分节点负载过重或者过轻的现象,可以提高数据迁移效率,实用性强。
【专利说明】
一种基于任务负载的数据迁移方法
技术领域
[0001] 本发明涉及数据迀移技术领域,具体地说是一种实用性强的基于任务负载的数据 迀移方法。
【背景技术】
[0002] 随着信息技术的不断的发展,人类社会每年所产生的数据量正在以惊人的速度飞 速增长,我们的社会已经进入到一个全新的信息化时代。但随之而来的数据存储的问题,逐 渐成为一个热点话题。近些年,随着云计算与大数据及其相关技术的的不断发展,信息化产 业的格局正在逐渐被改变。在企业的实际应用中,数据的存储必须要求全天候的高可用性 指标,但随着网络存储系统的规模越来越大,系统的故障次数也急剧增加。另外,虽然存储 系统的规模越来越大,存储设备越来越多,但存储系统中的资源利用率却仍然保持在一个 很低的水平。另一方面,在数据存储量增长的情况下,系统需要满足极高的可扩展性;大规 模的存储系统往往是由不同的厂商提供的不同类型的具有极高的异构性的存储设备组成 的,这样就造成了管理存储系统具有较高的复杂性,同时导致系统在未来使用中的扩展将 成为一个很大的难题。在当下技术条件下,选择使用云存储将能够有效解决上述问题。
[0003] 通常情况下,企业的信息数据系统会包含多个不同的业务系统,而且不同的业务 系统都包含有各自的一套在线业务系统、归档系统和备份系统。企业出于对成本的考虑,存 储系统会把在线业务平台的数据迀移到后端的云存储平台。但是数据迀移的过程极为复 杂,需要解决的问题众多。在数据迀移的诸多问题中,我们主要研究了其中一个问题,即关 系型数据将数据迀移至大数据平台过程中,数据的迀移效率有待提高。我们通过对任务调 度机制的优化以达到提高数据迀移效率的目的。
[0004] 一般情况下,使用者若不对Hadoop进行特殊设置,则在处理任务调度的过程中就 会采用FIFO调度,其运行原理如图1所示。Hadoop在利用FIFO调度器进行作业是有如下假 设:
[0005] 分布式集群中,各个节点进行任务处理的能力是相同的。
[0006] 每个节点在对任务进行处理的过程中、其计算速度和运算能力保持不变,且不受 其他因素的影响。
[0007] 当系统对相同的任务进行处理时,Map Reduce中的map和reduce所接受的任务分 配和任务计算的数量都是相等的。
[0008] 以上条件都会在理想条件下的假设,在现实的操作使用过程中,基本上很难满足 以上三条假设。首先,由于不同节点的服务器的异构性,很难实现其处理任务的能力完全相 同,例如在处理计算密集型任务时时,CPU的运行会变慢,当对数据密集型的任务进行处理 时,磁盘的运转速率也会下降。因此,在实际的使用中,各种因素的不稳定性对整体数据迀 移的执行过程,增加了诸多的不稳定因素。
[0009] 基于此,现提供一种基于任务负载的数据迀移方法,是通过对任务调度机制进行 优化从而提高数据迀移效率的一种方法。

【发明内容】

[0010] 本发明的技术任务是针对以上不足之处,提供一种实用性强、基于任务负载的数 据迀移方法。
[0011] -种基于任务负载的数据迀移方法,其实现过程为:
[0012] 在关系型数据库中抽取数据,并对数据进行格式转换;开始执行数据迀移,该数据 迀移过程采用MapReduce架构,具体迀移过程为:首先在数据源导入数据,生成对应的运行 类打包成jar包,传递给Hadoop平台存储和处理。
[0013] 在执行数据迀移操作前,首先要完成相关基本信息的配置,该相关基本信息包括, 数据迀出的位置信息、数据迀移目的地的地址信息、数据迀移过程中使用map的数量以及现 有分布式集群各个节点的服务器基本的配置情况,完成基本的配置后,开始执行数据迀移 操作。
[0014] 所述数据迀移的具体过程为:
[0015] 步骤一、首先设置参数,解析任务执行的预设信息并设置数据源和数据输出路径;
[0016] 步骤二、在预设的数据源中获取数据;
[0017] 步骤三、转换数据格式,即将数据由原来的格式转换为大数据平台可存储的数据 格式;
[0018] 步骤四、对数据进行划分分配,下发至集群中的每个节点;
[0019]步骤五、最后将数据写入到对应的输出路径中。
[0020]所述步骤一的具体实现过程为:
[0021 ]首先解析关于任务执行的系统预设信息,即设置待迀移数据的基本信息以及数据 迀移中的数据信息,该系统预设信息包括数据是否备份、数据的获取路径、数据的输出路 径、数据的原始格式、数据的输出格式、对数据进行划分和计算的Mapper类和Reducer类; [0022]然后设置数据源,即解析等待迀移的数据目前的存储的置,为数据迀移操作做准 备;
[0023]最后设置数据的输出路径,即将数据格式转换后的输出数据保存的位置。
[0024]数据的输出路径采用HBase表。
[0025]所述步骤二在预设的数据源中获取数据的具体过程为:通过Java编程的方式,利 用JDBC获取预设的关系型数据库中的数据源,获取后输出的结果集是名为ResultSet的 Java对象。
[0026]所述步骤三中的转换数据格式是指将ResultSet对象经数据格式转换成为键值对 Key/Value 的形式。
[0027] 所述步骤四数据划分及下发相关数据的过程为:启动MapReduce,通过MapReduce 进行数据的划分和计算,然后通过Map对任务进行分配,下发至集群中的每个节点,最后通 过Reduce进行计算,将最后的结果集写入到目标地址,当所有数据完整的写入到大数据平 台后,实现关系型数据库数据迀移至大数据平台的目的。
[0028]所述步骤四的具体实现过程为:
[0029] 在数据划分及下发相关数据的过程中,通过MapReduce的map将任务分配到各个节 点中进行处理,即将数据划分后分别分发至每个节点的TaskTracker中,然后把数据写入到 用户预设的HBase表中进行存储。
[0030] 通过Map对任务进行分配,下发至集群中的每个节点的具体过程为:当检测到 TaskTracker有空闲的Slot时,系统对其I/O资源占用情况进行检测,若该节点的I/O资源占 用为所有节点中最少,且该节点任务负载熵值满足预设的阈值时,JobTracker将自动将任 务分配给该TaskTracker;反之,若发现此时该节点的I/O资源被大量占用或者任务负载熵 值较大,等待处理的任务较多,则不将任务分配给该节点。
[0031] 上述任务分配通过任务调度器完成,该任务调度器的具体操作过程为:
[0032]首先将系统文件mapred-s it e. xml中的相应字段设置为任务调度器类 org · apache · hadoop · mapred · TaskScheduler,使得其可在后面的任务调度中被使用;
[0033] 然后实现基于任务负载的任务调度器的过程,对JobTracker中的AssignTask方法 进行设计编写,这个方法的TaskTracker Status字段中包含有TaskTracker在心跳信息 Heartbeat中提交的相关信息,该相关信息包括MapSlot数量的最大值、ReduceSlot数量的 最大值、虚拟内存最大值、物理内存、剩余可用磁盘空间的大小、每个任务的执行状态、磁盘 存取状态、剩余Slot数量、磁盘存取速率、CPU的实时状态;
[0034] 在对任务进行分配过程中,JobTracker利用TaskTracker通过心跳信息Heartbeat 发送得到的信息来判断将任务分配给哪些节点,其中主要参数有Slot使用情况、磁盘存取 状态、任务阻塞、等待状态。
[0035] 基于上述任务调度器,具体的任务调度情况为:
[0036] 如果节点的TaskTracker中所有的slot都已经被占用,则任务调度器则拒绝将新 的任务分配至该TaskTracker;
[0037]若TaskTracker上尚且存在空闲的Slot,贝lj需要对磁盘占用情况,任务等待情况等 进行监测判断:
[0038] a).若当前节点负载任务情况,依据任务负载均衡评测模型计算得到的Pl值高于 平均值则不将新任务分配给该节点;
[0039] b). 1若当前节点负载情况,依据任务负载均衡评测模型计算得到的Pl值低于平均 值《,则该节点可以接受新任务。
[0040] 所述步骤五即为将数据写入HBase:每个节点的TaskTracker对任务进行计算处理 输出数据,将读取到的键值对数据写入HBase表;数据迀移过程随着系统中Map任务全部结 束而结束,反之,若数据迀移尚未结束,则TaskTracker将继续将任务分配给每个 TaskTracker进行处理。
[0041] 本发明的一种基于任务负载的数据迀移方法,具有以下优点:
[0042] 本发明提出的一种基于任务负载的数据迀移方法,利用群智能算法中的人工蜂群 算法对任务调度机制进行优化,Hadoop默认FIFO调度的一些假设,都是在理想条件下提出 的,但是在现实的操作使用过程中,基本上很难满足这些假设。因而在实际的使用中,各种 因素的不稳定性对整体数据迀移的执行过程,增加了诸多的不稳定因素,我们利用优化的 的任务调度机制一定程度上解决了其中每个节点的任务处理能力、CPU运算速度和map分配 数量的假设;利用任务调度机制的优化来提高数据迀移的效率,由于原有的任务调度机制 可能导致分布式集群中部分节点任务负载较重或者较轻,这种情况的出现将会影响数据的 读写速率,从而一定程度上影响到了数据迀移的效率,我们通过任务的调度的优化尽量避 免出现部分节点负载过重或者过轻的现象,可以提高数据迀移效率,实用性强,易于推广。
【附图说明】
[0043]附图1为FIFO调度器原理示意图。
[0044]附图2为展示了基于ABC算法优化的Hadoop任务调度过程。
[0045] 附图3为数据迀移过程流程图。
[0046] 附图4为基于任务负载的数据迀移流程。
[0047] 附图5为数据量与迀移时间示意图。
[0048] 附图6为对应的map数量与效率。
【具体实施方式】
[0049]下面结合附图和具体实施例对本发明作进一步说明。
[0050] 传统的关系型数据库如oraclejysql在过去很长一段时间内占据了数据库领域 的统治地位。但是对于关系型数据库而言,当存储规模达到一定限度时,系统非常容易出现 死锁等并发问题,从而导致数据在读写过程中性能严重下降,影响用户对数据的查询删除 插入等操作。因此面对海量的数据的存储和读写查询工作,构建一个可靠性高并且可扩展 性好的大数据平台对的工业企业而言是极其紧迫的。于是此时面临许多问题,关系型数据 库数据如何迀移至大数据平台使得效率更高,消耗资源更少;分布式存储系统的数据如何 让存储才能使得数据读取等更加迅速;哪些数据需要迀移至大数据平台;数据迀移至大数 据平台后,数据查询、数据挖掘等怎么样才能方便快捷高效;对于使用较频繁的数据如何让 处理才能使得数据的读取和使用效率更高。
[0051] 如附图2-4所示,针对将在线数据数据迀移到大数据平台的需求,我们提出一种基 于任务调度机制的数据迀移方法。为了对上述方法进行实验分析,我们使用了 Hadoop架构 进行实现,并通过与Hadoop默认的FIFO任务调度机制进行比较,验证方法的有效性。
[0052]本发明提供一种基于任务负载的数据迀移方法,本发明中数据的迀移过程采用了 MapReduce架构,首先在数据源导入数据,生成对应的运行类打包成jar包,传递给Hadoop平 台存储和处理。在这个过程中可以有效利用MapReduce的并行机制,同时利用基于任务负载 值的任务调度策略对数据迀移过程进行优化,提高歉意效率。其中基于任务负载的任务调 度器运行原理就是根据每个节点的任务负载值 Pl,对集群中的个任务进行分配调度,这样 可以有效减少任务等待时间,避免任务阻塞,从而提高任务处理效率,减少数据迀移的消耗 时长。
[0053]文中我们利用Hadoop架构中的MapReduce框架完成对任务的分配和计算工作。在 执行数据迀移操作前,我们首先要完成相关基本信息的配置,主要包含有,数据迀出的位置 信息(声明数据源)、数据迀移目的地的地址信息、数据迀移过程中使用map的数量以及现有 分布式集群各个节点的服务器基本的配置情况等。完成基本的配置后,开始执行数据迀移 操作。根据图4与图6我们对数据迀移的过程进行简单描述:
[0054] ⑴设置参数。
[0055] 在应用中,我们首先要对系统参数进行设置,主要包含以下信息:
[0056] ①解析关于任务执行的系统预设信息:设置待迀移数据的基本信息以及数据迀移 中的数据信息,例如数据是否备份、数据的获取路径、数据的输出路径、数据的原始格式、数 据的输出格式、对数据进行划分和计算的Mapper类和Reducer类等。
[0057] ②设置数据源:解析等待迀移的数据目前的存储的置,为数据迀移操作做准备。
[0058] ③设置数据的输出路径:就是将数据格式转换后的输出数据保存的位置,在大数 据平台中可以是分布式文件系统或者是HBase、Hi Ve,在本文中我们设置的一个HBase表。 [0059]⑵在预设的数据源中获取数据。
[0060]我们利用Java编程的方式,利用JDBC获取预设的关系型数据库中的数据源,获取 后输出的结果集是名为ResultSet的Java对象。
[0061]⑶数据由原来的格式转换为大数据平台可存储的数据格式。
[0062]将ResultSet对象经数据格式转换成为键值对(Key/Value)的形式。
[0063] ⑷启动MapReduce,利用MapReduce进行数据的划分和计算,利用Map对任务进行分 配,下发至集群中的每个节点,利用Reduce进行计算,将最后的结果集写入到目标地址,当 所有数据完整的写入到大数据平台后,也就实现了关系型数据库数据迀移至大数据平台的 目的。具体过程如下:
[0064]执行数据迀移操作后,首先利用MapReduce的map将数据划分后分别分发至每个节 点的TaskTracker中,然后将数据写入到用户预设的HBase表中进行存储。在执行操作前的 配置中,我们需要对Map的数量进行设置,而在数据迀移前的数据分割会受到map数量的影 响,这也一定程度的对每个任务执行的范围产生了影响。当检测到TaskTracker有空闲的 Slot时,系统对其I/O资源占用情况进行检测,若其资源占用较少,且该节点任务负载熵值 满足预设的阈值时,JobTracker将自动将任务分配给该TaskTracker。反之,若发现此时该 节点的I/O资源被大量占用或者任务负载熵值较大,等待处理的任务较多,即使该 TaskTracker有空闲的Slot,为避免出现阻塞,从而影响数据迀移的效率,任务调度器也将 避免将任务分配给该节点。因此,系统利用基于任务负载的调度器,可以有效监测识别系统 中每个TaskTracker的I/O占用率、CPU利用率、任务等待/阻塞等,从而进行优化调度,提高 迀移系统的整体性能。
[0065] (5)数据写入 HBase。
[0066]每个节点的TaskTracker对任务进行计算处理输出数据,将读取到的键值对数据 写入HBase表。数据迀移过程的是随着系统中Map任务全部结束而结束,反之,若数据迀移尚 未结束,则TaskTracker将继续将任务分配给每个TaskTracker进行处理。
[0067] 根据本文中设计的基于ABC算法的任务调度,编写了基于任务调度情况的调度器。 将系统文件m a p r e d - s i t e · X m 1中的相应字段设置为任务调度器类 org.apache ?1^(1〇(^.1]^口代(1.1381^(3116(111161',使得其可在后面的任务调度中被使用。实现 基于任务负载的任务调度器的过程,主要是对JobTracker中的AssignTask方法进行设计编 写,这个方法的TaskTracker Status字段中包含有TaskTracker在Heartbeat (心跳信息)中 提交的相关信息,其中有MapSlot数量的最大值、ReduceSlot数量的最大值、虚拟内存最大 值、物理内存、剩余可用磁盘空间的大小、每个任务的执行状态、磁盘存取状态。在以上数据 中,对任务处理影响较大的因素主要是剩余Slot数量、磁盘存取速率还有CPU的实时状态。
[0068] 在对任务进行分配过程中,JobTracker利用TaskTracker通过Heartbeat (心跳信 息)发送得到的信息来判断将任务分配给哪些节点,其中主要参数有Slot使用情况、磁盘存 取状态、任务阻塞、等待状态等。在数据迀移过程中,关于任务的调度情况可分为以下几种: [0069]①如果节点的TaskTracker中所有的slot都已经被占用,则任务调度器尽量避免 将新的任务分配至该TaskTracker。
[0070]②若TaskTracker上尚且存在空闲的Slot,贝lj需要对磁盘占用情况,任务等待情况 等进行监测判断:
[0071] a).若当前节点负载任务情况,依据任务负载均衡评测模型计算得到的Pl值高于 平均值?,则不将新任务分配给该节点。
[0072] b). 1若当前节点负载情况,依据任务负载均衡评测模型计算得到的Pl值低于平均 值《,则该节点可以接受新任务。
[0073] 具体实例如下所述的基于任务调度优化的数据迀移方法数据测试与结果分析:
[0074] 根据预设,我们对基于任务调度的数据迀移进行数据测试,与此同时,在同样条件 下对Hadoop默认FIFO调度器进行相同数据量的测试。将两者得到的最终结果进行分析比 较。
[0075] 在实验过程中,我们分七种数据量进行测试,每没组数据进行六次实验,最后利用 六次实验中的平均值作为比较值,这样是为了保证数据的准确性。
[0076]基于系统默认FIFO调度器的数据测试结果,如下表所示:
[0077] 表1 FIFO调度器
[0080]对基于ABC算法的Hadoop任务调度器的设计进行数据迀移的性能测试,测试结果 如表2所示:
[0081 ] 表2基于ABC算法的Hadoop任务调度器
[0083] 对表1和表2实验中平均时间数据进行对比,如图5所示。
[0084] 根据表1和表2,我们首先对测试数据进行简单分析,为了保证数据的可靠性和准 确率我们只对测试数据的平均值进行对比分析。当数据量为31250时,使用系统默认调度器 进行数据迀移消耗时长比后者少;当数据量为62500和125000时,虽然六次测试中各不相 同,且个别情况下差距也比较大,但是取平均值后连着消耗时间相近;当数据量达到25000、 500000直到2000000时,基于ABC算法的任务调度器比FIFO调度器消耗时间更少,并且随着 数据量的不断增加,两者消耗时间的差值依次是2,1,5,11。另外根据图5,可以很明显的看 出,在数据量高于1000000条时,图像中红色线条明显高于蓝色线条。于是我们可以总结为, 当数据量逐渐增加时,在相等条件下,基于ABC算法的任务调度器效率越来越高,所消耗时 间越来越少,数据迀移效率越来越高。
[0085] 除了对不同数据量进行数据迀移的差别之外,我们还对数据迀移过程中分配不同 的map数量进行了测试。Hadooop提供一个参数mapred · map · tasks,该参数可用于设置map个 数,因此我们可以通过这个参数来控制map的数量。不过,通过这种方式设置map的个数,并 不是每次都有效的。主要原因在于mapred · map · tasks只是一个hadoop中map个数的参考数 值,最终map的个数,还取决于其他的因素。
[0086]假设Map启用的数量为Μ(个),效率的度量数值为时间T(s),数据处理的效率为P (条/s)。为保证数据的可靠性和准确率,我们使用同一个数据表进行多次测试,每次测试设 置的map数量不同,已知数据表中的数据量是2000000条。
[0087]在进行数据测试的过程中,我们分别启动1,2,4,6,8个map函数,依据每种map数 量,将相同的数据表由MySQL数据库迀移至HBase中。测试数据如下表3所示:
[0088] 表3不同map的数据迀移时间和效率
[0090]根据以上数据我们得到Map的数量与数据迀移效率的关系图像,如图6。
[0091]根据表3和图6,我们首先对map数量测试所得到的数据进行分析,当map数量为1 时,用时最长,这是由于map阶段负责对输入文件进行切分处理,map数量太少,用时必定较 多;当map怎的数量增加到2个到4个的过程中,效率逐渐得到有效提高,用时越来越短;当 map数量为6时,虽然map数量增加了但是数据迀移的效率反而下降了,造成这种结果得主要 原因是当调用map函数时,由于每个节点的任务情况不同,且任务处理实时变化,map将会在 在各个节点之间进项调度使用,这样会增大系统资源的消耗,由于map函数的调用并占用一 部分系统资源,导致任务处理效率不增反减。
[0092]根据测试数据我们可以得出以下结论:
[0093]⑴数据量和数据迀移时间并不是线性关系,数据量成倍数增加时迀移的时间并不 是按照对应的倍数增长,即数据迀移的时间和数据迀移的数据量不成正比。针对这种结果, 我们进行如下分析,出现这种结果得主要原因在于在启动MapReduce过程中,同时启动的还 有Job,而Job准备工作将会消耗一部分时间,占用一部分系统资源。因而,对于Hadoop默认 调度器和文中基于ABC算法设计任务调度过程,其数据迀移消耗的时长与迀移数据量之间 不会出现按照线性增长的情况。
[0094] ⑵根据实验数据中我们可以看出,数据量相对较少时,两种调度器在处理相同任 务是所消耗的时间大致相同,但是在数据量不断增长的过程中,在不考虑其他因素的影响 情况下,基于任务调度的调度器的性能比FIFO调度器更好。与此同时,也体现出了当任务较 密集情况下,由于不同节点服务器处理任务的能力有差异,所以任务调度器将会优先将任 务分派给任务负载值较低的节点进行处理,减少任务等待时间,避免阻塞,从而使得数据迀 移效率得到提高。
[0095] ⑶在对任务进行处理中,设置的map个数越接近节点数量,数据迀移的效率越高, 出现这种结果得原因在于数量合理的情况下,可以有效利用存储系统存取速率和集群网络 带宽。
[0096]⑷在实际应用中,并不是map使用数量越多越好,当map数量过多时,map在系统中 的调用也会占用系统资源和网络资源,从而造成数据迀移所占资源减少,迀移效率降低。 [0097]有上述结论可知,当集群对任务处理过程中,选择对任务调度的优化及系统参数 的正确配置都会对任务的执行效率产生影响。
[0098]本发明基于MapReduce架构,对任务调度器进行了优化改进,只是将任务依据不同 节点任务的可负载量分配到实时任务负载较小的TaskTracker上执行,对任务较密集的作 业性能提升较为明显,但是对于任务密集较小的作业,效果不明显且会在使用过程中占用 一部分系统资源,影响系统性能,而在未来的研究中,可以根据各节点CPU利用率、数据吞吐 率、内存异构等因素,提高系统对于任务密集型、数据密集型的数据迀移作业的迀移效率。
[0099]上述【具体实施方式】仅是本发明的具体个案,本发明的专利保护范围包括但不限于 上述【具体实施方式】,任何符合本发明的一种基于任务负载的数据迀移方法的权利要求书的 且任何所述技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利 保护范围。
【主权项】
1. 一种基于任务负载的数据迁移方法,其特征在于,其实现过程为,在关系型数据库中 抽取数据,并对数据进行格式转换;开始执行数据迁移,该数据迁移过程采用MapReduce架 构,具体迁移过程为:首先在数据源导入数据,生成对应的运行类打包成jar包,传递给 化doop平台存储和处理。2. 根据权利要求1所述的一种基于任务负载的数据迁移方法,其特征在于,在执行数据 迁移操作前,首先要完成相关基本信息的配置,该相关基本信息包括,数据迁出的位置信 息、数据迁移目的地的地址信息、数据迁移过程中使用map的数量W及现有分布式集群各个 节点的服务器基本的配置情况,完成基本的配置后,开始执行数据迁移操作。3. 根据权利要求1所述的一种基于任务负载的数据迁移方法,其特征在于,所述数据迁 移的具体过程为: 步骤一、首先设置参数,解析任务执行的预设信息并设置数据源和数据输出路径; 步骤二、在预设的数据源中获取数据; 步骤Ξ、转换数据格式,即将数据由原来的格式转换为大数据平台可存储的数据格式; 步骤四、对数据进行划分分配,下发至集群中的每个节点; 步骤五、最后将数据写入到对应的输出路径中。4. 根据权利要求3所述的一种基于任务负载的数据迁移方法,其特征在于,所述步骤一 的具体实现过程为: 首先解析关于任务执行的系统预设信息,即设置待迁移数据的基本信息W及数据迁移 中的数据信息,该系统预设信息包括数据是否备份、数据的获取路径、数据的输出路径、数 据的原始格式、数据的输出格式、对数据进行划分和计算的Mapper类和Reducer类; 然后设置数据源,即解析等待迁移的数据目前的存储的置,为数据迁移操作做准备; 最后设置数据的输出路径,即将数据格式转换后的输出数据保存的位置,该数据的输 出路径采用皿ase表。5. 根据权利要求3所述的一种基于任务负载的数据迁移方法,其特征在于,所述步骤二 在预设的数据源中获取数据的具体过程为:通过化va编程的方式,利用JDBC获取预设的关 系型数据库中的数据源,获取后输出的结果集是名为ResultSet的化va对象,相对应的,步 骤Ξ中的转换数据格式是指将ResultSet对象经数据格式转换成为键值对Key/Value的形 式。6. 根据权利要求3所述的一种基于任务负载的数据迁移方法,其特征在于,所述步骤四 数据划分及下发相关数据的过程为:启动MapReduce,通过MapReduce进行数据的划分和计 算,然后通过Map对任务进行分配,下发至集群中的每个节点,最后通过Reduce进行计算,将 最后的结果集写入到目标地址,当所有数据完整的写入到大数据平台后,实现关系型数据 库数据迁移至大数据平台的目的。7. 根据权利要求6所述的一种基于任务负载的数据迁移方法,其特征在于,所述步骤四 的具体实现过程为: 在数据划分及下发相关数据的过程中,通过MapReduce的map将任务分配到各个节点中 进行处理,即将数据划分后分别分发至每个节点的化skTracker中,然后把数据写入到用户 预设的皿ase表中进行存储; 其中通过Map对任务进行分配,下发至集群中的每个节点的具体过程为:当检测到 TaskTracker有空闲的Slot时,系统对其I/O资源占用情况进行检测,若该节点的I/O资源占 用为所有节点中最少,且该节点任务负载赌值满足预设的阔值时,Jobhacker将自动将任 务分配给该化sk化acker;反之,若发现此时该节点的I/O资源被大量占用或者任务负载赌 值较大,等待处理的任务较多,则不将任务分配给该节点。8. 根据权利要求7所述的一种基于任务负载的数据迁移方法,其特征在于,上述任务分 配通过任务调度器完成,该任务调度器的具体操作过程为: 首先将系统文件mapred-site . xml中的相应字段设置为任务调度器类 org. apache. hadoop. mapred. TaskScheduler,使得其可在后面的任务调度中被使用; 然后实现基于任务负载的任务调度器的过程,对化bTracker中的Assign化sk方法进行 设计编写,运个方法的TaskTrackerStatus字段中包含有TaskTracker在屯、跳信息 Hea;rtbeat中提交的相关信息,该相关信息包括MapSlot数量的最大值、ReduceSlot数量的 最大值、虚拟内存最大值、物理内存、剩余可用磁盘空间的大小、每个任务的执行状态、磁盘 存取状态、剩余Slot数量、磁盘存取速率、CPU的实时状态; 在对任务进行分配过程中,JobTracker利用化skTracker通过屯、跳信息化artbeat发送 得到的信息来判断将任务分配给哪些节点,其中主要参数有Slot使用情况、磁盘存取状态、 任务阻塞、等待状态。9. 根据权利要求8所述的一种基于任务负载的数据迁移方法,其特征在于,基于上述任 务调度器,具体的任务调度情况为: 如果节点的化sk化acker中所有的slot都已经被占用,则任务调度器则拒绝将新的任 务分配至该TaskTracker; 若化sk化acker上尚且存在空闲的Slot,则需要对磁盘占用情况,任务等待情况等进行 监测判断: a) .若当前节点负载任务情况,依据任务负载均衡评测模型计算得到的Pi值高于平均值 ,则不将新任务分配给该节点; b) . 1若当前节点负载情况,依据任务负载均衡评测模型计算得到的Pi值低于平均值;, 则该节点可W接受新任务。10. 根据权利要求3所述的一种基于任务负载的数据迁移方法,其特征在于,所述步骤 五中将数据写入皿ase的具体过程为:每个节点的化sMYacker对任务进行计算处理输出数 据,将读取到的键值对数据写入皿ase表;数据迁移过程随着系统中Map任务全部结束而结 束,反之,若数据迁移尚未结束,则TaskTracker将继续将任务分配给每个化sk化acker进行 处理。
【文档编号】G06F17/30GK106095940SQ201610415905
【公开日】2016年11月9日
【申请日】2016年6月14日 公开号201610415905.4, CN 106095940 A, CN 106095940A, CN 201610415905, CN-A-106095940, CN106095940 A, CN106095940A, CN201610415905, CN201610415905.4
【发明人】耿玉水, 孙涛, 袁家恒, 姜雪松
【申请人】齐鲁工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1