亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種解決數(shù)據(jù)傾斜的方法及裝置的制造方法

文檔序號:9375799閱讀:406來源:國知局
一種解決數(shù)據(jù)傾斜的方法及裝置的制造方法
【技術(shù)領域】
[0001] 本發(fā)明涉及計算機技術(shù)領域,特別地涉及一種解決數(shù)據(jù)傾斜的方法及裝置。
【背景技術(shù)】
[0002] 自互聯(lián)網(wǎng)大爆發(fā)以來,面對日益增長的海量數(shù)據(jù),用以支撐主流搜索引擎公司、電 子商務、社交網(wǎng)站的傳統(tǒng)數(shù)據(jù)倉庫系統(tǒng)早已不堪重負了,而構(gòu)建于Hadoop集群之上的Hive 的出現(xiàn)恰逢其時,已成為實現(xiàn)大數(shù)據(jù)時代分布式數(shù)據(jù)倉庫的福音。數(shù)據(jù)關聯(lián)是關系數(shù)據(jù)庫 功能的基本操作,是任何資源在萬維網(wǎng)上發(fā)布的一種方式?;诜植际竭\算(mapreduce) 的數(shù)據(jù)倉庫Hive也支持在海量數(shù)據(jù)集上進行數(shù)據(jù)關聯(lián)操作,通常Hive進行數(shù)據(jù)倉庫(DW) 數(shù)據(jù)關聯(lián)時,都是由兩個或多個海量數(shù)據(jù)集進行。例如電子商務常見的數(shù)據(jù)模式為:將數(shù)十 億的用戶流量和數(shù)億的商品、千萬級訂單數(shù)據(jù)集進行關聯(lián)運算來產(chǎn)生用戶、商品搜索推薦 結(jié)果和電子郵箱相關聯(lián)的營銷數(shù)據(jù)。此類數(shù)據(jù)關聯(lián)操作的特點是海量數(shù)據(jù),同時數(shù)據(jù)分布 不均勻,存在熱點數(shù)據(jù)。
[0003] 基于Hive的海量數(shù)據(jù)關聯(lián)的底層實現(xiàn)是由mapreduce提供的,即在Map (映射) 階段根據(jù)數(shù)據(jù)的大小劃分為多個分布式計算任務,盡可能利用數(shù)據(jù)本地化處理速度快的優(yōu) 勢在本地進行運算,然后進行分區(qū)(即根據(jù)相同的關鍵字的數(shù)據(jù)進入同一數(shù)據(jù)處理列),最 后在reduce (歸約)階段進行合并關聯(lián)運算。
[0004] Mapreduce在進行數(shù)據(jù)關聯(lián)時,可在map階段和reduce階段分別進行。map端聚 合的適用條件是關聯(lián)方有一個數(shù)據(jù)集足夠?。ㄒ话悴怀^25MB)可以放在分布式緩存里, 而reduce階段關聯(lián)的場景是關聯(lián)成員的數(shù)據(jù)集都很大,無法緩存。故而對于海量數(shù)據(jù),無 法進行map端關聯(lián),只能在reduce階段進行關聯(lián)。然而,此時數(shù)據(jù)關聯(lián)的瓶頸點已不在于 數(shù)據(jù)規(guī)模的大小,而在于數(shù)據(jù)分布的不均勻。當mapreduce在執(zhí)行程序進行數(shù)據(jù)關聯(lián)時,大 部分reduce節(jié)點已執(zhí)行完畢,但是有一個或者幾個reduce節(jié)點運行很慢,導致整個程序的 執(zhí)行時間很長,這是因為某一個關聯(lián)關鍵字的數(shù)據(jù)條數(shù)比其他關聯(lián)關鍵字多很多(有時是 百倍或者千倍之多),那么這個關聯(lián)關鍵字所在的reduce節(jié)點所處理的數(shù)據(jù)量比其他節(jié)點 就大很多,從而導致某一個或者幾個節(jié)點遲遲運行不完,此稱之為數(shù)據(jù)傾斜。解決海量數(shù)據(jù) 關聯(lián)的關鍵點就是解決數(shù)據(jù)傾斜問題。
[0005] 目前Hive處理數(shù)據(jù)關聯(lián)時數(shù)據(jù)傾斜的問題大多采用以下方法:
[0006] 1.創(chuàng)建傾斜表法:
[0007] 特點就是在建表時列出表中單列或多列的高傾斜值,Hive會將這些數(shù)據(jù)自動單獨 存儲,在執(zhí)行關聯(lián)時,第一次查詢處理非傾斜的數(shù)據(jù),第二次查詢將處理高傾斜的數(shù)據(jù),如 果其中高傾斜值的小表數(shù)據(jù)適合在內(nèi)存緩存,這樣效率會更高,在map端就進行了關聯(lián),最 后對兩部分查詢結(jié)果進行合并。
[0008] 2.配置參數(shù)法:
[0009] 在Hive執(zhí)行數(shù)據(jù)處理時預先配置參數(shù),第一個mapreduce任務中,Map的輸出結(jié) 果集合會隨機分布到reduce中,每個reduce做部分關聯(lián)操作,并輸出結(jié)果,這樣處理的結(jié) 果是相同分組的同一關鍵字的數(shù)據(jù)有可能被分發(fā)到不同的reduce中,從而達到負載均衡 的目的;第二個mapreduce任務再根據(jù)第一個mapreduce任務預處理的數(shù)據(jù)結(jié)果按照分組 的關鍵字分布到reduce中(這個過程可以保證相同分組的同一關鍵字的數(shù)據(jù)被分布到同 一個reduce中),最后完成最終的聚合操作。這是最簡單的方式。
[0010] 3. Mapjoin :
[0011] 適用條件是關聯(lián)表中有一張小表(一般默認為25MB),數(shù)據(jù)量適合分布式緩存,在 執(zhí)行過程中,mapjoin會把小表全部讀入本地內(nèi)存中,在map階段直接拿另外一個表的數(shù)據(jù) 和內(nèi)存中表數(shù)據(jù)做匹配,這樣避免了 reduce端關聯(lián),因此效率是最高的。
[0012] 在使用過程中,發(fā)現(xiàn)現(xiàn)有的幾種數(shù)據(jù)關聯(lián)的方式在處理海量數(shù)據(jù)關聯(lián)數(shù)據(jù)傾斜的 問題時,都會存在一些缺點。
[0013] 創(chuàng)建傾斜表法的缺點在于,參與關聯(lián)的表需要讀和處理兩次,因為是部分結(jié)果,所 以最終結(jié)果也需要讀寫兩次,同時用戶需要人工建表時分析出傾斜值,如果傾斜值頻繁變 化,則需要變更表結(jié)構(gòu),而運行中線上環(huán)境不允許頻繁變更表,因此浪費了過多人工操作。
[0014] 配置參數(shù)法偶爾會出現(xiàn)有多次執(zhí)行數(shù)據(jù)不一致的現(xiàn)象,至今官方還未修復這個漏 洞,這會對數(shù)據(jù)質(zhì)量產(chǎn)生致命影響,是不可接受的。
[0015] Mapjoin (map端關聯(lián))對機器內(nèi)存有很強的約束,盡管我們調(diào)大了mapjoin的約束 參數(shù),但是大部分業(yè)務場景仍然無法緩存最小的數(shù)據(jù)集,故此種方法不是通用的解決方式, 無法解決我們的問題。
[0016] 由以上描述可以看出,現(xiàn)有的Hive處理數(shù)據(jù)關聯(lián)時數(shù)據(jù)傾斜的方法都具有或多 或少的缺陷,然而由于數(shù)據(jù)傾斜會導致任務失敗和嚴重超時,影響數(shù)據(jù)倉庫的整體穩(wěn)定性, 尤其是這些導致關聯(lián)傾斜的數(shù)據(jù)基本上都是數(shù)據(jù)倉庫任務的關鍵部分,不允許失敗和超 時,因此需要在任務執(zhí)行前智能識別關聯(lián)表的傾斜字段并進行特殊處理,這就需要有自動 化的數(shù)據(jù)傾斜分析器,以統(tǒng)計出某目標表在關聯(lián)字段上的數(shù)據(jù)出現(xiàn)頻度,往往數(shù)據(jù)傾斜就 是發(fā)生在這些高頻度的數(shù)據(jù)字段上。目前特殊處理此類場景比較浪費人力,已成為影響數(shù) 據(jù)倉庫穩(wěn)定運行的關鍵因素,如何解決和優(yōu)化海量數(shù)據(jù)在reduce端進行關聯(lián)時的傾斜問 題已經(jīng)迫在眉睫。

