圖解數(shù)據(jù)

數(shù)據(jù)架構(gòu)

數(shù)據(jù)處理過程

案例

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

數(shù)據(jù)存儲(chǔ)

HDFS

  • read HDFS[1]

  • write HDFS[2]

數(shù)據(jù)計(jì)算

離線計(jì)算

MapReduce

  • 2個(gè)reduce task 的數(shù)據(jù)流[3]
    map size 公式 : max{ ${mapred.min.split.size},min(${dfs.block.size},${mapred.max.split.size})}

  • 透視 MapReduce1 Job [4]

  • 透視MapReduce on YARN[5]

實(shí)時(shí)計(jì)算

Storm

內(nèi)存計(jì)算

Spark

Hive

hive 架構(gòu)[6]<\sup>

hive常見問題總結(jié)

  • 內(nèi)存相關(guān)配置
set mapred.child.java.opts=-Xmx200m;  #設(shè)置task啟動(dòng)的java虛擬機(jī)能夠從操作系統(tǒng)那里挖到最大內(nèi)存大小,建議為內(nèi)存一半.
set mapreduce.task.io.sort.mb=573; #默認(rèn)是100
set mapred.child.java.opts -Xmx200m;
set mapreduce.map.java.opts -Xmx1024m
set mapreduce.reduce.java.opts  -Xmx1228m
set mapreduce.task.io.sort.mb=950
--------------
mapreduce.map.memory.mb 1024
mapreduce.reduce.memory.mb  1536
yarn.nodemanager.resource.memory-mb 153600
yarn.app.mapreduce.am.resource.mb   896
  • 數(shù)據(jù)傾斜
  • group by
    Group過程的數(shù)據(jù)傾斜对竣,set hive.map.aggr=true (默認(rèn)開啟)免绿,在map端完成聚合辅愿,來優(yōu)化傾斜。也就是在mapper內(nèi)部,做部分的聚合恰画,來輸出更少的行辙纬,減少需要排序和分發(fā)到reducer的數(shù)據(jù)量。
    Hive在嘗試做此優(yōu)化廊佩,不過會(huì)判斷aggregation的效果囚聚,如果不能節(jié)省足夠的內(nèi)存,就會(huì)退回標(biāo)準(zhǔn)map過程标锄。也就是在處理了100000 行(hive.groupby.mapaggr.checkinterval 控制)后顽铸,檢查內(nèi)存中的hash map的項(xiàng),如果超過50%(hive.map.aggr.hash.min.reduction 控制)料皇,則認(rèn)為聚合會(huì)被終止谓松。
    Hive同樣會(huì)估計(jì)hash map中每一項(xiàng)所需要的內(nèi)存,當(dāng)使用的內(nèi)存超過了mapper可用內(nèi)存的50%( hive.map.aggr.hash.percentmemory 控制)践剂,則會(huì)把flush此hash map到reducers鬼譬。然而這是對(duì)行數(shù)和每行大小的估計(jì),所以如果實(shí)際值過高逊脯,可能導(dǎo)致還沒有flush就out of memory了优质。
    當(dāng)出現(xiàn)這種OOM時(shí),可用減少hive.map.aggr.hash.percentmemory军洼, 但是這個(gè)對(duì)內(nèi)存增長與行數(shù)無關(guān)的數(shù)據(jù)來說巩螃,不一定是有效的。這個(gè)時(shí)候匕争,可以使用關(guān)閉以下方法避乏,
  1. map端聚合set hive.map.aggr=false
  2. 給mapper分配更多的內(nèi)存
  3. 重構(gòu)query查詢甘桑。利用子查詢等方法拍皮,優(yōu)化查詢語句
select count(distinct v) from tbl
改寫成
select count(1) from (select v from tbl group by v) t.

Group過程傾斜歹叮,還可以開啟hive.groupby.skewindata=true來改善,這個(gè)是讓key隨機(jī)分發(fā)到reducer春缕,而不是同樣的key分發(fā)到同一個(gè)reducer盗胀,然后reduce做聚合,做完之后再做一輪map-reduce锄贼。這個(gè)是把上面提到的map端聚合放到了reduce端票灰,增加了reducer新的開銷,大多數(shù)情況效果并不好宅荤。

  • join
  1. map join可以解決大表join小表時(shí)候的數(shù)據(jù)傾斜
  2. skew join是hive中對(duì)數(shù)據(jù)傾斜的一個(gè)解決方案屑迂,set hive.optimize.skewjoin = true;
    根據(jù)hive.skewjoin.key(默認(rèn)100000)設(shè)置的數(shù)量hive可以知道超過這個(gè)值的key就是特殊key值。對(duì)于特殊的key冯键,reduce過程直接跳過惹盼,最后再啟用新的map-reduce過程來處理。
    業(yè)務(wù)數(shù)據(jù)本身的傾斜惫确,可以從業(yè)務(wù)數(shù)據(jù)特點(diǎn)本身出發(fā)手报,通過設(shè)置reduce數(shù)量等方式,來避免傾斜

Hive SQL編譯為MapReduce的過程

  • MapReduce實(shí)現(xiàn)基本SQL操作的原理
  • Join的實(shí)現(xiàn)原理
  • Group By的實(shí)現(xiàn)原理
  • Distinct的實(shí)現(xiàn)原理
  • SQL轉(zhuǎn)化為MapReduce的過程
  • Phase1 SQL詞法改化,語法解析
  • Phase2 SQL基本組成單元QueryBlock
  • Phase3 邏輯操作符Operator
  • Phase4 邏輯層優(yōu)化器
  • Phase5 OperatorTree生成MapReduce Job的過程
  • Phase6 物理層優(yōu)化器
  • Hive SQL編譯過程的設(shè)計(jì)

數(shù)據(jù)應(yīng)用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掩蛤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子陈肛,更是在濱河造成了極大的恐慌揍鸟,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件句旱,死亡現(xiàn)場離奇詭異阳藻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谈撒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門腥泥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人啃匿,你說我怎么就攤上這事道川。” “怎么了立宜?”我有些...
    開封第一講書人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長臊岸。 經(jīng)常有香客問我橙数,道長,這世上最難降的妖魔是什么帅戒? 我笑而不...
    開封第一講書人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任灯帮,我火速辦了婚禮崖技,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钟哥。我一直安慰自己迎献,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開白布腻贰。 她就那樣靜靜地躺著吁恍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪播演。 梳的紋絲不亂的頭發(fā)上冀瓦,一...
    開封第一講書人閱讀 52,874評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音写烤,去河邊找鬼翼闽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛洲炊,可吹牛的內(nèi)容都是我干的感局。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼暂衡,長吁一口氣:“原來是場噩夢啊……” “哼询微!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起古徒,我...
    開封第一講書人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤拓提,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后隧膘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體代态,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年疹吃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蹦疑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡萨驶,死狀恐怖歉摧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腔呜,我是刑警寧澤叁温,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站核畴,受9級(jí)特大地震影響膝但,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谤草,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一跟束、第九天 我趴在偏房一處隱蔽的房頂上張望莺奸。 院中可真熱鬧,春花似錦冀宴、人聲如沸灭贷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽甚疟。三九已至,卻和暖如春刨肃,著一層夾襖步出監(jiān)牢的瞬間古拴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來泰國打工真友, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留黄痪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓盔然,卻偏偏與公主長得像桅打,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子愈案,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容