mapreduce复制连接的代码_我的 Hive 为什么跑不起来/跑得慢?看看是不是少了这几行代码?...
《飲食男女》開頭說:“人生不能像做菜,把所有的料都準(zhǔn)備好了才下鍋?!?/p>
但做大數(shù)據(jù)挖掘不一樣,MapReduce 不同于人生,一定要把準(zhǔn)備工作做好了,才能順利運(yùn)行后面的步驟。如果你的 HiveQL 代碼沒毛病,卻一運(yùn)行就出現(xiàn) Fail 提示,可以看看,是不是少了下面哪項(xiàng)準(zhǔn)備工作?
指定隊(duì)列
set在 HADOOP 中,隊(duì)列的組織是一切的基礎(chǔ),決定了隊(duì)列管理和資源分配,一定要在程序開頭指定一個(gè)隊(duì)列,注意任務(wù)和資源的平衡。
自動(dòng)化 MapJoin
set這是一步優(yōu)化操作,自動(dòng)化了 MapJoin,之后我們就不需要在 query 中再寫了。MapJoin 用于小表 Join 大表的場(chǎng)景,在大表通過 Mapper 時(shí),小表會(huì)被完全放入內(nèi)存中,Hive 會(huì)在 map 端進(jìn)行連接,因?yàn)?Hive 可以和內(nèi)存中的小表進(jìn)行逐一匹配,從而省略掉 reduce 過程。
任務(wù)并行
set參數(shù) hive.exec.parallel 控制著同一個(gè) sql 中是否允許并行執(zhí)行,默認(rèn)為 false,設(shè)置為 true 則開啟任務(wù)的并行執(zhí)行。并通過設(shè)置 hive.exec.parallel.thread.number 來指定同一個(gè) sql 允許并行運(yùn)行的最大線程數(shù)。
設(shè)置超時(shí)時(shí)間
set這里設(shè)置的是 Job 運(yùn)行多久后會(huì)因超時(shí)而被 kill 掉,根據(jù)數(shù)據(jù)量而定。我目前工作中處理的數(shù)據(jù)有上億條,維度近千,所以設(shè)置得比較大。
“健康監(jiān)測(cè)”
set這個(gè)參數(shù)的作用是,若檢測(cè)到腳本在一定時(shí)間內(nèi)無響應(yīng),那么 NodeHealthCheckerService 線程會(huì)將該節(jié)點(diǎn)的監(jiān)控狀態(tài)標(biāo)注為 “unhealthy”。但 Hadoop 2.x 以后,參數(shù) mapred.healthChecker.script.timeout 的名字已經(jīng)改為 mapreduce.tasktracker.healthchecker.script.timeout,雖然原名還可用,最好還是使用新的參數(shù)名。
設(shè)置容量大小
setTez 是 YARN 的作業(yè)模式,hive.tez.container.size 參數(shù)可設(shè)置堆的大小,即增大內(nèi)存容量。由于 D12 計(jì)算機(jī)具有 28GB 內(nèi)存,因此我們常使用 10GB (10240MB) 大小的容器。
設(shè)置聚集操作執(zhí)行時(shí)機(jī)
set若將該參數(shù)設(shè)置為 true,則會(huì)在 mapper 端先進(jìn)行 group by,然后執(zhí)行 merge 操作,減少 reduce 要處理的數(shù)據(jù)量,效率更高但需要更多內(nèi)存。若將該參數(shù)設(shè)置為 false,則把前面的步驟放在了 reduce 階段再進(jìn)行。
設(shè)置 reduce 個(gè)數(shù)
set該參數(shù)用于設(shè)置 reduce 的任務(wù)個(gè)數(shù),設(shè)置為500,即生成500個(gè)文件。根據(jù)具體數(shù)據(jù)量進(jìn)行調(diào)整,使得單個(gè) map 能處理合適的數(shù)據(jù)量。
在海量數(shù)據(jù)真正跑起來前,一般需要設(shè)置的幾個(gè)參數(shù)就是以上提到的啦,具體每個(gè)參數(shù)需要設(shè)置成什么值,還要根據(jù)具體的數(shù)據(jù)量和時(shí)間、設(shè)備等條件來定,可以反復(fù)嘗試進(jìn)行優(yōu)化。
歡迎大家關(guān)注微信公眾號(hào)【數(shù)據(jù)池塘】:
總結(jié)
以上是生活随笔為你收集整理的mapreduce复制连接的代码_我的 Hive 为什么跑不起来/跑得慢?看看是不是少了这几行代码?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios弧形进度条_iOS如何实现环形进度
- 下一篇: 国家八大战略新兴产业有哪些 一文让你知道