• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    分布式環(huán)境下大規(guī)模維表關(guān)聯(lián)技術(shù)優(yōu)化

    2022-02-23 10:03:04趙恒泰趙宇海季航旭喬百友王國(guó)仁
    計(jì)算機(jī)與生活 2022年2期
    關(guān)鍵詞:數(shù)據(jù)處理關(guān)聯(lián)優(yōu)化

    趙恒泰,趙宇海+,袁 野,季航旭,喬百友,王國(guó)仁

    1.東北大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,沈陽(yáng)110169

    2.北京理工大學(xué) 計(jì)算機(jī)學(xué)院,北京100081

    隨著互聯(lián)網(wǎng)的發(fā)展和普及,網(wǎng)絡(luò)中每天產(chǎn)生的數(shù)據(jù)量在迅速增加。傳統(tǒng)的數(shù)據(jù)處理方式已經(jīng)無(wú)法面對(duì)當(dāng)前的數(shù)據(jù)規(guī)模,為了獲取這些海量的數(shù)據(jù)中潛在的價(jià)值,開(kāi)發(fā)者們提出了大數(shù)據(jù)處理技術(shù)。隨著大數(shù)據(jù)處理技術(shù)的不斷發(fā)展和計(jì)算需求的不斷更迭,到現(xiàn)在為止大數(shù)據(jù)處理技術(shù)已經(jīng)經(jīng)歷了三代計(jì)算引擎的變化。第一代大數(shù)據(jù)計(jì)算引擎以Apache Hadoop為代表,利用MapReduce進(jìn)行大數(shù)據(jù)處理。這一代計(jì)算的顯著特點(diǎn)基于物理存儲(chǔ)的計(jì)算模式。這類計(jì)算有著非常高的吞吐量,但由于每一步的計(jì)算操作都要寫(xiě)入到物理存儲(chǔ)中,基于內(nèi)存的計(jì)算速度與磁盤(pán)的I/O 開(kāi)銷的不匹配導(dǎo)致了非常高的處理延遲。這一代計(jì)算引擎適合處理實(shí)時(shí)性要求不高的離線批處理任務(wù)。這個(gè)時(shí)代的大數(shù)據(jù)分析技術(shù)以離線分析為主,需要先統(tǒng)計(jì)和獲取全部數(shù)據(jù)再進(jìn)行分析,對(duì)分析結(jié)果的實(shí)時(shí)性要求不高,更偏重于對(duì)歷史數(shù)據(jù)的總結(jié)。第二代大數(shù)據(jù)計(jì)算引擎以Apache Spark為代表,利用內(nèi)存進(jìn)行批處理計(jì)算。相對(duì)于第一代技術(shù),這一代的顯著特點(diǎn)是將計(jì)算數(shù)據(jù)移入了內(nèi)存中,基于內(nèi)存的數(shù)據(jù)進(jìn)行計(jì)算。這種基于內(nèi)存的計(jì)算方式大大降低了第一代技術(shù)中每一步計(jì)算都需要把結(jié)果寫(xiě)入磁盤(pán)產(chǎn)生的I/O 開(kāi)銷所帶來(lái)的延遲。但是由于技術(shù)仍然是建立在批處理的計(jì)算模式之上,每一個(gè)批次的數(shù)據(jù)處理都有一定的時(shí)間間隔,在面對(duì)一些實(shí)時(shí)性比較強(qiáng)的計(jì)算任務(wù)時(shí)仍無(wú)法保證極低的延遲。這個(gè)時(shí)代的大數(shù)據(jù)分析技術(shù)逐漸向在線分析靠攏,已經(jīng)有了對(duì)實(shí)時(shí)數(shù)據(jù)處理的需求。第三代大數(shù)據(jù)計(jì)算引擎以Apache Flink為代表,是完全基于流計(jì)算的數(shù)據(jù)處理引擎。Apache Flink 所提供的計(jì)算平臺(tái)可以在實(shí)現(xiàn)毫秒級(jí)的延遲下,每秒處理上億次的消息或者事件。極高的數(shù)據(jù)處理能力和極低的延遲,使以Apache Flink 為代表的流計(jì)算技術(shù)成為了實(shí)時(shí)大數(shù)據(jù)分析的首選。越來(lái)越多的公司使用流計(jì)算技術(shù)構(gòu)建自己的實(shí)時(shí)數(shù)據(jù)分析引擎來(lái)替代傳統(tǒng)的數(shù)據(jù)倉(cāng)庫(kù)分析。在這類數(shù)據(jù)處理和分析過(guò)程中,實(shí)時(shí)產(chǎn)生的流數(shù)據(jù)往往信息量不足,需要與離線存儲(chǔ)的數(shù)據(jù)進(jìn)行關(guān)聯(lián),擴(kuò)充數(shù)據(jù)屬性。離線存儲(chǔ)的數(shù)據(jù)稱為維表數(shù)據(jù),流數(shù)據(jù)和維表數(shù)據(jù)進(jìn)行關(guān)聯(lián)的過(guò)程稱為維表關(guān)聯(lián)。

    維表關(guān)聯(lián)是當(dāng)前在線大數(shù)據(jù)分析的關(guān)鍵技術(shù)之一。針對(duì)維表關(guān)聯(lián)技術(shù)在分布式環(huán)境下的優(yōu)化,主要是對(duì)維表數(shù)據(jù)查詢進(jìn)行優(yōu)化以降低查詢維表數(shù)據(jù)所帶來(lái)的I/O 開(kāi)銷和延遲。維表關(guān)聯(lián)的數(shù)據(jù)查詢優(yōu)化主要是通過(guò)異步I/O 技術(shù)增加單位時(shí)間的查詢數(shù)量和通過(guò)使用數(shù)據(jù)緩存技術(shù)將查詢到的維表緩存在分布式引擎的計(jì)算節(jié)點(diǎn)的內(nèi)存中加速查詢。通常有緩存查詢結(jié)果和緩存整個(gè)維表兩種緩存模式,其原理如圖1 所示。

    圖1 傳統(tǒng)維表關(guān)聯(lián)邏輯Fig.1 Traditional dimension table connection

    這兩種基于計(jì)算節(jié)點(diǎn)的優(yōu)化方式,都存在著各自的不足。數(shù)據(jù)全部緩存的方式因?yàn)閮?nèi)存問(wèn)題無(wú)法支持過(guò)大規(guī)模的維表。緩存查詢結(jié)果的方式對(duì)每條未緩存數(shù)據(jù)的處理時(shí)間受限于數(shù)據(jù)庫(kù)I/O 能力,會(huì)隨著維表數(shù)據(jù)規(guī)模的增大而線性上升。當(dāng)數(shù)據(jù)流速處于一個(gè)較低水平,保證數(shù)據(jù)有效性的緩存超時(shí)機(jī)制會(huì)讓每一次數(shù)據(jù)查詢都指向數(shù)據(jù)庫(kù),使本地緩存無(wú)效化,降低數(shù)據(jù)處理效率。

    針對(duì)單節(jié)點(diǎn)優(yōu)化技術(shù)的不足,本文首先提出了一種可以用于離線存儲(chǔ)的數(shù)據(jù)和實(shí)時(shí)生成的數(shù)據(jù)進(jìn)行混合計(jì)算的計(jì)算模型,然后基于該模型設(shè)計(jì)了一種新型的維表關(guān)聯(lián)技術(shù)優(yōu)化方案,其原理如圖2所示。

    圖2 優(yōu)化的維表關(guān)聯(lián)邏輯Fig.2 Optimized dimension table connection

    該方案單點(diǎn)讀取維表數(shù)據(jù),將數(shù)據(jù)切分后分發(fā)到計(jì)算節(jié)點(diǎn),然后與流數(shù)據(jù)進(jìn)行關(guān)聯(lián)。這個(gè)優(yōu)化方案每個(gè)計(jì)算節(jié)點(diǎn)只需緩存部分維表數(shù)據(jù),提高了維表數(shù)據(jù)的緩存規(guī)模,同時(shí)大幅降低維表數(shù)據(jù)查詢所產(chǎn)生的消耗。該方案將批處理技術(shù)和流計(jì)算技術(shù)進(jìn)行了結(jié)合,同是對(duì)離線的批數(shù)據(jù)和實(shí)時(shí)的流數(shù)據(jù)進(jìn)行混合計(jì)算的一種探究。

    本文主要貢獻(xiàn)如下:

    (1)提出了一種適用于對(duì)離線的批數(shù)據(jù)和實(shí)時(shí)的流數(shù)據(jù)進(jìn)行混合計(jì)算的計(jì)算模型,該計(jì)算模型可以在一套API(application programming interface)中同時(shí)處理流數(shù)據(jù)和批數(shù)據(jù),也可以單獨(dú)處理流數(shù)據(jù)或單獨(dú)處理批數(shù)據(jù)。

    (2)提出了一種單點(diǎn)讀取維表數(shù)據(jù),切分后進(jìn)行分發(fā)和計(jì)算的維表關(guān)聯(lián)數(shù)據(jù)緩存方式,降低了維表數(shù)據(jù)查詢對(duì)數(shù)據(jù)庫(kù)產(chǎn)生的壓力并提高了集群環(huán)境中計(jì)算系統(tǒng)對(duì)維表規(guī)模支持的上限。同時(shí)針對(duì)維表關(guān)聯(lián)計(jì)算邏輯進(jìn)行了優(yōu)化,使維表關(guān)聯(lián)技術(shù)不再局限于對(duì)數(shù)據(jù)的連接。

    (3)在流計(jì)算引擎Apache Flink 中對(duì)該優(yōu)化的維表關(guān)聯(lián)技術(shù)和傳統(tǒng)的維表關(guān)聯(lián)技術(shù)進(jìn)行了實(shí)現(xiàn)。通過(guò)實(shí)驗(yàn)對(duì)該維表關(guān)聯(lián)技術(shù)進(jìn)行了驗(yàn)證,實(shí)驗(yàn)結(jié)果對(duì)比顯示該方法相對(duì)于同等條件下傳統(tǒng)的維表關(guān)聯(lián)方法,可以使計(jì)算任務(wù)的吞吐量有8~9 倍的提升,同時(shí)在計(jì)算能力滿足的情況下降低40%以上的計(jì)算延遲。

    1 相關(guān)工作

    在過(guò)去的幾年時(shí)間中,針對(duì)分布式環(huán)境下維表關(guān)聯(lián)操作以及以其為代表的典型的流數(shù)據(jù)與靜態(tài)數(shù)據(jù)交互的計(jì)算的優(yōu)化研究已經(jīng)存在不少的進(jìn)展。

    為了解決海量數(shù)據(jù)關(guān)聯(lián)計(jì)算問(wèn)題,文獻(xiàn)[9]提出了一種MESHJOIN 算法,該算法優(yōu)化了單點(diǎn)計(jì)算時(shí)連續(xù)數(shù)據(jù)流和維度數(shù)據(jù)的連接過(guò)程,但該算法對(duì)內(nèi)存分配的方式不夠高效。為此,文獻(xiàn)[10]提出了一種改進(jìn)的算法用于改善內(nèi)存分配問(wèn)題。文獻(xiàn)[11]提出基于分塊思想的算法來(lái)提高M(jìn)ESHJOIN 算法的連接性能。文獻(xiàn)[12]提出MESHJOIN*算法,該算法采用多線程并發(fā)連接技術(shù),并根據(jù)工程學(xué)原理,實(shí)現(xiàn)了連接操作和關(guān)系R 讀取操作的最佳調(diào)度,保證了連接算法效率的最大化,進(jìn)一步提高連接效率。在MESHJOIN 算法的基礎(chǔ)上,文獻(xiàn)[13]又提出EHJOIN 算法,對(duì)傳統(tǒng)散列連接方法進(jìn)行改進(jìn),利用索引將部分頻繁使用的主數(shù)據(jù)存儲(chǔ)在內(nèi)存中,解決了高速數(shù)據(jù)流下的磁盤(pán)頻繁訪問(wèn)問(wèn)題。以上的算法都是基于維度數(shù)據(jù)的角度對(duì)維表連接過(guò)程進(jìn)行優(yōu)化,沒(méi)有考慮流數(shù)據(jù)的傾斜問(wèn)題,據(jù)此文獻(xiàn)[14]提出了CSJR(cachedbased stream-relation join)算法,優(yōu)化了在流數(shù)據(jù)傾斜環(huán)境下的數(shù)據(jù)連接效率。

    在分布式計(jì)算引擎領(lǐng)域,大量的開(kāi)發(fā)貢獻(xiàn)都來(lái)自于社區(qū)。而主流的分布式系統(tǒng)Apache Spark 和Apache Flink 都針對(duì)維表關(guān)聯(lián)這種場(chǎng)景做出了自己的適配。

    Apache Spark 提出了Spark Streaming用以改善計(jì)算延遲并提供流計(jì)算支持,這一計(jì)算模式通過(guò)將無(wú)限的流數(shù)據(jù)拆分成離散流(discretized stream),盡可能縮小每個(gè)彈性分布式數(shù)據(jù)集(resilient distributed dataset,RDD)的大小,構(gòu)建微量批數(shù)據(jù)集,來(lái)達(dá)到近似于流計(jì)算的效果,這個(gè)階段流計(jì)算的延遲在100 ms 級(jí)。在Spark Streaming 的技術(shù)背景下,Apache Spark 可以將維表數(shù)據(jù)定義為一個(gè)獨(dú)立的RDD,并緩存到每一個(gè)關(guān)聯(lián)節(jié)點(diǎn)上,在每一個(gè)批次的微量批數(shù)據(jù)集到達(dá)后,以局部批處理的方式進(jìn)行關(guān)聯(lián)。同時(shí)可以對(duì)RDD 內(nèi)容進(jìn)行更新以達(dá)到和離線維表數(shù)據(jù)相同的狀態(tài)。以上的更新操作需要用戶自己定義更新的邏輯。

    由于Spark Streaming 的數(shù)據(jù)傳輸是基于微量批數(shù)據(jù)集的方式進(jìn)行數(shù)據(jù)傳輸而不是真正意義上的持續(xù)傳輸,Spark 又提出了結(jié)構(gòu)化流計(jì)算(structured streaming)。在該計(jì)算模式中引入了連續(xù)處理的概念,將流計(jì)算的延遲降低到了1 ms 級(jí)的層面。同時(shí)Structured Streaming原生地支持了Stream-Static Join,但是其底層的實(shí)現(xiàn)邏輯仍是針對(duì)每個(gè)計(jì)算節(jié)點(diǎn)進(jìn)行獨(dú)立的緩存操作。

    Apache Flink 本身是基于流計(jì)算的分布式計(jì)算引擎,但是為了兼容批處理,仍獨(dú)立維護(hù)了一套用于批處理的DataSet API。Apache Flink 在1.8 版本中并未提供對(duì)維表關(guān)聯(lián)計(jì)算的官方支持,需要用戶通過(guò)一些算子手動(dòng)實(shí)現(xiàn)流計(jì)算中對(duì)維表關(guān)聯(lián)計(jì)算的支持。

    阿里巴巴公司基于Apache Flink 而構(gòu)建的開(kāi)源引擎Blink 在Table API 的層面上提出了維表關(guān)聯(lián)的操作模式,用戶需要手動(dòng)實(shí)現(xiàn)對(duì)維表數(shù)據(jù)的查詢邏輯。依靠異步查詢維表數(shù)據(jù)并緩存查詢結(jié)果的方式降低數(shù)據(jù)庫(kù)I/O 開(kāi)銷,提高查詢效率。該方案的緩存模式有數(shù)據(jù)全部緩存并定時(shí)更新和LRU Cache兩種,都是基于計(jì)算節(jié)點(diǎn)的緩存方式。

    以上的維表關(guān)聯(lián)計(jì)算設(shè)計(jì),實(shí)質(zhì)上都是在流計(jì)算過(guò)程中直接向數(shù)據(jù)庫(kù)發(fā)起查詢,將查詢邏輯都綁定在每個(gè)獨(dú)立的計(jì)算節(jié)點(diǎn)中,所有的計(jì)算節(jié)點(diǎn)都要同時(shí)訪問(wèn)數(shù)據(jù)源或緩存完整的維表信息。

    在面對(duì)高速流數(shù)據(jù)輸入時(shí),異步查詢數(shù)據(jù)庫(kù)的方式會(huì)對(duì)數(shù)據(jù)庫(kù)造成極大的壓力;在面對(duì)海量的維表數(shù)據(jù)時(shí),由于每個(gè)計(jì)算節(jié)點(diǎn)的內(nèi)存限制,維表數(shù)據(jù)無(wú)法完整地寫(xiě)入內(nèi)存中并導(dǎo)致執(zhí)行引擎產(chǎn)生內(nèi)存異常。

    2 維表關(guān)聯(lián)技術(shù)的設(shè)計(jì)與優(yōu)化

    如前所述,現(xiàn)有的大數(shù)據(jù)計(jì)算平臺(tái)并沒(méi)有支持緩存水平擴(kuò)展的維表關(guān)聯(lián)機(jī)制。在面對(duì)大規(guī)模維表數(shù)據(jù)時(shí),全緩存模式下,維表無(wú)法完整地緩存到每一個(gè)計(jì)算節(jié)點(diǎn)中。而使用異步連接方式則會(huì)在高速計(jì)算時(shí)產(chǎn)生大量數(shù)據(jù)I/O,對(duì)數(shù)據(jù)庫(kù)造成過(guò)大的壓力,甚至導(dǎo)致數(shù)據(jù)庫(kù)連接超時(shí),失去響應(yīng)。針對(duì)這個(gè)問(wèn)題,本章設(shè)計(jì)并提出了一種面向大規(guī)模分布式計(jì)算的維表關(guān)聯(lián)機(jī)制。

    本章介紹了維表關(guān)聯(lián)技術(shù)優(yōu)化的幾個(gè)具體設(shè)計(jì)。首先介紹了一種混合計(jì)算模型,做到了在同一個(gè)計(jì)算任務(wù)中統(tǒng)一批數(shù)據(jù)處理和流數(shù)據(jù)處理。然后介紹了維表關(guān)聯(lián)技術(shù)的緩存優(yōu)化,包含對(duì)維表數(shù)據(jù)源的緩存設(shè)計(jì)以及各個(gè)計(jì)算節(jié)點(diǎn)對(duì)維表數(shù)據(jù)的緩存設(shè)計(jì)。最后介紹了維表關(guān)聯(lián)技術(shù)的計(jì)算設(shè)計(jì),包含對(duì)并行計(jì)算下的數(shù)據(jù)分發(fā)的處理和每個(gè)計(jì)算節(jié)點(diǎn)對(duì)關(guān)聯(lián)計(jì)算的處理。

    2.1 定義和概念

    本節(jié)給出了文中所涉及的一些基本定義和概念。

    (維表)維表是指存儲(chǔ)在外部數(shù)據(jù)庫(kù)中的,具有數(shù)據(jù)規(guī)模大、更新時(shí)間慢等特征的一類數(shù)據(jù)表。

    (算子)算子是指在計(jì)算過(guò)程中對(duì)數(shù)據(jù)處理的最小計(jì)算單位,不同的算子具有不同的計(jì)算邏輯。批處理和流計(jì)算擁有功能相同但運(yùn)行邏輯不同的算子。

    (混合計(jì)算)混合計(jì)算是指在同一個(gè)計(jì)算任務(wù)中,同時(shí)存在流計(jì)算算子和批處理算子,也被稱作批流融合計(jì)算。

    (維表關(guān)聯(lián))維表關(guān)聯(lián)指數(shù)據(jù)流和維表之間存在一定關(guān)系,并根據(jù)這種關(guān)系進(jìn)行的數(shù)據(jù)處理,根據(jù)關(guān)系確定連接信息并將數(shù)據(jù)表進(jìn)行組合的過(guò)程稱為連接。從廣義上來(lái)看,維表關(guān)聯(lián)包含但不限于連接操作,通過(guò)維表數(shù)據(jù)計(jì)算分析等操作也屬于維表關(guān)聯(lián)。

    (背壓)背壓指當(dāng)某個(gè)計(jì)算節(jié)點(diǎn)數(shù)據(jù)處理速度低于數(shù)據(jù)傳輸速度時(shí),接收到的數(shù)據(jù)產(chǎn)生積壓。進(jìn)而使單個(gè)計(jì)算節(jié)點(diǎn)的輸入緩存超出限制,拒絕接收新數(shù)據(jù)。最終讓整個(gè)流計(jì)算系統(tǒng)從過(guò)載的節(jié)點(diǎn)開(kāi)始的一系列上游節(jié)點(diǎn)直至數(shù)據(jù)源節(jié)點(diǎn)鏈?zhǔn)骄彺嬉绯鐾V菇邮諗?shù)據(jù),等待過(guò)載節(jié)點(diǎn)處理數(shù)據(jù)。

    2.2 混合計(jì)算模型

    本節(jié)介紹本文所提出的混合計(jì)算模型。傳統(tǒng)的批式計(jì)算架構(gòu)中,計(jì)算的運(yùn)行邏輯如圖3 所示。計(jì)算節(jié)點(diǎn)分階段啟動(dòng),每一組計(jì)算只有全部完成以后才會(huì)解除同步等待,啟動(dòng)下一組計(jì)算任務(wù),并將計(jì)算數(shù)據(jù)重新分發(fā)到下一輪的計(jì)算節(jié)點(diǎn)中。

    圖3 批式計(jì)算架構(gòu)Fig.3 Batch computing architecture

    傳統(tǒng)的流式計(jì)算架構(gòu)中,計(jì)算的運(yùn)行邏輯如圖4所示。所有的計(jì)算節(jié)點(diǎn)在計(jì)算開(kāi)始時(shí)全部創(chuàng)建,然后數(shù)據(jù)在計(jì)算節(jié)點(diǎn)之間不斷流動(dòng),每個(gè)節(jié)點(diǎn)通過(guò)不斷拉取和消費(fèi)上游計(jì)算節(jié)點(diǎn)的數(shù)據(jù),來(lái)做到持續(xù)不停的流式處理。流計(jì)算會(huì)盡可能地不進(jìn)行數(shù)據(jù)重新分發(fā)操作,從而讓數(shù)據(jù)連續(xù)處理。

    圖4 流式計(jì)算架構(gòu)Fig.4 Stream computing architecture

    為了做到在流式計(jì)算中兼容對(duì)批數(shù)據(jù)的處理,本文對(duì)計(jì)算算子進(jìn)行了重新設(shè)計(jì)。在流計(jì)算中構(gòu)建標(biāo)志為批處理的算子,進(jìn)而提出了混合計(jì)算模型,如圖5 所示。該類模型算子分為三類:流計(jì)算算子、批處理算子、混合計(jì)算算子。該模型中的流算子仍和傳統(tǒng)流計(jì)算的計(jì)算邏輯一致,隨著數(shù)據(jù)流入實(shí)時(shí)計(jì)算。批處理算子通過(guò)修改流計(jì)算環(huán)境中的數(shù)據(jù)分發(fā)和計(jì)算邏輯,做到和傳統(tǒng)的批式計(jì)算一樣效果。混合計(jì)算算子用于流數(shù)據(jù)和批數(shù)據(jù)的混合計(jì)算,上游算子分別為流計(jì)算算子和批處理算子?;旌嫌?jì)算算子在批數(shù)據(jù)完全到達(dá)之前,會(huì)阻塞流計(jì)算,等待批數(shù)據(jù)分發(fā)完成以后,開(kāi)始進(jìn)行計(jì)算。

    圖5 混合計(jì)算架構(gòu)Fig.5 Mixed computing architecture

    2.3 維表關(guān)聯(lián)技術(shù)的緩存優(yōu)化

    本節(jié)介紹大規(guī)模維表關(guān)聯(lián)計(jì)算環(huán)境下對(duì)數(shù)據(jù)源節(jié)點(diǎn)緩存和計(jì)算節(jié)點(diǎn)緩存的設(shè)計(jì)和優(yōu)化。

    由于維表數(shù)據(jù)也是存在變化的,若每次都將讀取到的數(shù)據(jù)全部發(fā)送給計(jì)算節(jié)點(diǎn),在更新時(shí)仍會(huì)造成較大的網(wǎng)絡(luò)傳輸開(kāi)銷并阻塞流數(shù)據(jù)的處理。本文參考數(shù)據(jù)庫(kù)操作記錄日志的思想,在數(shù)據(jù)更新時(shí)只分發(fā)需要修改的數(shù)據(jù),降低網(wǎng)絡(luò)傳輸開(kāi)銷。為了確定數(shù)據(jù)更新的具體內(nèi)容,本文根據(jù)維表變化緩慢的特性,在數(shù)據(jù)源處建立了緩存機(jī)制緩存已分發(fā)數(shù)據(jù)記錄。在緩存機(jī)制的鍵值對(duì)中,Key 值由關(guān)聯(lián)所需主鍵列數(shù)據(jù)合并得出,Value 值則改為數(shù)組,存儲(chǔ)主鍵相同其他數(shù)據(jù)不同的多版本的維表數(shù)據(jù)。但緩存完整的維表數(shù)據(jù)會(huì)占用數(shù)據(jù)源算子過(guò)多的內(nèi)存,無(wú)法支持太大的維表。由于數(shù)據(jù)源并不需對(duì)數(shù)據(jù)進(jìn)行操作,故而將維表數(shù)據(jù)拼接成字符串后計(jì)算哈希值,并存入對(duì)應(yīng)的數(shù)組中,不保存原始數(shù)據(jù)。

    每輪讀取維表數(shù)據(jù)時(shí),將數(shù)據(jù)主鍵和哈希值進(jìn)行緩存,并根據(jù)上次緩存結(jié)果判斷數(shù)據(jù)分發(fā)行為,數(shù)據(jù)存在則跳過(guò),數(shù)據(jù)不存在則向下游計(jì)算節(jié)點(diǎn)發(fā)送新增行為,具體算法如算法1 所示。首先通過(guò)調(diào)用關(guān)聯(lián)信息選擇函數(shù)構(gòu)建鍵值并構(gòu)建整條數(shù)據(jù)的哈希值,然后將鍵值數(shù)據(jù)和哈希值寫(xiě)入新緩存,最后將鍵值與舊緩存進(jìn)行比較,確定數(shù)據(jù)是否存在,存在則跳過(guò)數(shù)據(jù)并清理對(duì)應(yīng)舊緩存,不存在則發(fā)出新增行為請(qǐng)求。

    算法1 源節(jié)點(diǎn)新數(shù)據(jù)分發(fā)算法

    輸入:上一次分發(fā)所構(gòu)建的數(shù)據(jù)緩存,本次數(shù)據(jù)分發(fā)所構(gòu)建的數(shù)據(jù)緩存,待判斷數(shù)據(jù)。

    輸出:無(wú)。

    1.=buildKey();/*計(jì)算緩存主鍵*/

    2.=Hash();/*計(jì)算維表哈希值*/

    3.將與存入中;

    4.If.()

    5.If.().()

    6.=“”;

    7..().();

    8.Else

    9.Action=“ADD”;

    10.End if

    11.Else

    12.Action=“ADD”;

    13.End if

    14.If Action==“ADD”;

    15.將newData和Action 發(fā)送給下游計(jì)算節(jié)點(diǎn);

    16.End if

    在第一次數(shù)據(jù)分發(fā)時(shí)舊緩存的初始值為空,因此第一次將會(huì)分發(fā)所有數(shù)據(jù)。在數(shù)據(jù)讀取分發(fā)完成后,由于在數(shù)據(jù)讀取過(guò)程中已經(jīng)將讀取的數(shù)據(jù)和舊緩存進(jìn)行了匹配和刪除操作,仍存在于舊緩存的數(shù)據(jù)則全部是需要?jiǎng)h除的數(shù)據(jù)。此時(shí)執(zhí)行針對(duì)過(guò)期數(shù)據(jù)的數(shù)據(jù)刪除行為的分發(fā),具體操作如算法2 所示。遍歷數(shù)據(jù)讀取完成后的舊緩存,針對(duì)舊緩存中的每一條數(shù)據(jù)生成數(shù)據(jù)刪除請(qǐng)求并發(fā)送給下游計(jì)算節(jié)點(diǎn),完成過(guò)期數(shù)據(jù)清理。

    算法2 源節(jié)點(diǎn)過(guò)期數(shù)據(jù)刪除算法

    輸入:上一次分發(fā)所構(gòu)建的數(shù)據(jù)緩存。

    輸出:無(wú)。

    1.遍歷,獲取每一個(gè)對(duì)應(yīng)的列表;

    2.遍歷列表,獲取存儲(chǔ)在舊緩存中的;

    3.針對(duì)每一個(gè),發(fā)送=“”的數(shù)據(jù)刪除行為,通知下游計(jì)算節(jié)點(diǎn)刪除過(guò)期緩存;

    4.清空舊緩存,釋放空間.

    最后在添加和刪除請(qǐng)求都發(fā)送完成后將當(dāng)前緩存賦值給舊緩存,即可完成一輪數(shù)據(jù)緩存和分發(fā)。

    在傳統(tǒng)的維表關(guān)聯(lián)計(jì)算中,對(duì)數(shù)據(jù)的緩存均為Key-Value 的形式,其中Key 值通過(guò)關(guān)聯(lián)的主鍵列計(jì)算得出,Value 值保存維表具體數(shù)據(jù)內(nèi)容。這種傳統(tǒng)的數(shù)據(jù)緩存模式,無(wú)法支持主鍵相同的多版本的維表數(shù)據(jù)緩存,進(jìn)而無(wú)法支持對(duì)歷史維表數(shù)據(jù)的全量緩存和查詢。

    本文針對(duì)該問(wèn)題,在計(jì)算節(jié)點(diǎn)中提出了一種二層緩存策略。在原有的Key-Value 緩存模式下,對(duì)Value 格式進(jìn)行優(yōu)化,將Key 值相同的維表數(shù)據(jù),轉(zhuǎn)換為Json 字符串,并以數(shù)組的形式存儲(chǔ)于Value 中,使緩存結(jié)構(gòu)支持歷史維表數(shù)據(jù)。同時(shí)相較于存儲(chǔ)完整的維表結(jié)構(gòu),轉(zhuǎn)換為Json 字符串可以降低一定的內(nèi)存存儲(chǔ)需求。

    在計(jì)算節(jié)點(diǎn)獲取數(shù)據(jù)的過(guò)程中,為了支持優(yōu)化后的數(shù)據(jù)源節(jié)點(diǎn)的數(shù)據(jù)分發(fā),數(shù)據(jù)獲取算法也要進(jìn)行重新設(shè)計(jì),具體算法如算法3 所示。對(duì)數(shù)據(jù)變更的行為進(jìn)行判斷,如果是增加數(shù)據(jù)(ADD)就將數(shù)據(jù)寫(xiě)入緩存,如果是刪除數(shù)據(jù)(DEL)就根據(jù)鍵值對(duì)緩存相關(guān)數(shù)據(jù)進(jìn)行刪除。

    算法3 計(jì)算節(jié)點(diǎn)數(shù)據(jù)獲取算法

    輸入:節(jié)點(diǎn)數(shù)據(jù)緩存,數(shù)據(jù)主鍵,數(shù)據(jù)文本,數(shù)據(jù)操作。

    輸出:更新后的節(jié)點(diǎn)數(shù)據(jù)緩存。

    1.If=“”

    2.根據(jù)存儲(chǔ)數(shù)據(jù)在中;

    3.Else

    4.If=“”

    5.根據(jù),刪除中數(shù)據(jù);

    6.End if

    7.End if

    8.Return.

    2.4 維表關(guān)聯(lián)技術(shù)的計(jì)算設(shè)計(jì)

    維表關(guān)聯(lián)技術(shù)的計(jì)算設(shè)計(jì)分為兩部分:數(shù)據(jù)分區(qū)方式設(shè)計(jì)、數(shù)據(jù)計(jì)算模式設(shè)計(jì)。

    傳統(tǒng)的維表關(guān)聯(lián)中,維表數(shù)據(jù)在各個(gè)計(jì)算節(jié)點(diǎn)間獨(dú)立存儲(chǔ),因此流數(shù)據(jù)可以根據(jù)不同計(jì)算系統(tǒng)的分發(fā)策略進(jìn)行分發(fā),在流經(jīng)計(jì)算節(jié)點(diǎn)時(shí)向遠(yuǎn)程數(shù)據(jù)庫(kù)查詢獲取維表數(shù)據(jù)。全局分發(fā)的維表關(guān)聯(lián)策略中,如果流數(shù)據(jù)分發(fā)規(guī)則與維表數(shù)據(jù)分發(fā)規(guī)則不匹配,則會(huì)導(dǎo)致關(guān)聯(lián)結(jié)果為空。

    因此,為了優(yōu)化后的維表關(guān)聯(lián)可以正常執(zhí)行,將對(duì)流數(shù)據(jù)和維表數(shù)據(jù)的數(shù)據(jù)分發(fā)策略進(jìn)行重新設(shè)計(jì),統(tǒng)一計(jì)算出關(guān)聯(lián)主鍵并對(duì)主鍵進(jìn)行哈希計(jì)算獲得對(duì)應(yīng)的數(shù)據(jù)分區(qū),計(jì)算分區(qū)方式的算法如算法4 所示。第1 行根據(jù)輸入的記錄通過(guò)調(diào)用關(guān)聯(lián)信息選擇函數(shù)構(gòu)建鍵值,第2、3 行根據(jù)鍵值計(jì)算最終的數(shù)據(jù)分區(qū)。

    算法4 Hash 分區(qū)算法

    輸入:待分區(qū)的記錄,分區(qū)數(shù)量。

    輸出:待分區(qū)記錄的分區(qū)編號(hào)。

    1.key=()/*提取記錄的key*/

    2.=.;

    3.=%;

    4.Return.

    傳統(tǒng)的維表關(guān)聯(lián)計(jì)算,通過(guò)指定輸入數(shù)據(jù)和維表的主鍵列確定連接信息,輸出的是關(guān)聯(lián)以后的數(shù)據(jù)列集合。本文首先對(duì)數(shù)據(jù)緩存進(jìn)行了重新設(shè)計(jì),支持了分布式的緩存策略以及多版本的數(shù)據(jù)緩存。為了適配對(duì)多版本數(shù)據(jù)的連接選擇問(wèn)題,本文將數(shù)據(jù)關(guān)聯(lián)計(jì)算模式進(jìn)行了重新的設(shè)計(jì)。將關(guān)聯(lián)邏輯和關(guān)聯(lián)鍵值選擇邏輯進(jìn)行了抽象,獨(dú)立出了用戶可自行定義和實(shí)現(xiàn)的關(guān)聯(lián)計(jì)算函數(shù)和關(guān)聯(lián)鍵值選擇函數(shù)。用戶在連接計(jì)算的基礎(chǔ)上,可以根據(jù)實(shí)際的計(jì)算需求,確定數(shù)據(jù)流和維表的數(shù)據(jù)關(guān)聯(lián)鍵值,并自定義關(guān)聯(lián)的計(jì)算輸出結(jié)果。

    由于關(guān)聯(lián)計(jì)算函數(shù)每次的調(diào)用是傳入通過(guò)關(guān)聯(lián)信息選擇函數(shù)所獲取的全部版本維表數(shù)據(jù),用戶可以做到對(duì)維表關(guān)聯(lián)的靈活處理,以支持指定關(guān)聯(lián)特定歷史版本、計(jì)算特定關(guān)系等需求。

    在實(shí)際的生產(chǎn)生活場(chǎng)景中,一個(gè)典型的不是連接的關(guān)聯(lián)場(chǎng)景為商品關(guān)聯(lián)度計(jì)算。通過(guò)在計(jì)算函數(shù)處理輸入商品和歷史訂單中的存在該商品的訂單的相似關(guān)系,計(jì)算出與商品關(guān)聯(lián)的其他商品,從而獲得輸入商品的關(guān)聯(lián)商品。

    3 實(shí)驗(yàn)分析

    本章針對(duì)前文所提出的優(yōu)化的維表關(guān)聯(lián)技術(shù)在Apache Flink 進(jìn)行了實(shí)現(xiàn),同時(shí)也實(shí)現(xiàn)了傳統(tǒng)的維表關(guān)聯(lián)技術(shù)。然后對(duì)比和驗(yàn)證了在不同流數(shù)據(jù)和維表數(shù)據(jù)規(guī)模下,優(yōu)化的維表關(guān)聯(lián)技術(shù)和傳統(tǒng)的維表關(guān)聯(lián)技術(shù)的效率差異。

    3.1 編碼實(shí)現(xiàn)

    編碼實(shí)現(xiàn)分為傳統(tǒng)的維表關(guān)聯(lián)實(shí)現(xiàn)與優(yōu)化后的維表關(guān)聯(lián)實(shí)現(xiàn)。

    在Apache Flink 1.8.0 中,DataStream API 并沒(méi)有原生提供對(duì)維表關(guān)聯(lián)計(jì)算的支持。由于傳統(tǒng)的維表關(guān)聯(lián)本質(zhì)上還是流計(jì)算,本文根據(jù)計(jì)算邏輯,對(duì)流計(jì)算中的異步計(jì)算算子進(jìn)行了改造,添加的對(duì)數(shù)據(jù)庫(kù)查詢的支持和基于LRU(least recently used)策略的數(shù)據(jù)緩存機(jī)制。然后對(duì)該算子進(jìn)行了封裝,使算子支持維表的定義和讀取以及連接條件的設(shè)置。

    優(yōu)化后的維表關(guān)聯(lián)基于Mixed API 進(jìn)行實(shí)現(xiàn)。通過(guò)設(shè)計(jì)新的雙輸入算子,使一個(gè)輸入為流數(shù)據(jù),一個(gè)輸入為維表數(shù)據(jù),做到對(duì)混合計(jì)算的支持。然后單獨(dú)設(shè)計(jì)了維表數(shù)據(jù)的數(shù)據(jù)源方法,并對(duì)系統(tǒng)中原有的數(shù)據(jù)分發(fā)過(guò)程進(jìn)行改造以適應(yīng)新的數(shù)據(jù)分發(fā)邏輯。最后對(duì)整個(gè)過(guò)程進(jìn)行了封裝,對(duì)數(shù)據(jù)連接信息選擇函數(shù)和維表關(guān)聯(lián)計(jì)算函數(shù)進(jìn)行了抽象和默認(rèn)邏輯的實(shí)現(xiàn)。對(duì)于緩存,依托Mixed API 的特性,在批數(shù)據(jù)計(jì)算和分發(fā)完成前,流數(shù)據(jù)處理是阻塞的,保證了維表緩存的完整性。

    3.2 數(shù)據(jù)集

    本文針對(duì)維表關(guān)聯(lián)這一實(shí)際生產(chǎn)活動(dòng)中所遇到的計(jì)算類型,使用了阿里巴巴“雙十一”中的真實(shí)生產(chǎn)場(chǎng)景進(jìn)行性能測(cè)試。該場(chǎng)景在數(shù)據(jù)脫敏和業(yè)務(wù)簡(jiǎn)化后,共涉及3 個(gè)數(shù)據(jù)表:用戶信息表、商品信息表、用戶點(diǎn)擊數(shù)據(jù)表。本實(shí)驗(yàn)根據(jù)數(shù)據(jù)表格式在MySQL數(shù)據(jù)庫(kù)中建立了對(duì)應(yīng)數(shù)據(jù)表并進(jìn)行相應(yīng)的數(shù)據(jù)生成,數(shù)據(jù)表數(shù)據(jù)記錄數(shù)及數(shù)據(jù)容量如表1所示。同時(shí)根據(jù)該表同比例構(gòu)建了10 萬(wàn)條用戶信息數(shù)據(jù)和100 萬(wàn)條用戶信息數(shù)據(jù)的對(duì)應(yīng)數(shù)據(jù)表,用于進(jìn)行對(duì)比測(cè)試。查詢所需的鍵值列均構(gòu)建了索引,用于保證異步訪問(wèn)時(shí)的查詢效率。

    表1 數(shù)據(jù)表大小Table 1 Size of data table

    該生產(chǎn)場(chǎng)景的具體業(yè)務(wù)為對(duì)用戶進(jìn)行廣告投放,簡(jiǎn)化業(yè)務(wù)流程為:

    (1)向推薦系統(tǒng)流入用戶ID;

    (2)系統(tǒng)根據(jù)用戶ID 獲取用戶一天內(nèi)的商品點(diǎn)擊數(shù)據(jù)和用戶信息數(shù)據(jù),通過(guò)機(jī)器學(xué)習(xí)算法計(jì)算出推薦商品ID;

    (3)通過(guò)推薦商品ID 獲取商品具體信息并返回。

    本實(shí)驗(yàn)為專注于測(cè)試維表關(guān)聯(lián)效率,簡(jiǎn)化了推薦計(jì)算部分,只保留維表關(guān)聯(lián)部分,修改后的業(yè)務(wù)邏輯如下:

    (1)向測(cè)試系統(tǒng)流入用戶ID;

    (2)根據(jù)用戶ID,擴(kuò)展出用戶具體信息和用戶點(diǎn)擊商品ID;

    (3)對(duì)每個(gè)用戶點(diǎn)擊商品ID 追加一個(gè)隨機(jī)數(shù)作為推薦商品ID;

    (4)通過(guò)推薦商品ID 獲取商品具體信息并返回。

    3.3 實(shí)驗(yàn)環(huán)境

    本文所描述的相關(guān)技術(shù)細(xì)節(jié),均在Flink 1.8.0 中進(jìn)行實(shí)現(xiàn),采用Java 語(yǔ)言進(jìn)行編寫(xiě)。實(shí)驗(yàn)的運(yùn)行環(huán)境及軟硬件環(huán)境如下。

    (1)硬件環(huán)境。實(shí)驗(yàn)采用的分布式環(huán)境由4 臺(tái)服務(wù)器組成,1 臺(tái)主節(jié)點(diǎn),3 臺(tái)從節(jié)點(diǎn)。從節(jié)點(diǎn)采用的服務(wù)器配置為:①CPU Intel Xeon E5-2603 V4 *2,核心數(shù)目6 核心;主頻1.7 GHz。②內(nèi)存64 GB,主頻2 400 MHz。③硬盤(pán)400 GB SSD。主節(jié)點(diǎn)配置為:①CPU Intel Xeon E5-2603 V4 *2,核心數(shù)目6 核心;主頻1.7 GHz。②內(nèi)存128 GB,主頻2 400 MHz。③硬盤(pán)400 GB SSD。

    (2)軟件環(huán)境。①操作系統(tǒng)Centos 7;②存儲(chǔ)環(huán)境MySQL 5.6.45;③Apache Flink 版本1.8.0,JDK 版本1.8.0。

    3.4 實(shí)驗(yàn)結(jié)果與分析

    本文通過(guò)使用阿里巴巴所提供的advertising測(cè)試工具,通過(guò)修改其中業(yè)務(wù)計(jì)算部分的邏輯來(lái)進(jìn)行測(cè)試。該測(cè)試會(huì)在計(jì)算開(kāi)始和結(jié)束時(shí)對(duì)數(shù)據(jù)添加時(shí)間戳并寫(xiě)入Redis,然后通過(guò)對(duì)Redis 中的數(shù)據(jù)進(jìn)行分析獲取相關(guān)統(tǒng)計(jì)結(jié)果。本實(shí)驗(yàn)所有計(jì)算的并行度固定為12,忽略維表全緩存的冷啟動(dòng)時(shí)間。生成100 萬(wàn)條流數(shù)據(jù)作為實(shí)驗(yàn)1,生成1 000 萬(wàn)條流數(shù)據(jù)作為實(shí)驗(yàn)2,對(duì)比流數(shù)據(jù)的數(shù)據(jù)量和維表的數(shù)據(jù)量對(duì)計(jì)算吞吐量和延遲的影響。

    (1)吞吐量對(duì)比分析

    吞吐量(throughput)是指單位時(shí)間內(nèi)計(jì)算引擎所處理的數(shù)據(jù)量,反映了系統(tǒng)的負(fù)載能力。吞吐量越高,系統(tǒng)的極限負(fù)載就越大,有助于在單位時(shí)間內(nèi)處理更多的數(shù)據(jù)。本實(shí)驗(yàn)通過(guò)計(jì)算在Redis 中單位時(shí)間寫(xiě)入的數(shù)據(jù)量來(lái)統(tǒng)計(jì)吞吐,吞吐量計(jì)算公式如下:

    其中,代表當(dāng)前讀到的數(shù)據(jù)編號(hào),表示前一次讀到的數(shù)據(jù)編號(hào),表示讀取當(dāng)前數(shù)據(jù)表編號(hào)所對(duì)應(yīng)的時(shí)間,表示讀取上一次數(shù)據(jù)編號(hào)所對(duì)應(yīng)的時(shí)間。

    在實(shí)驗(yàn)1 中,不同規(guī)模的維表數(shù)據(jù)量所產(chǎn)生的數(shù)據(jù)平均吞吐量如圖6 所示。實(shí)驗(yàn)結(jié)果表明數(shù)據(jù)全量緩存可以有效提升計(jì)算吞吐量,在三種維表規(guī)模下,均有10 倍的提升。異步連接方式隨著維表數(shù)據(jù)增大,吞吐量呈現(xiàn)下降趨勢(shì)。經(jīng)分析得出,這是由于異步連接所構(gòu)建的緩存沒(méi)有被命中,還有大量查詢打入了數(shù)據(jù)庫(kù)中。數(shù)據(jù)查詢所用的時(shí)間延長(zhǎng)了每條數(shù)據(jù)的處理時(shí)間,使單位時(shí)間內(nèi)可以處理的數(shù)據(jù)量減少。

    圖6 實(shí)驗(yàn)1 平均吞吐量統(tǒng)計(jì)Fig.6 Statistics of experiment 1 mean throughput

    在實(shí)驗(yàn)2 中,不同規(guī)模的維表數(shù)據(jù)量所產(chǎn)生的數(shù)據(jù)平均吞吐量如圖7 所示。與實(shí)驗(yàn)1 相同,全緩存方式吞吐量統(tǒng)計(jì)結(jié)果相似,說(shuō)明數(shù)據(jù)處理效率已經(jīng)和流入數(shù)據(jù)量無(wú)關(guān),增大并行度可以進(jìn)一步提高吞吐量。隨著維表數(shù)據(jù)增大,異步連接吞吐量趨于穩(wěn)定。這種現(xiàn)象的產(chǎn)生是由于流數(shù)據(jù)量增大,短時(shí)間內(nèi)查詢到的維表數(shù)據(jù)已經(jīng)全部加載到了本地緩存中。異步計(jì)算方式吞吐量仍處于較低水平是異步連接機(jī)制并發(fā)度不足導(dǎo)致的,然而過(guò)高的并發(fā)度會(huì)在計(jì)算初期直接導(dǎo)致存儲(chǔ)系統(tǒng)連接崩潰。

    圖7 實(shí)驗(yàn)2 平均吞吐量統(tǒng)計(jì)Fig.7 Statistics of experiment 2 mean throughput

    (2)延遲對(duì)比分析

    延遲(latency)是指數(shù)據(jù)從進(jìn)入計(jì)算系統(tǒng)到真正被處理并輸出所使用的時(shí)間,單位為毫秒(ms)。延遲的大小反映了系統(tǒng)對(duì)數(shù)據(jù)的處理速度和實(shí)時(shí)性。實(shí)時(shí)推薦的廣告系統(tǒng)對(duì)延遲有較高的需求,延遲越小,用戶體驗(yàn)越好。本實(shí)驗(yàn)通過(guò)在Redis中記錄的每條數(shù)據(jù)的起止時(shí)間戳來(lái)計(jì)算延遲,延遲計(jì)算公式如下:

    表示數(shù)據(jù)被處理完成的時(shí)間,指數(shù)據(jù)流入系統(tǒng)后被標(biāo)記的時(shí)間。

    在實(shí)驗(yàn)1 中,不同規(guī)模的維表數(shù)據(jù)量所產(chǎn)生的數(shù)據(jù)平均延遲如圖8 所示。全緩存模式下,數(shù)據(jù)都已經(jīng)寫(xiě)入到內(nèi)存中,沒(méi)有數(shù)據(jù)I/O 開(kāi)銷,因此平均延遲沒(méi)有太大的起伏。異步連接的計(jì)算模式由于前期沒(méi)有維表數(shù)據(jù)的緩存,需要與數(shù)據(jù)庫(kù)進(jìn)行大量的交互,隨著維表規(guī)模的增大,單次查詢的處理時(shí)間越來(lái)越高,導(dǎo)致平均延遲越來(lái)越大。

    圖8 實(shí)驗(yàn)1 平均延遲Fig.8 Experiment 1 mean delay

    在實(shí)驗(yàn)2 中,不同規(guī)模的維表數(shù)據(jù)量所產(chǎn)生的數(shù)據(jù)平均延遲如圖9 所示。全緩存模式下,延遲相對(duì)于實(shí)驗(yàn)1 有所增加是由于為了平攤內(nèi)存壓力,多次維表關(guān)聯(lián)計(jì)算間沒(méi)有共享計(jì)算槽,數(shù)據(jù)分發(fā)需要經(jīng)歷序列化與反序列化。過(guò)高的吞吐量和數(shù)據(jù)量導(dǎo)致數(shù)據(jù)傳輸壓力過(guò)大,從而產(chǎn)生阻塞。同時(shí)由于緩存機(jī)制是手動(dòng)實(shí)現(xiàn)的,沒(méi)有對(duì)接Flink 計(jì)算系統(tǒng)的背壓機(jī)制,導(dǎo)致計(jì)算節(jié)點(diǎn)數(shù)據(jù)過(guò)量積壓。異步連接模式由于計(jì)算前期的大量I/O 已經(jīng)暫時(shí)緩存了所有需要的維表數(shù)據(jù)。多次維表關(guān)聯(lián)共享了計(jì)算槽,數(shù)據(jù)傳輸不需要經(jīng)歷序列化和反序列化過(guò)程,直接發(fā)給下游計(jì)算節(jié)點(diǎn)。同時(shí)由于Apache Flink 的背壓機(jī)制,數(shù)據(jù)實(shí)際被標(biāo)記的流入系統(tǒng)的時(shí)間可能晚于數(shù)據(jù)實(shí)際產(chǎn)生的時(shí)間。

    圖9 實(shí)驗(yàn)2 平均延遲Fig.9 Experiment 2 mean delay

    4 總結(jié)

    本文對(duì)面向分布式流計(jì)算的維表關(guān)聯(lián)技術(shù)進(jìn)行了研究和優(yōu)化。與現(xiàn)有的大數(shù)據(jù)計(jì)算平臺(tái)的關(guān)聯(lián)機(jī)制相比,首先提供了一套可以實(shí)現(xiàn)流批處理一體化的數(shù)據(jù)處理邏輯,其次提供了一種可以支持縱向擴(kuò)展的維表關(guān)聯(lián)數(shù)據(jù)全緩存方案,并對(duì)數(shù)據(jù)分發(fā)進(jìn)行了優(yōu)化。大量實(shí)驗(yàn)結(jié)果表明,該優(yōu)化技術(shù)可以有效提高全緩存條件下對(duì)維表數(shù)據(jù)的加載量,在高速處理環(huán)節(jié)最多可以提高10 倍的吞吐量,顯著降低了數(shù)據(jù)的查詢壓力,提高了任務(wù)的并行度。在維表數(shù)據(jù)量較大的情況下,異步查詢方式在高并行度時(shí)會(huì)有很大概率導(dǎo)致數(shù)據(jù)庫(kù)假死,并且由于數(shù)據(jù)I/O 的關(guān)系,無(wú)法做到很高的吞吐量。普通全量緩存模式則直接會(huì)導(dǎo)致系統(tǒng)產(chǎn)生內(nèi)存溢出異常。本文所提出的維表關(guān)聯(lián)技術(shù),支持在高并行度下運(yùn)行,并且對(duì)數(shù)據(jù)庫(kù)造成的讀寫(xiě)壓力不隨并行度提高而提升。

    猜你喜歡
    數(shù)據(jù)處理關(guān)聯(lián)優(yōu)化
    超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
    認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補(bǔ)與極大似然估計(jì)法*
    “苦”的關(guān)聯(lián)
    ILWT-EEMD數(shù)據(jù)處理的ELM滾動(dòng)軸承故障診斷
    民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
    關(guān)于優(yōu)化消防安全告知承諾的一些思考
    一道優(yōu)化題的幾何解法
    奇趣搭配
    智趣
    讀者(2017年5期)2017-02-15 18:04:18
    基于希爾伯特- 黃變換的去噪法在外測(cè)數(shù)據(jù)處理中的應(yīng)用
    亚洲av美国av| 欧美色视频一区免费| 91麻豆av在线| 亚洲成av人片在线播放无| 精品国产亚洲在线| 国产91精品成人一区二区三区| 日日干狠狠操夜夜爽| 老司机午夜十八禁免费视频| 免费观看精品视频网站| 精品福利观看| 3wmmmm亚洲av在线观看| 综合色av麻豆| 久99久视频精品免费| 黑人欧美特级aaaaaa片| 在线a可以看的网站| 日韩欧美精品v在线| 国产一区二区亚洲精品在线观看| 久久久国产成人免费| 欧美大码av| 国产精品98久久久久久宅男小说| 欧美av亚洲av综合av国产av| 叶爱在线成人免费视频播放| 少妇人妻精品综合一区二区 | 91九色精品人成在线观看| 两个人的视频大全免费| 亚洲国产欧洲综合997久久,| 成年人黄色毛片网站| 午夜久久久久精精品| h日本视频在线播放| av国产免费在线观看| 欧美一区二区亚洲| e午夜精品久久久久久久| 久久久久久久久中文| 国产爱豆传媒在线观看| 床上黄色一级片| 久久九九热精品免费| 日韩欧美国产在线观看| 黄色日韩在线| 久久久成人免费电影| 丝袜美腿在线中文| 精品久久久久久成人av| 亚洲av五月六月丁香网| av欧美777| 欧美激情在线99| 中出人妻视频一区二区| 伊人久久精品亚洲午夜| 亚洲成人中文字幕在线播放| 亚洲av一区综合| 日本撒尿小便嘘嘘汇集6| 成人精品一区二区免费| 男人舔奶头视频| 国产精品日韩av在线免费观看| 麻豆国产av国片精品| 欧美一级a爱片免费观看看| 精品国产超薄肉色丝袜足j| 在线免费观看的www视频| 久久久久国内视频| 中文在线观看免费www的网站| 亚洲专区国产一区二区| 久久中文看片网| 日韩欧美精品免费久久 | 一区二区三区激情视频| 日本精品一区二区三区蜜桃| 午夜免费激情av| 久久人妻av系列| 一区二区三区激情视频| www.999成人在线观看| 给我免费播放毛片高清在线观看| 亚洲在线自拍视频| 91久久精品电影网| 国产一区二区亚洲精品在线观看| 国内精品久久久久久久电影| 亚洲午夜理论影院| 日韩欧美精品v在线| 一夜夜www| 久久草成人影院| 国内精品一区二区在线观看| 午夜a级毛片| 精品久久久久久久末码| 久久人妻av系列| 欧美日韩黄片免| 国产精品一区二区三区四区久久| 成人av在线播放网站| 真人做人爱边吃奶动态| 久久久久亚洲av毛片大全| 久久久久久久久久黄片| 日日干狠狠操夜夜爽| 精品99又大又爽又粗少妇毛片 | 国产精品亚洲美女久久久| 欧美av亚洲av综合av国产av| 亚洲国产精品成人综合色| 亚洲久久久久久中文字幕| 国语自产精品视频在线第100页| 久久精品国产亚洲av香蕉五月| 午夜老司机福利剧场| 制服人妻中文乱码| 我的老师免费观看完整版| 有码 亚洲区| 国产成人av教育| 亚洲无线观看免费| 3wmmmm亚洲av在线观看| 午夜老司机福利剧场| 淫妇啪啪啪对白视频| 悠悠久久av| 丰满乱子伦码专区| 欧美黄色淫秽网站| 国产黄片美女视频| 他把我摸到了高潮在线观看| 久久久国产成人免费| 小蜜桃在线观看免费完整版高清| 日韩成人在线观看一区二区三区| 国产精品久久久久久人妻精品电影| 国产成人啪精品午夜网站| 亚洲欧美日韩东京热| 在线观看一区二区三区| 桃红色精品国产亚洲av| av专区在线播放| 人人妻,人人澡人人爽秒播| 俄罗斯特黄特色一大片| 亚洲久久久久久中文字幕| 99视频精品全部免费 在线| 深夜精品福利| 美女 人体艺术 gogo| 国产亚洲精品av在线| 97人妻精品一区二区三区麻豆| 亚洲黑人精品在线| 观看免费一级毛片| 中文字幕av成人在线电影| 黄色视频,在线免费观看| 亚洲欧美精品综合久久99| 三级男女做爰猛烈吃奶摸视频| 亚洲精品色激情综合| 欧美日韩福利视频一区二区| 91九色精品人成在线观看| 久久精品国产自在天天线| 十八禁人妻一区二区| 脱女人内裤的视频| 免费看a级黄色片| 99国产精品一区二区蜜桃av| 久久久久久久亚洲中文字幕 | 90打野战视频偷拍视频| 欧美成人免费av一区二区三区| 亚洲av二区三区四区| 国产欧美日韩一区二区三| 一本一本综合久久| 欧美+日韩+精品| 国产精品av视频在线免费观看| 亚洲五月婷婷丁香| 色综合婷婷激情| 美女免费视频网站| 久久性视频一级片| netflix在线观看网站| 国产一区二区在线观看日韩 | 国产毛片a区久久久久| 精品国产美女av久久久久小说| 欧美乱妇无乱码| 在线播放无遮挡| 久久精品国产自在天天线| 国产亚洲av嫩草精品影院| 国产伦精品一区二区三区四那| 亚洲成人精品中文字幕电影| 性色avwww在线观看| 精品久久久久久久人妻蜜臀av| 精品久久久久久,| 色精品久久人妻99蜜桃| 国产精品野战在线观看| 啦啦啦免费观看视频1| 高清毛片免费观看视频网站| 欧美高清成人免费视频www| 在线观看一区二区三区| 欧美日韩一级在线毛片| www日本在线高清视频| 国产精品一及| 亚洲人成伊人成综合网2020| 一个人看的www免费观看视频| 国产高清视频在线观看网站| 亚洲一区高清亚洲精品| 亚洲人成网站在线播放欧美日韩| 欧美性猛交黑人性爽| xxxwww97欧美| 精品不卡国产一区二区三区| 亚洲无线在线观看| 法律面前人人平等表现在哪些方面| 国内精品美女久久久久久| 欧美性感艳星| 国产又黄又爽又无遮挡在线| 婷婷精品国产亚洲av在线| 久久久久久久精品吃奶| 国产精品电影一区二区三区| 中文字幕人成人乱码亚洲影| 国产欧美日韩一区二区精品| 亚洲欧美日韩东京热| 亚洲国产欧洲综合997久久,| 蜜桃亚洲精品一区二区三区| 身体一侧抽搐| 岛国在线免费视频观看| 99精品在免费线老司机午夜| 久久亚洲精品不卡| 午夜激情欧美在线| 女同久久另类99精品国产91| 成人特级av手机在线观看| 成人亚洲精品av一区二区| 国内精品美女久久久久久| 一个人免费在线观看电影| 久久人妻av系列| 日本与韩国留学比较| 国产成人影院久久av| 在线观看舔阴道视频| 色综合亚洲欧美另类图片| 51国产日韩欧美| 老熟妇乱子伦视频在线观看| 国产一区二区在线av高清观看| 国产精品久久久久久久久免 | 欧美av亚洲av综合av国产av| 日韩亚洲欧美综合| 老司机在亚洲福利影院| 成年女人永久免费观看视频| 欧美国产日韩亚洲一区| 日本与韩国留学比较| 日本一二三区视频观看| 成人永久免费在线观看视频| 天堂动漫精品| 熟女少妇亚洲综合色aaa.| 1000部很黄的大片| 嫩草影院入口| 一本综合久久免费| 亚洲内射少妇av| 午夜福利成人在线免费观看| 亚洲精品亚洲一区二区| 十八禁人妻一区二区| 国产亚洲精品一区二区www| 岛国视频午夜一区免费看| 精品一区二区三区av网在线观看| 国产成人系列免费观看| 成人av在线播放网站| 国语自产精品视频在线第100页| 九九热线精品视视频播放| 久久久久精品国产欧美久久久| 天天一区二区日本电影三级| 久久婷婷人人爽人人干人人爱| 一级作爱视频免费观看| 看片在线看免费视频| 村上凉子中文字幕在线| 1024手机看黄色片| 免费无遮挡裸体视频| 少妇的逼好多水| 精品99又大又爽又粗少妇毛片 | 三级国产精品欧美在线观看| 色播亚洲综合网| 91在线观看av| 国产av不卡久久| 亚洲国产中文字幕在线视频| 村上凉子中文字幕在线| 国产美女午夜福利| 久久精品91蜜桃| 岛国在线免费视频观看| 在线播放无遮挡| www.999成人在线观看| 亚洲人成网站在线播| 精品一区二区三区人妻视频| 国产精品久久视频播放| 99国产精品一区二区三区| 19禁男女啪啪无遮挡网站| 久久久久精品国产欧美久久久| 村上凉子中文字幕在线| 国产麻豆成人av免费视频| 精品不卡国产一区二区三区| 欧美zozozo另类| 欧美高清成人免费视频www| 久久久久久久久久黄片| 色尼玛亚洲综合影院| 人人妻人人澡欧美一区二区| 在线观看日韩欧美| 熟女电影av网| 91久久精品国产一区二区成人 | 国产av不卡久久| 99久久成人亚洲精品观看| 亚洲乱码一区二区免费版| 国产真实乱freesex| 在线观看66精品国产| 一个人免费在线观看电影| 真人做人爱边吃奶动态| 老汉色av国产亚洲站长工具| 老师上课跳d突然被开到最大视频 久久午夜综合久久蜜桃 | 精品国产三级普通话版| 亚洲人成伊人成综合网2020| 老熟妇仑乱视频hdxx| 一边摸一边抽搐一进一小说| www日本在线高清视频| or卡值多少钱| 日日摸夜夜添夜夜添小说| 国产精品,欧美在线| 午夜福利成人在线免费观看| 成人三级黄色视频| 久久久久性生活片| 国产免费一级a男人的天堂| 一区二区三区免费毛片| 亚洲av五月六月丁香网| 亚洲七黄色美女视频| 一区二区三区国产精品乱码| 天堂√8在线中文| 级片在线观看| 国产精品av视频在线免费观看| www国产在线视频色| 欧美+亚洲+日韩+国产| tocl精华| 成人特级黄色片久久久久久久| 一个人观看的视频www高清免费观看| 中文资源天堂在线| 久久久久久久午夜电影| 国产av麻豆久久久久久久| 亚洲精品色激情综合| 亚洲第一电影网av| 99久久精品热视频| 日韩欧美在线二视频| 18禁黄网站禁片免费观看直播| 很黄的视频免费| 国产高潮美女av| 高清毛片免费观看视频网站| 在线观看免费视频日本深夜| 日本 欧美在线| 两性午夜刺激爽爽歪歪视频在线观看| 超碰av人人做人人爽久久 | 欧美黄色片欧美黄色片| 欧美国产日韩亚洲一区| 草草在线视频免费看| 少妇的丰满在线观看| 女人高潮潮喷娇喘18禁视频| 97超级碰碰碰精品色视频在线观看| 国产高潮美女av| 亚洲av免费高清在线观看| 女同久久另类99精品国产91| www.www免费av| 黄色日韩在线| 18美女黄网站色大片免费观看| 日韩精品中文字幕看吧| 男女之事视频高清在线观看| 成人永久免费在线观看视频| 天天添夜夜摸| 亚洲一区二区三区不卡视频| 深爱激情五月婷婷| 搡老熟女国产l中国老女人| 丰满乱子伦码专区| 在线国产一区二区在线| 90打野战视频偷拍视频| 99久久99久久久精品蜜桃| 国产一区二区激情短视频| 国产色婷婷99| 亚洲精品色激情综合| 久久国产精品人妻蜜桃| 99热只有精品国产| 久久国产精品人妻蜜桃| 男女床上黄色一级片免费看| 啦啦啦观看免费观看视频高清| 宅男免费午夜| 国产成人a区在线观看| 亚洲激情在线av| 精品久久久久久久久久久久久| 热99在线观看视频| svipshipincom国产片| 男人舔女人下体高潮全视频| 欧美中文综合在线视频| 九九久久精品国产亚洲av麻豆| 亚洲男人的天堂狠狠| 国产真人三级小视频在线观看| 久久草成人影院| 成人三级黄色视频| 蜜桃亚洲精品一区二区三区| 色噜噜av男人的天堂激情| 老司机福利观看| 3wmmmm亚洲av在线观看| 日本三级黄在线观看| 国内揄拍国产精品人妻在线| 色尼玛亚洲综合影院| 国产蜜桃级精品一区二区三区| 国产精品永久免费网站| 国产欧美日韩一区二区三| 国产高清videossex| 久久99热这里只有精品18| 在线播放国产精品三级| 亚洲精品色激情综合| 精品久久久久久久久久免费视频| 五月玫瑰六月丁香| a级一级毛片免费在线观看| 琪琪午夜伦伦电影理论片6080| 麻豆一二三区av精品| 久久久国产精品麻豆| 国产亚洲精品综合一区在线观看| 香蕉丝袜av| 久久精品亚洲精品国产色婷小说| 亚洲av一区综合| 欧美绝顶高潮抽搐喷水| 欧美黑人巨大hd| 国产精品1区2区在线观看.| 欧美xxxx黑人xx丫x性爽| 国产老妇女一区| 午夜免费激情av| 亚洲精品在线美女| 亚洲人与动物交配视频| 最好的美女福利视频网| 色av中文字幕| 他把我摸到了高潮在线观看| 久久久精品大字幕| 久久精品综合一区二区三区| 亚洲午夜理论影院| 亚洲欧美一区二区三区黑人| 亚洲色图av天堂| 亚洲精品久久国产高清桃花| 精品国产超薄肉色丝袜足j| 亚洲欧美日韩高清专用| 国产精品影院久久| 国产单亲对白刺激| 九九久久精品国产亚洲av麻豆| 一本精品99久久精品77| 长腿黑丝高跟| 亚洲国产日韩欧美精品在线观看 | 国产视频一区二区在线看| 美女cb高潮喷水在线观看| 国产成人系列免费观看| 国内久久婷婷六月综合欲色啪| 亚洲精品日韩av片在线观看 | 最好的美女福利视频网| 婷婷丁香在线五月| 一进一出好大好爽视频| 中文字幕久久专区| 国产精品精品国产色婷婷| 天天一区二区日本电影三级| 91在线精品国自产拍蜜月 | 欧美成狂野欧美在线观看| 亚洲一区二区三区色噜噜| 久99久视频精品免费| 国产精品久久久久久亚洲av鲁大| 婷婷丁香在线五月| 色吧在线观看| 国产激情偷乱视频一区二区| 免费看美女性在线毛片视频| 国产精品国产高清国产av| 午夜老司机福利剧场| 麻豆久久精品国产亚洲av| 国产精品美女特级片免费视频播放器| 国产午夜精品久久久久久一区二区三区 | www.熟女人妻精品国产| 免费高清视频大片| 欧美日韩国产亚洲二区| 亚洲精华国产精华精| 美女高潮喷水抽搐中文字幕| 啦啦啦观看免费观看视频高清| 综合色av麻豆| 国产精品一区二区三区四区免费观看 | 丁香六月欧美| 免费看美女性在线毛片视频| 网址你懂的国产日韩在线| 免费观看的影片在线观看| ponron亚洲| 国产69精品久久久久777片| 国产一区二区在线观看日韩 | 中文字幕人成人乱码亚洲影| 九色国产91popny在线| 亚洲av免费在线观看| 午夜视频国产福利| 欧美zozozo另类| 亚洲国产高清在线一区二区三| 亚洲人成电影免费在线| 搡老岳熟女国产| 天堂影院成人在线观看| 丰满乱子伦码专区| 手机成人av网站| 青草久久国产| 亚洲av成人不卡在线观看播放网| 成熟少妇高潮喷水视频| 国产精品一区二区三区四区久久| 国产亚洲精品av在线| 免费人成视频x8x8入口观看| 亚洲精品在线美女| 国产亚洲欧美98| 搡女人真爽免费视频火全软件 | 欧美午夜高清在线| 成人一区二区视频在线观看| 露出奶头的视频| 又黄又爽又免费观看的视频| 亚洲av免费高清在线观看| 亚洲av成人不卡在线观看播放网| 亚洲avbb在线观看| 波多野结衣高清作品| 搡老熟女国产l中国老女人| 亚洲精品影视一区二区三区av| 麻豆久久精品国产亚洲av| 成年免费大片在线观看| 丰满的人妻完整版| 国产欧美日韩精品一区二区| av视频在线观看入口| 成人特级黄色片久久久久久久| 亚洲人与动物交配视频| 国内揄拍国产精品人妻在线| 日日夜夜操网爽| а√天堂www在线а√下载| 国产精品久久久久久久电影 | 草草在线视频免费看| 99精品在免费线老司机午夜| 一夜夜www| 亚洲电影在线观看av| 在线看三级毛片| 久久婷婷人人爽人人干人人爱| 可以在线观看毛片的网站| 男女之事视频高清在线观看| 国产极品精品免费视频能看的| 中文字幕精品亚洲无线码一区| 五月伊人婷婷丁香| 天堂网av新在线| 国内毛片毛片毛片毛片毛片| 变态另类成人亚洲欧美熟女| 非洲黑人性xxxx精品又粗又长| 国产真人三级小视频在线观看| 午夜精品一区二区三区免费看| 日韩欧美免费精品| 久久精品91蜜桃| 国产97色在线日韩免费| 18禁国产床啪视频网站| 搡老熟女国产l中国老女人| 在线观看午夜福利视频| 神马国产精品三级电影在线观看| 丰满人妻熟妇乱又伦精品不卡| 丰满乱子伦码专区| 欧美最新免费一区二区三区 | 精品99又大又爽又粗少妇毛片 | 精品乱码久久久久久99久播| 精品久久久久久久人妻蜜臀av| 啪啪无遮挡十八禁网站| 亚洲专区中文字幕在线| 亚洲国产精品久久男人天堂| 午夜福利免费观看在线| 在线观看66精品国产| 99热6这里只有精品| 国产免费av片在线观看野外av| 一区二区三区国产精品乱码| 午夜福利在线观看吧| 波多野结衣高清无吗| 高清在线国产一区| 亚洲av日韩精品久久久久久密| h日本视频在线播放| 国产成人av教育| 久久久成人免费电影| 亚洲成av人片在线播放无| www.www免费av| 欧美日本亚洲视频在线播放| 两个人看的免费小视频| 偷拍熟女少妇极品色| 精品国产亚洲在线| 老司机午夜福利在线观看视频| 欧美黑人欧美精品刺激| 久久精品国产亚洲av涩爱 | 国产精品电影一区二区三区| 91久久精品国产一区二区成人 | 国产亚洲精品久久久com| 日韩成人在线观看一区二区三区| 高潮久久久久久久久久久不卡| 精品免费久久久久久久清纯| 悠悠久久av| 日韩欧美在线二视频| 一个人免费在线观看的高清视频| 亚洲专区国产一区二区| av片东京热男人的天堂| 国产成年人精品一区二区| 少妇熟女aⅴ在线视频| 桃红色精品国产亚洲av| 亚洲欧美日韩无卡精品| 啦啦啦韩国在线观看视频| 一个人观看的视频www高清免费观看| 好男人电影高清在线观看| 99久久成人亚洲精品观看| 18禁在线播放成人免费| 色哟哟哟哟哟哟| 色综合欧美亚洲国产小说| www.999成人在线观看| 婷婷亚洲欧美| 美女 人体艺术 gogo| 宅男免费午夜| 亚洲最大成人中文| 欧美日韩一级在线毛片| 丰满的人妻完整版| 欧美+日韩+精品| 别揉我奶头~嗯~啊~动态视频| 精品国产三级普通话版| 欧美日本视频| 欧美乱妇无乱码| avwww免费| 在线播放无遮挡| 男人和女人高潮做爰伦理| 国产真人三级小视频在线观看| 一区二区三区国产精品乱码| 桃红色精品国产亚洲av| 午夜福利欧美成人| 18+在线观看网站| 亚洲成av人片免费观看| 亚洲片人在线观看| 欧美高清成人免费视频www| 久久九九热精品免费| 在线观看一区二区三区| netflix在线观看网站| 久久午夜亚洲精品久久| 热99在线观看视频| 欧美日韩国产亚洲二区| 99精品久久久久人妻精品| 久久这里只有精品中国| 91九色精品人成在线观看| 久久久国产成人免费| 色综合亚洲欧美另类图片| 一个人看视频在线观看www免费 | av国产免费在线观看| 久久久久久久久中文| 亚洲av免费高清在线观看| 久久这里只有精品中国| 国产成+人综合+亚洲专区| 国产美女午夜福利| 欧美黄色片欧美黄色片|