【發(fā)明內(nèi)容】

[0017] 有鑒于此,本發(fā)明提供一種解決數(shù)據(jù)傾斜的方法及裝置,能夠克服現(xiàn)有技術(shù)的缺 點和不足,通過引入傾斜分析統(tǒng)計工具及表流式傾斜處理工具,避免了數(shù)據(jù)傾斜導致的任 務失敗和超時,使得海量傾斜數(shù)據(jù)的關聯(lián)任務能快速完成,從而保障了數(shù)據(jù)倉庫的高性能 和穩(wěn)定性。
[0018] 為實現(xiàn)上述目的,本發(fā)明所提出的技術(shù)方案關鍵點為:在reduce端進行數(shù)據(jù)關聯(lián) 之前將含有傾斜關鍵字的數(shù)據(jù)通過合理算法變成多份,使其分布均勻化,避免出現(xiàn)只在一 個reduce端進行關聯(lián)的瓶頸效應,這樣便可以使數(shù)據(jù)盡可能的均勾分布在多個reduce中, 平滑參與數(shù)據(jù)關聯(lián)。
[0019] 為實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種解決數(shù)據(jù)傾斜的方法。
[0020] 本發(fā)明的一種解決數(shù)據(jù)傾斜的方法,包括:由數(shù)據(jù)傾斜統(tǒng)計模塊使用調(diào)度程序分 別統(tǒng)計出參與關聯(lián)的第一關聯(lián)表和第二關聯(lián)表在關聯(lián)字段上的第一統(tǒng)計信息和第二統(tǒng)計 信息;由表流式傾斜處理模塊根據(jù)待關聯(lián)的傾斜字段,在map端對所述第一關聯(lián)表和所述 第二關聯(lián)表的數(shù)據(jù)進行處理,以分別產(chǎn)生關聯(lián)偽列字段;由傾斜數(shù)據(jù)關聯(lián)模塊在reduce端 根據(jù)所述關聯(lián)偽列字段對所述第一關聯(lián)表和所述第二關聯(lián)表進行關聯(lián)。
[0021] 可選地,在所述關聯(lián)字段上,所述第一關聯(lián)表的數(shù)據(jù)量遠遠小于所述第二關聯(lián)表 的數(shù)據(jù)量。
[0022] 可選地,所述統(tǒng)計的步驟進一步包括:分別統(tǒng)計所述第一關聯(lián)表和所述第二關聯(lián) 表在所述關聯(lián)字段上的第一數(shù)據(jù)出現(xiàn)頻度和第二數(shù)據(jù)出現(xiàn)頻度;根據(jù)篩選閾值,建立所述 第一統(tǒng)計信息和第二統(tǒng)計信息,所述第一統(tǒng)計信息包括第一傾斜數(shù)據(jù)列值和所述第一數(shù)據(jù) 出現(xiàn)頻度,并且所述第二統(tǒng)計信息包括第二傾斜數(shù)據(jù)列值和所述第二數(shù)據(jù)出現(xiàn)頻度;以及 將所述第一統(tǒng)計信息和第二統(tǒng)計信息緩存在相應文件中。
[0023] 可選地,在map端對所述第一關聯(lián)表和所述第二關聯(lián)表的數(shù)據(jù)進行處理進一步包 括:根據(jù)所述第一統(tǒng)計信息,由所述表流式傾斜處理模塊在map端處理所述第一關聯(lián)表的 每一行數(shù)據(jù);針對所述第一關聯(lián)表在所述關聯(lián)字段上的傾斜值,根據(jù)所述第一統(tǒng)計信息,由 所述表流式傾斜處理模塊計算出用于所述傾斜值的樣本空間的個數(shù)上限值;以及基于所述 上限值,由所述表流式傾斜處理模塊對每一行數(shù)據(jù)進行復制并生成所述關聯(lián)偽列字段,其 中,所述復制份數(shù)與所述上限值相關。
[0024] 可選地,在map端對所述第一關聯(lián)表和所述第二關聯(lián)表的數(shù)據(jù)進行處理進一步包 括:根據(jù)所述第二統(tǒng)計信息,由所述表流式傾斜處理模塊在map端處理所述第二關聯(lián)表的 每一行數(shù)據(jù);根據(jù)所述第二統(tǒng)計信息,由所述表流式傾斜處理模塊將所述第二關聯(lián)表在所 述關聯(lián)字段上的傾斜值進行平均分組并編號以生成所述關聯(lián)偽列字段,其中,所述分組個 數(shù)與所述上限值相關。
[0025] 可選地,由傾斜數(shù)據(jù)關聯(lián)模塊在reduce端根據(jù)所述關聯(lián)偽列字段對所述第一關 聯(lián)表和所述第二關聯(lián)表進行關聯(lián)進一步包括:生成相應的reduce字段,其中,所述reduce 字段的樣本個數(shù)與所述上限值相關。
[0026] 根據(jù)本發(fā)明的另一方面,提供了 一種解決數(shù)據(jù)傾斜的裝置。
[0027] 本發(fā)明的一種解決數(shù)據(jù)傾斜的裝置,包括:數(shù)據(jù)傾斜統(tǒng)計模塊,用于使用調(diào)度程序 分別統(tǒng)計出參與關聯(lián)的第一關聯(lián)表和第二關聯(lián)表在關聯(lián)字段上的第一統(tǒng)計信息和第二統(tǒng) 計信息;表流式傾斜處理模塊,用于根據(jù)待關聯(lián)的傾斜字段,在map端對所述第一關聯(lián)表 和所述第二關聯(lián)表的數(shù)據(jù)進行處理,
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1