一種數(shù)據(jù)處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法及裝置。
【背景技術(shù)】
[0002] 近年來(lái),隨著社會(huì)信息化的快速發(fā)展,無(wú)論在科學(xué)研宄、工業(yè)生產(chǎn)、商業(yè)和互聯(lián)網(wǎng) 領(lǐng)域,數(shù)據(jù)都呈現(xiàn)出爆炸式增長(zhǎng)。目前,很多應(yīng)用中的數(shù)據(jù)已從太字節(jié)(Terabyte,TB)級(jí) 迅速發(fā)展到拍字節(jié)(Petabyte,PB)級(jí)甚至更高的數(shù)量級(jí)。因此,面向大數(shù)據(jù)處理的計(jì)算 框架已經(jīng)成為熱點(diǎn)話題,其中具有代表性的計(jì)算框架包括海杜普(Hadoop)和Spark等。 Hadoop和Spark等框架都在計(jì)算機(jī)技術(shù)領(lǐng)域獲得了廣泛的應(yīng)用,但是每個(gè)計(jì)算框架均存在 不足:例如,Hadoop提供的映射規(guī)約(MapReduce)模型雖然簡(jiǎn)單易用,但是其計(jì)算模型具 有局限性,表達(dá)能力有限,在解決諸如迭代計(jì)算、圖分析等復(fù)雜問(wèn)題時(shí),很難將算法映射到 MapReduce模型中,且開(kāi)發(fā)的工作量大,運(yùn)行效率低下;而Spark雖然迭代運(yùn)算性能好,但是 對(duì)內(nèi)存要求很高。
[0003] 因此,大數(shù)據(jù)處理的發(fā)展趨勢(shì)為通過(guò)融合多種計(jì)算框架的數(shù)據(jù)處理平臺(tái)處理大數(shù) 據(jù),即在計(jì)算機(jī)的集群中通過(guò)資源管理系統(tǒng)來(lái)容納多種計(jì)算框架,典型的資源管理系統(tǒng)如 Mesos 以及 YARN 等。
[0004] 然而,由于這類資源管理系統(tǒng)允許包含的多種計(jì)算框架共享一個(gè)集群資源,且每 個(gè)計(jì)算框架的編程語(yǔ)言不盡相同,因此,收到待處理的數(shù)據(jù)任務(wù)時(shí),用戶通常根據(jù)經(jīng)驗(yàn)指定 計(jì)算框架執(zhí)行該待處理數(shù)據(jù)任務(wù),而不是通過(guò)運(yùn)行時(shí)間和資源消耗選擇計(jì)算框架,數(shù)據(jù)處 理效率較低,降低了系統(tǒng)的工作性能。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法及裝置,用以解決現(xiàn)有技術(shù)中融合多種計(jì)算 框架的資源管理系統(tǒng)在處理數(shù)據(jù)任務(wù)時(shí),不是通過(guò)運(yùn)行時(shí)間和資源消耗選擇計(jì)算框架,數(shù) 據(jù)處理效率較低的問(wèn)題,降低了系統(tǒng)的工作性能。
[0006] 本發(fā)明實(shí)施例提供的具體技術(shù)方案如下:
[0007] 第一方面,一種數(shù)據(jù)處理方法,包括:
[0008] 接收任務(wù)請(qǐng)求,所述任務(wù)請(qǐng)求中攜帶有用戶提交的任務(wù);
[0009] 根據(jù)所述任務(wù)請(qǐng)求中的所述任務(wù),生成包含至少一個(gè)子任務(wù)的子任務(wù)集;
[0010] 確定執(zhí)行每個(gè)子任務(wù)的輸入數(shù)據(jù);
[0011] 針對(duì)所述子任務(wù)集中的每個(gè)子任務(wù)執(zhí)行以下操作:
[0012] 在系統(tǒng)配置的所有計(jì)算框架中確定具有執(zhí)行該子任務(wù)的能力的計(jì)算框架作為候 選計(jì)算框架,其中,所述候選計(jì)算框架的數(shù)目大于或等于2 ;
[0013] 根據(jù)該子任務(wù)的輸入數(shù)據(jù)、以及每個(gè)候選計(jì)算框架對(duì)應(yīng)的預(yù)測(cè)模型,分別預(yù)測(cè)每 個(gè)候選計(jì)算框架執(zhí)行該子任務(wù)時(shí)對(duì)應(yīng)的運(yùn)行時(shí)間和資源消耗;
[0014] 根據(jù)預(yù)測(cè)的每個(gè)候選計(jì)算框架執(zhí)行該子任務(wù)時(shí)對(duì)應(yīng)的運(yùn)行時(shí)間和資源消耗,在所 述候選計(jì)算框架中,篩選出執(zhí)行該子任務(wù)的目標(biāo)計(jì)算框架;
[0015] 基于篩選出的執(zhí)行所述子任務(wù)集中的每個(gè)子任務(wù)的目標(biāo)計(jì)算框架,執(zhí)行對(duì)應(yīng)的子 任務(wù)。
[0016] 結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述任務(wù)請(qǐng)求中還攜帶有所述任務(wù) 的輸入數(shù)據(jù);
[0017] 確定執(zhí)行每個(gè)子任務(wù)的輸入數(shù)據(jù),包括:
[0018] 根據(jù)所述任務(wù)請(qǐng)求中攜帶的所述任務(wù)的輸入數(shù)據(jù),確定執(zhí)行每個(gè)子任務(wù)的輸入數(shù) 據(jù)。
[0019] 結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,接收任務(wù)請(qǐng)求之前,還包括:
[0020] 在系統(tǒng)配置的所有計(jì)算框架中,將具有執(zhí)行相同任務(wù)類型的所有計(jì)算框架中的、 執(zhí)行所述相同任務(wù)類型的應(yīng)用程序接口 API通過(guò)預(yù)設(shè)的編程語(yǔ)言進(jìn)行封裝,形成統(tǒng)一 API ;
[0021] 在系統(tǒng)配置的所有計(jì)算框架中確定具有執(zhí)行該子任務(wù)的能力的計(jì)算框架作為候 選計(jì)算框架,包括:
[0022] 確定該子任務(wù)的任務(wù)類型;
[0023] 確定該子任務(wù)的任務(wù)類型對(duì)應(yīng)的統(tǒng)一 API ;
[0024] 根據(jù)確定的所述統(tǒng)一 API,確定具有執(zhí)行該子任務(wù)的任務(wù)類型的所有計(jì)算框架,并 將確定的計(jì)算框架作為候選計(jì)算框架。
[0025] 結(jié)合第一方面或第一方面的以上任一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方 式中,獲得候選計(jì)算框架對(duì)應(yīng)的預(yù)測(cè)模型,包括:
[0026] 讀取預(yù)設(shè)的訓(xùn)練樣本集合,所述訓(xùn)練樣本集合是針對(duì)所述候選計(jì)算框架執(zhí)行該子 任務(wù)的能力預(yù)設(shè)的;
[0027] 分別以運(yùn)行時(shí)間、資源消耗為目標(biāo)特征,對(duì)所述訓(xùn)練樣本集合中除運(yùn)行時(shí)間、資源 消耗以外的其它特征進(jìn)行訓(xùn)練,得到所述候選計(jì)算框架對(duì)應(yīng)的預(yù)測(cè)模型。
[0028] 結(jié)合第一方面或第一方面的以上任一種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方 式中,根據(jù)預(yù)測(cè)的每個(gè)候選計(jì)算框架執(zhí)行該子任務(wù)時(shí)對(duì)應(yīng)的運(yùn)行時(shí)間和資源消耗,在所述 候選計(jì)算框架中,篩選出執(zhí)行該子任務(wù)的目標(biāo)計(jì)算框架,包括:
[0029] 在所述候選計(jì)算框架中,選擇預(yù)測(cè)的資源消耗小于系統(tǒng)的可用資源的候選計(jì)算框 架作為第一候選計(jì)算框架;
[0030] 在所述第一候選計(jì)算框架中,篩選出預(yù)測(cè)的運(yùn)行時(shí)間最小的第一候選計(jì)算框架作 為目標(biāo)計(jì)算框架。
[0031] 結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,基于確定 的執(zhí)行所述子任務(wù)集中的每個(gè)子任務(wù)的目標(biāo)計(jì)算框架,執(zhí)行對(duì)應(yīng)的子任務(wù)之后,還包括:
[0032] 將在該子任務(wù)的目標(biāo)計(jì)算框架中執(zhí)行該子任務(wù)產(chǎn)生的各個(gè)特征,作為新的訓(xùn)練樣 本;
[0033] 將所述新的訓(xùn)練樣本添加至所述訓(xùn)練樣本集合。
[0034] 第二方面,一種數(shù)據(jù)處理裝置,包括:
[0035] 接收單元,用于接收任務(wù)請(qǐng)求,所述任務(wù)請(qǐng)求中攜帶有用戶提交的任務(wù);
[0036] 生成單元,用于根據(jù)所述任務(wù)請(qǐng)求中的所述任務(wù),生成包含至少一個(gè)子任務(wù)的子 任務(wù)集;
[0037] 確定單元,用于確定執(zhí)行每個(gè)子任務(wù)的輸入數(shù)據(jù);
[0038] 處理單元,用于針對(duì)所述子任務(wù)集中的每個(gè)子任務(wù)執(zhí)行以下操作:
[0039] 在系統(tǒng)配置的所有計(jì)算框架中確定具有執(zhí)行該子任務(wù)的能力的計(jì)算框架作為候 選計(jì)算框架,其中,所述候選計(jì)算框架的數(shù)目大于或等于2 ;
[0040] 根據(jù)該子任務(wù)的輸入數(shù)據(jù)、以及每個(gè)候選計(jì)算框架對(duì)應(yīng)的預(yù)測(cè)模型,分別預(yù)測(cè)每 個(gè)候選計(jì)算框架執(zhí)行該子任務(wù)時(shí)對(duì)應(yīng)的運(yùn)行時(shí)間和資源消耗;
[0041] 根據(jù)預(yù)測(cè)的每個(gè)候選計(jì)算框架執(zhí)行該子任務(wù)時(shí)對(duì)應(yīng)的運(yùn)行時(shí)間和資源消耗,在所 述候選計(jì)算框架中,篩選出執(zhí)行該子任務(wù)的目標(biāo)計(jì)算框架;
[0042] 運(yùn)行單元,用于基于篩選出的執(zhí)行所述子任務(wù)集中的每個(gè)子任務(wù)的目標(biāo)計(jì)算框 架,執(zhí)行對(duì)應(yīng)的子任務(wù)。
[0043] 結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述接收單元接收的所述任務(wù)請(qǐng)求 中還攜帶有所述任務(wù)的輸入數(shù)據(jù);
[0044] 所述確定單元,用于:
[0045] 根據(jù)所述任務(wù)請(qǐng)求中攜帶的所述任務(wù)的輸入數(shù)據(jù),確定執(zhí)行每個(gè)子任務(wù)的輸入數(shù) 據(jù)。
[0046] 結(jié)合第二方面,在第二種可能的首先方式中,配置單元,用于在接收任務(wù)請(qǐng)求之 前,在系統(tǒng)配置的所有計(jì)算框架中,將具有執(zhí)行相同任務(wù)類型的所有計(jì)算框架中的、執(zhí)行所 述相同任務(wù)類型的應(yīng)用程序接口 API通過(guò)預(yù)設(shè)的編程語(yǔ)言進(jìn)行封裝,形成統(tǒng)一 API ;
[0047] 所述處理單元,在系統(tǒng)配置的所有計(jì)算框架中確定具有執(zhí)行該子任務(wù)的能力的計(jì) 算框架作為候選計(jì)算框架時(shí),用于:
[0048] 確定該子任務(wù)的任務(wù)類型;
[0049] 確定該子任務(wù)的任務(wù)類型對(duì)應(yīng)的統(tǒng)一 API ;
[0050] 根據(jù)確定的所述統(tǒng)一 API,確定具有執(zhí)行該子任務(wù)的任務(wù)類型的所有計(jì)算框架,并 將確定的計(jì)算框架作為候選計(jì)算框架。
[0051] 結(jié)合第二方面或第二方面的以上任一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方 式中,所述處理單元在獲得候選計(jì)算框架對(duì)應(yīng)的預(yù)測(cè)模型時(shí),用于:
[0052] 讀取預(yù)設(shè)的訓(xùn)練樣本集合,所述訓(xùn)練樣本集合是針對(duì)所述候選計(jì)算框架執(zhí)行