日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

大数据数据倾斜

發(fā)布時間:2023/11/27 生活经验 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数据数据倾斜 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是數(shù)據(jù)傾斜?
????簡單的講,數(shù)據(jù)傾斜就是我們在計算數(shù)據(jù)的時候,數(shù)據(jù)的分散度不夠,導致大量的數(shù)據(jù)集中到了一臺或者幾臺機器上計算,這些數(shù)據(jù)的計算速度遠遠低于平均計算速度,導致整個計算過程過慢。?
????相信大部分做數(shù)據(jù)的童鞋們都會遇到數(shù)據(jù)傾斜,數(shù)據(jù)傾斜會發(fā)生在數(shù)據(jù)開發(fā)的各個環(huán)節(jié)中,比如:

  • 用Hive算數(shù)據(jù)的時候reduce階段卡在99.99%
  • 用SparkStreaming做實時算法時候,一直會有executor出現(xiàn)OOM的錯誤,但是其余的executor內(nèi)存使用率卻很低。?
    ????數(shù)據(jù)傾斜有一個關鍵因素是數(shù)據(jù)量大,可以達到千億級。

    數(shù)據(jù)傾斜長的表現(xiàn)

????以Hadoop和Spark是最常見的兩個計算平臺,下面就以這兩個平臺說明:

1、Hadoop中的數(shù)據(jù)傾斜

????Hadoop中直接貼近用戶使用使用的時Mapreduce程序和Hive程序,雖說Hive最后也是用MR來執(zhí)行(至少目前Hive內(nèi)存計算并不普及),但是畢竟寫的內(nèi)容邏輯區(qū)別很大,一個是程序,一個是Sql,因此這里稍作區(qū)分。

Hadoop中的數(shù)據(jù)傾斜主要表現(xiàn)在ruduce階段卡在99.99%,一直99.99%不能結束。?
這里如果詳細的看日志或者和監(jiān)控界面的話會發(fā)現(xiàn):

  • 有一個多幾個reduce卡住
  • 各種container報錯OOM
  • 讀寫的數(shù)據(jù)量極大,至少遠遠超過其它正常的reduce?
    伴隨著數(shù)據(jù)傾斜,會出現(xiàn)任務被kill等各種詭異的表現(xiàn)。

經(jīng)驗:?Hive的數(shù)據(jù)傾斜,一般都發(fā)生在Sql中Group和On上,而且和數(shù)據(jù)邏輯綁定比較深。

2、Spark中的數(shù)據(jù)傾斜

????Spark中的數(shù)據(jù)傾斜也很常見,這里包括Spark Streaming和Spark Sql,表現(xiàn)主要有下面幾種:

  • Executor lost,OOM,Shuffle過程出錯
  • Driver OOM
  • 單個Executor執(zhí)行時間特別久,整體任務卡在某個階段不能結束
  • 正常運行的任務突然失敗

補充一下,在Spark streaming程序中,數(shù)據(jù)傾斜更容易出現(xiàn),特別是在程序中包含一些類似sql的join、group這種操作的時候。 因為Spark Streaming程序在運行的時候,我們一般不會分配特別多的內(nèi)存,因此一旦在這個過程中出現(xiàn)一些數(shù)據(jù)傾斜,就十分容易造成OOM。

數(shù)據(jù)傾斜的原理

1、數(shù)據(jù)傾斜產(chǎn)生的原因?
????????我們以Spark和Hive的使用場景為例。他們在做數(shù)據(jù)運算的時候會設計到,countdistinct、group by、join等操作,這些都會觸發(fā)Shuffle動作,一旦觸發(fā),所有相同key的值就會拉到一個或幾個節(jié)點上,就容易發(fā)生單點問題。

2、萬惡的shuffle?
????????Shuffle是一個能產(chǎn)生奇跡的地方,不管是在Spark還是Hadoop中,它們的作用都是至關重要的。那么在Shuffle如何產(chǎn)生了數(shù)據(jù)傾斜?

Hadoop和Spark在Shuffle過程中產(chǎn)生數(shù)據(jù)傾斜的原理基本類似。如下圖。?


????????大部分數(shù)據(jù)傾斜的原理就類似于下圖,很明了,因為數(shù)據(jù)分布不均勻,導致大量的數(shù)據(jù)分配到了一個節(jié)點。

