欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

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

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

[0017] 有鑒于此,本發(fā)明提供一種解決數(shù)據(jù)傾斜的方法及裝置,能夠克服現(xiàn)有技術(shù)的缺 點(diǎn)和不足,通過(guò)引入傾斜分析統(tǒng)計(jì)工具及表流式傾斜處理工具,避免了數(shù)據(jù)傾斜導(dǎo)致的任 務(wù)失敗和超時(shí),使得海量?jī)A斜數(shù)據(jù)的關(guān)聯(lián)任務(wù)能快速完成,從而保障了數(shù)據(jù)倉(cāng)庫(kù)的高性能 和穩(wěn)定性。
[0018] 為實(shí)現(xiàn)上述目的,本發(fā)明所提出的技術(shù)方案關(guān)鍵點(diǎn)為:在reduce端進(jìn)行數(shù)據(jù)關(guān)聯(lián) 之前將含有傾斜關(guān)鍵字的數(shù)據(jù)通過(guò)合理算法變成多份,使其分布均勻化,避免出現(xiàn)只在一 個(gè)reduce端進(jìn)行關(guān)聯(lián)的瓶頸效應(yīng),這樣便可以使數(shù)據(jù)盡可能的均勾分布在多個(gè)reduce中, 平滑參與數(shù)據(jù)關(guān)聯(lián)。
[0019] 為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種解決數(shù)據(jù)傾斜的方法。
[0020] 本發(fā)明的一種解決數(shù)據(jù)傾斜的方法,包括:由數(shù)據(jù)傾斜統(tǒng)計(jì)模塊使用調(diào)度程序分 別統(tǒng)計(jì)出參與關(guān)聯(lián)的第一關(guān)聯(lián)表和第二關(guān)聯(lián)表在關(guān)聯(lián)字段上的第一統(tǒng)計(jì)信息和第二統(tǒng)計(jì) 信息;由表流式傾斜處理模塊根據(jù)待關(guān)聯(lián)的傾斜字段,在map端對(duì)所述第一關(guān)聯(lián)表和所述 第二關(guān)聯(lián)表的數(shù)據(jù)進(jìn)行處理,以分別產(chǎn)生關(guān)聯(lián)偽列字段;由傾斜數(shù)據(jù)關(guān)聯(lián)模塊在reduce端 根據(jù)所述關(guān)聯(lián)偽列字段對(duì)所述第一關(guān)聯(lián)表和所述第二關(guān)聯(lián)表進(jìn)行關(guān)聯(lián)。
[0021] 可選地,在所述關(guān)聯(lián)字段上,所述第一關(guān)聯(lián)表的數(shù)據(jù)量遠(yuǎn)遠(yuǎn)小于所述第二關(guān)聯(lián)表 的數(shù)據(jù)量。
[0022] 可選地,所述統(tǒng)計(jì)的步驟進(jìn)一步包括:分別統(tǒng)計(jì)所述第一關(guān)聯(lián)表和所述第二關(guān)聯(lián) 表在所述關(guān)聯(lián)字段上的第一數(shù)據(jù)出現(xiàn)頻度和第二數(shù)據(jù)出現(xiàn)頻度;根據(jù)篩選閾值,建立所述 第一統(tǒng)計(jì)信息和第二統(tǒng)計(jì)信息,所述第一統(tǒng)計(jì)信息包括第一傾斜數(shù)據(jù)列值和所述第一數(shù)據(jù) 出現(xiàn)頻度,并且所述第二統(tǒng)計(jì)信息包括第二傾斜數(shù)據(jù)列值和所述第二數(shù)據(jù)出現(xiàn)頻度;以及 將所述第一統(tǒng)計(jì)信息和第二統(tǒng)計(jì)信息緩存在相應(yīng)文件中。
[0023] 可選地,在map端對(duì)所述第一關(guān)聯(lián)表和所述第二關(guān)聯(lián)表的數(shù)據(jù)進(jìn)行處理進(jìn)一步包 括:根據(jù)所述第一統(tǒng)計(jì)信息,由所述表流式傾斜處理模塊在map端處理所述第一關(guān)聯(lián)表的 每一行數(shù)據(jù);針對(duì)所述第一關(guān)聯(lián)表在所述關(guān)聯(lián)字段上的傾斜值,根據(jù)所述第一統(tǒng)計(jì)信息,由 所述表流式傾斜處理模塊計(jì)算出用于所述傾斜值的樣本空間的個(gè)數(shù)上限值;以及基于所述 上限值,由所述表流式傾斜處理模塊對(duì)每一行數(shù)據(jù)進(jìn)行復(fù)制并生成所述關(guān)聯(lián)偽列字段,其 中,所述復(fù)制份數(shù)與所述上限值相關(guān)。
[0024] 可選地,在map端對(duì)所述第一關(guān)聯(lián)表和所述第二關(guān)聯(lián)表的數(shù)據(jù)進(jìn)行處理進(jìn)一步包 括:根據(jù)所述第二統(tǒng)計(jì)信息,由所述表流式傾斜處理模塊在map端處理所述第二關(guān)聯(lián)表的 每一行數(shù)據(jù);根據(jù)所述第二統(tǒng)計(jì)信息,由所述表流式傾斜處理模塊將所述第二關(guān)聯(lián)表在所 述關(guān)聯(lián)字段上的傾斜值進(jìn)行平均分組并編號(hào)以生成所述關(guān)聯(lián)偽列字段,其中,所述分組個(gè) 數(shù)與所述上限值相關(guān)。
[0025] 可選地,由傾斜數(shù)據(jù)關(guān)聯(lián)模塊在reduce端根據(jù)所述關(guān)聯(lián)偽列字段對(duì)所述第一關(guān) 聯(lián)表和所述第二關(guān)聯(lián)表進(jìn)行關(guān)聯(lián)進(jìn)一步包括:生成相應(yīng)的reduce字段,其中,所述reduce 字段的樣本個(gè)數(shù)與所述上限值相關(guān)。
[0026] 根據(jù)本發(fā)明的另一方面,提供了 一種解決數(shù)據(jù)傾斜的裝置。
[0027] 本發(fā)明的一種解決數(shù)據(jù)傾斜的裝置,包括:數(shù)據(jù)傾斜統(tǒng)計(jì)模塊,用于使用調(diào)度程序 分別統(tǒng)計(jì)出參與關(guān)聯(lián)的第一關(guān)聯(lián)表和第二關(guān)聯(lián)表在關(guān)聯(lián)字段上的第一統(tǒng)計(jì)信息和第二統(tǒng) 計(jì)信息;表流式傾斜處理模塊,用于根據(jù)待關(guān)聯(lián)的傾斜字段,在map端對(duì)所述第一關(guān)聯(lián)表 和所述第二關(guān)聯(lián)表的數(shù)據(jù)進(jìn)行處理,
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
福海县| 大足县| 安多县| 和林格尔县| 齐河县| 武鸣县| 大理市| 通许县| 瑞丽市| 宽甸| 固原市| 宁陕县| 青河县| 民县| 蒙山县| 宿迁市| 青川县| 资溪县| 库车县| 宜城市| 隆林| 盐城市| 涞水县| 辽中县| 宝应县| 阿拉善右旗| 全椒县| 区。| 启东市| 颍上县| 威信县| 古蔺县| 沾化县| 白水县| 黄山市| 张家界市| 宁安市| 鸡西市| 宕昌县| 张家界市| 南京市|