技术领域
[0001] 本发明涉及大数据处理技术领域,尤其涉及一种优化方法及系统。
相关背景技术
[0002] 常见的优化方法底层硬件基础设施由专有运行的物理服务器变为了云数据中心资源池中的虚拟服务器。
[0003] 现有的处理器优化方法只能对性能进行单方面的提高优化,不仅无法缩短作业时间,反而会增加资源的消耗,影响整个集群的性能。
具体实施方式
[0058] 应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0059] 参照图1,图1为本发明优化方法第一实施例的流程示意图。
[0060] 在本实施例中,所述优化方法应用于优化系统,所述优化方法包括以下步骤:
[0061] 步骤S10:计算任务在不同阶段的时间权重占比。
[0062] 需要说明的是,优化方法应用于优化系统,如图2所示,图2为优化系统的结构示意图,优化系统包括:云端大数据模块1、数据存储模块2、数据分析模块3以及安全监控模块4,云端大数据模块1包括有服务部署模块10以及性能优化模块11。
[0063] 云端大数据模块1中的性能优化模块11可优化宿主机所占资源最小的同时使得宿主机能够有充足的资源调度虚拟机的各种I/O请求,达到最大化虚拟机性能的目的;对节点的网络带宽进行聚类学习,将相互间传输性能高的节点归为同一机架,从而提高数据在存储和处理时的性能。
[0064] 性能优化模块11在最小化开销并且满足用户任务的目标的情况下,自动为云租户提供和部署适合的虚拟集群资源。性能优化模块11可将物理宿主机当做数据块的分配单元,从而避免多个副本位于同一物理节点,同时平衡各个虚拟机的负载提高处理能力。
[0065] 性能优化模块11还可通过各个任务的完成时间规划任务在各个节点的执行,从而提高本地任务比例,缩短任务阶段的完成时间,因此,性能优化模块可计算任务在不同阶段的时间权重占比,从而可计算各个任务的完成时间。
[0066] 可选地,云端大数据模块1中还包括有服务部署模块10,在性能优化模块11对任务进行规划之前,服务部署模块10会对任务进行弹性扩展,因此,在步骤S10之前,还包括:获取用户的访问需求;根据所述访问需求得到任务信息;对所述任务信息进行分析,确定任务类型;根据所述任务类型对任务进行弹性扩展,得到任务的存储信息。
[0067] 在具体实施中,服务部署模块10可获取用户的访问需求,使得云租户能够在用户有需求时快速访问使用自身需求的服务和资源,并且能够在资源需求变化时快速弹性伸缩,在提高资源利用率的同时减少租赁虚拟集群的费用。
[0068] 当服务部署模块10获取到用户的访问需求时,可根据访问需求得到任务信息,并对任务信息进行分析,确定任务类型,任务类型包括有敏感型任务和非敏感型任务,从而可根据任务类型对任务进行弹性扩展,得到任务的存储信息。
[0069] 敏感型任务为对CPU敏感的任务,对于敏感型任务,横向扩展效果较好,因此可将阵列节点的磁盘划分为多个数据模块,数据模块均匀分布在存储池的所有副本池上;多个固定长度的数据模块组成一个逻辑卷,将所有盘阵中的副本池组织成一个统一的逻辑资源池,通过对象存储协议将逻辑卷映射到客户端,将物理磁盘划分成大小统一的数据模块,多个数据模块组成副本池,副本池的集合构成统一的存储资源池。非敏感型任务为对CPU不敏感的任务,对于非敏感型任务,纵向扩展效果较好,纵向扩展将所有副本池的地址空间分区并统一编址后映射到哈希环上,每个存储单元分区负责一个特定范围内的地址空间路由以及相应的数据存储,当客户端对区块上的数据进行读写时,通过哈希运算查询区块的存储地址,从而可根据纵向扩展或横向扩展得到任务的存储信息,包括任务的存储资源池或存储地址。
[0070] 步骤S20:根据所述时间权重占比计算任务基于全局进度和局部进度的运行时间。
[0071] 应理解的是,当性能优化模块11计算得到时间权重占比后,可根据时间权重占比计算任务基于全局进度和局部进度的运行时间。
[0072] 在得到任务在各个阶段的时间权重占比之后,可对任务完成时间进行预测,从而确定任务基于全局进度和局部进度的运行时间。
[0073] 步骤S30:根据任务基于全局进度和局部进度的运行时间规划任务在各个节点的执行策略,进行任务优化。
[0074] 在具体实施中,可通过任务基于全局进度和局部进度的运行事件规划任务在各个节点的执行策略,对任务进行优化,通过对任务处理进度和速度的检测和对比,更加准确的预测任务的完成时间,从而提高推测性任务执行的效率。
[0075] 进一步地,优化系统的安全监控模块4可在性能优化模块11对任务进行优化后实时监控集群中各个节点的系统信息,从而可对系统进行优化,则在步骤S30之后,还包括:获取云端节点中集群的各个节点的系统信息;根据所述系统信息得到监控日志;根据所述监控日志进行系统调优和优化分析。
[0076] 应理解的是,安全监控模块4的内部设置有监控子系统,监控子系统能够监控集群中各个节点的系统信息,例如CPU状态、内存利用率和磁盘I/O;此外,通过资源监控获得的监控日志进行系统调优和优化分析。安全监控模块4的内部还设有云端协调节点开启apache(网页服务器软件)服务,通过监控端收集位于远程位置的云端节点,通过Proxy代理层接受被监控机器的配置信息,再定时将数据传送给服务端,代理层本地只保存最近没有发送的数据,从而结束整个性能优化方法。
[0077] 安全监控模块4通过把监控服务端部署在云端的协调节点上,负责存储客户端发来的数据以便进行下一步处理。所有的监控信息包括静态信息和配置信息都将被展示在基于WEB的面板上,通过监控面板,用户可以清楚的了解系统当前状态情况,从而提高了该方法在对数据进行优化时的安全性,使得该方法的不会轻易受到攻击;安全监控模块4通过监控端收集位于远程位置的云端节点,通过代理层接受被监控机器的配置信息,再定时将数据传送给服务端,代理层本地只保存最近没有发送的数据,此外,所有配置将在服务端进行。用户可以通过特定的接口进入监控子系统界面查看节点信息以及科学分析过程中的性能信息。监控子系统设计成层级结构,适合节点比较多的规模,同时配置与维护比较便捷,从而也提高了该方法在使用时的便利性。
[0078] 安全监控模块4所有配置将在服务端进行;用户可以通过特定的接口进入监控子系统界面查看节点信息以及科学分析过程中的性能信息;监控子系统设计成层级结构,适合节点比较多的规模,同时配置与维护比较便捷;用户通过Web客户端验证身份,成功则登录进云端系统,然后上传私有的数据集并进行格式转换,等到数据处理完成后通过数据加载模块进入云端存储和分析子系统,最后这些数据通过Chunking机制被分布在云端系统集群的每个Worker节点上;在进行科学分析时,云端分析模块将对存储在SciDB(数据管理系统)中的数据进行分析,并将分析结果返回给用户。
[0079] 在具体实施中,安全监控模块4可获取云端节点中集群的各个节点的系统信息,安全监控模块4可通过SNMP收集各种各样的系统信息,包括CPU和内存使用率、网络吞吐量,然后将收集到的信息存入文本日志,在特定的时间戳后把搜集到的数据发送到监控服务端;同时,允许用户配置事件报警。
[0080] 应理解的是,安全监控模块4可根据系统信息得到监控日志,从而通过监控日志对系统进行系统调优和优化分析。
[0081] 具体地,根据所述监控日志进行系统调优和优化分析的步骤包括:根据所述监控日志得到云平台的计算资源;确定所述计算资源是否达到扩容阈值;在所述计算资源未达到所述扩容阈值时,在系统中的容器运行完成第一计算任务后,控制容器串行运行第二计算任务,完成系统调优和优化分析。
[0082] 需要说明的是,可根据监控日志得到云平台的计算资源,并将云平台的计算资源与扩容阈值进行比较,确定计算资源是否达到扩容阈值,若计算资源未达到扩容阈值,则系统中的容器运行完成第一计算任务后,控制容器串行运行第二计算任务,从而根据扩容策略增加容器的CPU以及CPU数量。具体分为两部分:监控客户端和监控服务端,监控客户端部署在每个需要被监控的节点上。
[0083] 可选地,优化系统的数据存储模块2和数据分析模块3可在性能优化模块11对任务进行优化后对用户输入的数据进行存储和分析,则在步骤S30之后,还包括:获取用户上传的科学数据;将所述科学数据分布式存储在集群的节点上;通过数据分析引擎对所述科学数据进行分析,得到用户输入的任务信息。
[0084] 在具体实施中,数据存储模块2可将用户上传的科学数据分布式存储在集群的节点上,数据分析模块3通过数据分析引擎对科学数据进行分布式分析,从而得到用户输入的任务信息,便于后续的任务监控。
[0085] 在用户通过云端上传了科学数据以后,数据存储模块2中的SciDB引擎会把载入的数据在协调节点分成相同边界大小的Chunk块,接着采用数据块分布算法把存储块Chunk分布在集群的所有数据库实例上,每个数据块实例只存储部分数据片,这些数据片的大小以及位置的元数据信息会被保存在系统目录中,保证数据的安全实用性,Chunk的范围大小由数组的两个维度i,j组成,i和j的长度分别为i和j维度上Cell的个数,每个chunk的i长度为5,j长度为8,因此Chunk范围大小为40,表示一个Chunk由40个Cell组成。
[0086] 数据分析模块3负责用户输入的科学分析语句的执行,它包含了大量的数组相关算法,方便进行数组操作,如聚集,矩阵相乘、转置、求逆;方便进行科学数据的分析操作;集群节点的每个数据库实例只对本地存储的数据进行分析,数据分析模块3进行多个机器并行分析时会有大量的Chunk块传输,Chunk块的大小会影响系统的性能;而数据分析引擎是基于SciDB的,其采用的是固定的存储块Chunk大小。
[0087] 本实施例通过将优化方法应用于优化系统,方法包括计算任务在不同阶段的时间权重占比;根据所述时间权重占比计算任务基于全局进度和局部进度的运行时间;根据任务基于全局进度和局部进度的运行时间规划任务在各个节点的执行策略,进行任务优化,缩短任务完成时间,提高处理效率。
[0088] 参考图3,图3为本发明优化方法第二实施例的流程示意图。
[0089] 基于上述第一实施例,本实施例优化方法所述步骤S10,具体包括:
[0090] 步骤S101:获取任务数据集合,并对所述任务数据集合进行遍历,得到核心点。
[0091] 需要说明的是,性能优化模块11可获取任务数据集合,通过对任务集合中的点进行遍历,从而寻找核心点。
[0092] 性能优化模块11可使用expandCluster·函数对任务数据集合进行扩展,扩展的方法是对其E邻域内的点(也就是直接密度可达的点)集合neighbors进行遍历,找出其中的核心点。
[0093] 步骤S102:将所述核心点进行聚类,得到核心点簇族。
[0094] 应理解的是,性能优化模块11可将核心点进行聚类,得到核心点簇族。性能优化模块11将其邻域内的点tmpNei曲bors也加入到neighbors中,继续进行遍历,直到所有的密度可达的点被遍历完毕,该簇类便最终形成。随后,对于被没有标记搜索的点继续进行遍历,找出所有的簇类。至此,任务的阶段权重聚类完毕。
[0095] 步骤S103:根据所述核心点簇族计算返回任务数据集合中各个点的平均值,并将所述平均值作为对应任务在不同阶段的时间权重占比。
[0096] 需要说明的是,对于每一个核心点簇族,返回其所有点的平均值作为该簇类最终的当前阶段的时间权重,反映这一类任务的阶段的时间权重占比。在每一个节点上,任务的阶段权重被聚类学习完毕之后,性能优化模块11将这些任务阶段的时间权重信息放置到分布式文件系统中,方便在线的推测性任务执行算法进行使用。
[0097] 本实施例通过获取任务数据集合,并对所述任务数据集合进行遍历,得到核心点;将所述核心点进行聚类,得到核心点簇族;根据所述核心点簇族计算返回任务数据集合中各个点的平均值,并将所述平均值作为对应任务在不同阶段的时间权重占比,从而提高数据在存储和处理时的性能。
[0098] 参考图4,图4为本发明优化方法第三实施例的流程示意图。
[0099] 基于上述第一实施例,本实施例优化方法所述步骤S20,具体包括:
[0100] 步骤S201:根据所述时间权重占比计算任务实际进度信息。
[0101] 需要说明的是,可根据时间权重占比计算任务实际进度信息,任务实际进度信息为任务真实的进度,原有的进度基于默认的固定权重占比信息而计算得出,不一定准确,可通过不同阶段的时间权重占比灵活计算任务实际进度信息,提高计算准确性。
[0102] 步骤S202:获取任务消耗时间。
[0103] 应理解的是,任务消耗时间可直接检测得到,即任务已经花费的时间。
[0104] 步骤S203:通过所述任务实际进度信息和所述任务消耗时间计算任务的平均速度。
[0105] 在具体实施中,性能优化模块11可根据任务实际进度信息以及任务消耗时间计算任务在过去这一段时间的平均速度。
[0106] 步骤S204:通过所述平均速度得到任务基于全局进度和局部进度的运行时间。
[0107] 需要说明的是,可根据平均速度计算得到任务基于全局进度的运行时间以及任务基于局部进度的运行时间,从而减少用户在等待时的焦虑,提高使用的便利性,计算的算法如下:
[0108] 输入:任务taskID,任务进度progress,已花费时间spentTime,执行节点node,任务当前阶段速度TPR
[0109] 输出∶运行时间estimatedTime 1weight←getEstimatedWeight(node);
[0110] realProgress←CalRealProgress(progress,weight);
[0111] timeBasedGlobal←spentTime/realProgress;
[0112] timeBasedPhase←calPhaseTime(progress,weight,TPR,spentTime),β←realProgress*Y;
[0113] estimatedTime——timeBasedGlobal*β+timeBasedPhase*(1‑β);
[0114] return estimatedTime;
[0115] Function getEstimatedWeight(node)
[0116] if the node has finished this kind of task then
[0117] weightForJob←getMeanWeightOnNode(node);
[0118] else
[0119] weightForJob———getMean WeightForJob()
[0120] end
[0121] for each histWeight in historyWeighonNode(node)do
[0122] dist——calEucliDist(weightForJob,histWeight);
[0123] end
[0124] weight——histweight with the minimum dist;P
[0125] return weight;
[0126] Function calPhaseTime(progress,weight,TPR,spentTime)
[0127] progressInPhase←calProgressInPhase(progress,Weight);
[0128] estimatedTimeInPhase—(1‑progressInPhase)/TPR;
[0129] completedPhaseWeight←calcompleted Weight(progress,Weight);
[0130] timeBasedPhase‑(spentTime+stimatedTimelnPhase)/completedPhaseWeight;
[0131] return timeBasedPhase;
[0132] 本实施例通过根据所述时间权重占比计算任务实际进度信息;获取任务消耗时间;通过所述任务实际进度信息和所述任务消耗时间计算任务的平均速度;通过所述平均速度得到任务基于全局进度和局部进度的运行时间,提高了使用时的便利性。
[0133] 参考图5,图5为本发明优化方法第四实施例的流程示意图。
[0134] 基于上述第一实施例,本实施例优化方法在所述步骤S30之后,还包括:
[0135] 步骤S31:获取载入到预设存储库中的数组。
[0136] 需要说明的是,性能优化模块11中包括有存储库分割模块,存储分割模块可获取载入到预设存储库中的数组,预设存储库为SciDB。
[0137] 步骤S32:将所述数组分割到各个节点的系统实例上,得到子数组数据,并接收各个节点通过自身的引擎对所述子数组数据中的子数组进行组块分割后的组块信息。
[0138] 存储库分割模块可将数组分割到各个节点的系统实例上,从而得到子数组数据,当数组分割到各个节点的系统实例上时,每个节点通过自身的引擎对子数组数据中的子数组进行组块分割,得到组块信息。将分成的Chunk(组块)以轮询算法重新分布到集群的所有节点中;在这个过程中,每个SciDB节点需要对分配到本地的子数组进行Chunk的分割,而Chunk的大小范围由数组的每个维度的长度组成。
[0139] 可选地,性能优化模块11中还包括分割优化模块,则在步骤S32之后,还包括:根据载入到预设存储库中的数据总量计算磁盘每个柱面的容量信息;根据所述容量信息得到系统中读写单元容量;根据所述读写单元容量得到初始组块总数;根据载入到预设存储库中的数组得到每个维度的长度比值,并根据所述每个维度的长度比值得到组块中每条边长的比值,得到组块的维度长度,对组块进行分割优化。
[0140] 需要说明的是,分割优化模块可根据载入到SciDB中的数据总量计算出磁盘每个柱面的容量大小,即每个柱面的容量信息。
[0141] 在具体实施中,分割优化模块可根据容量信息得到操作系统中的读写单元容量,即Block大小,从而根据读写单元容量得到初始的Chunk总数,并根据载入到SciDB中的数组得到数组中各个维度的长度比值以及每个维度长度的乘积,从而通过每个维度的长度的乘积和初始组块总数的比值得到组块的面积Cell总数,并根据每个维度的长度比值得到组块中每条边长的比值,最以后得到组块的维度长度,从而可对组块进行分割优化。
[0142] 可选地,如图6所示,优化系统还包括有启动模块5,云端大数据模块1中还包括数据安全模块12,启动模块5启动后,云端大数据模块1开始工作。数据安全模块12用于计算和存储分离,在用户上传数据时,将数据存储到由物理机构成的分布式存储系统中,在数据存储的位置启动虚拟集群完成数据的处理,提高数据的访问效率;将数据存储到Azure的BLOB非结构化数据对象存储系统中,利用系统对数据块位置的感知提高map、reduce任务对数据的访问效率。
[0143] 本实施例通过获取载入到预设存储库中的数组;将所述数组分割到各个节点的系统实例上,得到子数组数据,并接收各个节点通过自身的引擎对所述子数组数据中的子数组进行组块分割后的组块信息,可快速对数组进行分割,从而提高数据处理的效率。
[0144] 为实现上述目的,本实施例还提出一种优化系统,所述优化系统包括:云端大数据模块、数据存储模块、数据分析模块以及安全监控模块,所述云端大数据模块包括服务部署模块以及性能优化模块;所述云端大数据模块,用于根据用户的访问需求确定任务信息,并根据所述任务信息对任务进行优化;所述数据存储模块,用于将用户上传的数据分布式存储在集群的节点上;所述数据分析模块,用于对用户输入的数据进行分析;所述安全监控模块,用于获取系统信息,并通过所述系统信息进行系统调优和优化分析。
[0145] 由于本优化系统采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
[0146] 应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
[0147] 需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
[0148] 另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的优化方法,此处不再赘述。
[0149] 此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0150] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0151] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0152] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。