?

3、從業(yè)務計角度來理解數(shù)據(jù)傾斜

????????數(shù)據(jù)往往和業(yè)務是強相關的,業(yè)務的場景直接影響到了數(shù)據(jù)的分布。再舉一個例子,比如就說訂單場景吧,我們在某一天在北京和上海兩個城市多了強力的推廣,結果可能是這兩個城市的訂單量增長了10000%,其余城市的數(shù)據(jù)量不變。然后我們要統(tǒng)計不同城市的訂單情況,這樣,一做group操作,可能直接就數(shù)據(jù)傾斜了。

如何解決

????????數(shù)據(jù)傾斜的產(chǎn)生是有一些討論的,解決它們也是有一些討論的,本章會先給出幾個解決數(shù)據(jù)傾斜的思路,然后對Hadoop和Spark分別給出一些解決數(shù)據(jù)傾斜的方案。?
一、幾個思路?
????解決數(shù)據(jù)傾斜有這幾個思路:?
????????1.業(yè)務邏輯,我們從業(yè)務邏輯的層面上來優(yōu)化數(shù)據(jù)傾斜,比如上面的例子,我們單獨對這兩個城市來做count,最后和其它城市做整合。?
????????2.程序層面,比如說在Hive中,經(jīng)常遇到count(distinct)操作,這樣會導致最終只有一個reduce,我們可以先group 再在外面包一層count,就可以了。?
????????3.調參方面,Hadoop和Spark都自帶了很多的參數(shù)和機制來調節(jié)數(shù)據(jù)傾斜,合理利用它們就能解決大部分問題。

二、從業(yè)務和數(shù)據(jù)上解決數(shù)據(jù)傾斜

????????很多數(shù)據(jù)傾斜都是在數(shù)據(jù)的使用上造成的。我們舉幾個場景,并分別給出它們的解決方案。?
數(shù)據(jù)分布不均勻:?
前面提到的“從數(shù)據(jù)角度來理解數(shù)據(jù)傾斜”和“從業(yè)務計角度來理解數(shù)據(jù)傾斜”中的例子,其實都是數(shù)據(jù)分布不均勻的類型,這種情況和計算平臺無關,我們能通過設計的角度嘗試解決它。

  • 有損的方法:?
    ????????????找到異常數(shù)據(jù),比如ip為0的數(shù)據(jù),過濾掉
  • 無損的方法:?
    ????????????對分布不均勻的數(shù)據(jù),單獨計算?
    ????????????先對key做一層hash,先將數(shù)據(jù)打散讓它的并行度變大,再匯集?
    ?數(shù)據(jù)預處理

三、Hadoop平臺的優(yōu)化方法

????列出來一些方法和思路,具體的參數(shù)和用法在官網(wǎng)看就行了。

????????1.mapjoin方式?
????????2.count distinct的操作,先轉成group,再count?
????????3.hive.groupby.skewindata=true?
????????4.left semi jioin的使用?
????????5.設置map端輸出、中間結果壓縮。(不完全是解決數(shù)據(jù)傾斜的問題,但是減少了IO讀寫和網(wǎng)絡傳輸,能提高很多效率)

四、Spark平臺的優(yōu)化方法?
????列出來一些方法和思路,具體的參數(shù)和用法在官網(wǎng)看就行了。?
????????1.mapjoin方式?
????????2.設置rdd壓縮?
????????3.合理設置driver的內(nèi)存?
????????4.Spark Sql中的優(yōu)化和Hive類似,可以參考Hive

總結

數(shù)據(jù)傾斜的坑還是很大的,如何處理數(shù)據(jù)傾斜是一個長期的過程,希望本文的一些思路能提供幫助。文中一些內(nèi)容沒有細講,比如Hive Sql的優(yōu)化,數(shù)據(jù)清洗中的各種坑,這些留待后面單獨的分享,會有很多的內(nèi)容。另外千億級別的數(shù)據(jù)還會有更多的難點,不僅僅是數(shù)據(jù)傾斜的問題,這一點在后面也會有專門的分享。

轉載于:https://www.cnblogs.com/gala1021/p/8552302.html

總結

以上是生活随笔為你收集整理的大数据数据倾斜的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。