电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Apache Hive 通用調(diào)優(yōu)featch抓取機(jī)制 mr本地模式

瀏覽:142日期:2023-03-07 14:40:16
目錄
  • Apache Hive-通用優(yōu)化-featch抓取機(jī)制 mr本地模式
    • Fetch抓取機(jī)制
    • mapreduce本地模式
    • 切換Hive的執(zhí)行引擎
  • Apache Hive-通用優(yōu)化-join優(yōu)化
    • - reduce端join
    • -map端join
    • reduce 端 join 優(yōu)化
    • map 端 join 優(yōu)化
  • Apache Hive--通用調(diào)優(yōu)--數(shù)據(jù)傾斜優(yōu)化
    • group by數(shù)據(jù)傾斜
    • join數(shù)據(jù)傾斜
  • Apache Hive--通用調(diào)優(yōu)--MR程序task個(gè)數(shù)調(diào)整
    • maptask個(gè)數(shù)
    • reducetask個(gè)數(shù)
  • 通用優(yōu)化-執(zhí)行計(jì)劃
    • 通用優(yōu)化-并行機(jī)制,推測(cè)執(zhí)行機(jī)制
    • Hive的嚴(yán)格模式

Apache Hive-通用優(yōu)化-featch抓取機(jī)制 mr本地模式

Fetch抓取機(jī)制

  • 功能:在執(zhí)行sql的時(shí)候,能不走M(jìn)apReduce程序處理就盡量不走M(jìn)apReduce程序處理.
  • 盡量直接去操作數(shù)據(jù)文件。

設(shè)置: hive.fetch.task.conversion= more。

--在下述3種情況下 sql不走mr程序--全局查找select * from student;--字段查找select num,name from student;--limit 查找select num,name from student limit 2;

mapreduce本地模式

  • MapReduce程序除了可以提交到y(tǒng)arn集群分布式執(zhí)行之外,還可以使用本地模擬環(huán)境運(yùn)行,當(dāng)然此時(shí)就不是分布式執(zhí)行的程序,但是針對(duì)小文件小數(shù)據(jù)處理特別有效果。
  • 用戶可以通過設(shè)置hive.exec.mode.local.auto的值為true,來讓Hive在適當(dāng)?shù)臅r(shí)候自動(dòng)啟動(dòng)這個(gè) 優(yōu)化。

功能:如果非要執(zhí)行==MapReduce程序,能夠本地執(zhí)行的,盡量不提交yarn上執(zhí)行==。

默認(rèn)是關(guān)閉的。意味著只要走M(jìn)apReduce就提交yarn執(zhí)行。

mapreduce.framework.name = local 本地模式mapreduce.framework.name = yarn 集群模式 

Hive提供了一個(gè)參數(shù),自動(dòng)切換MapReduce程序?yàn)楸镜啬J剑绻粷M足條件,就執(zhí)行yarn模式。

set hive.exec.mode.local.auto = true;--3個(gè)條件必須都滿足 自動(dòng)切換本地模式The total input size of the job is lower than: hive.exec.mode.local.auto.inputbytes.max (128MB by default)  --數(shù)據(jù)量小于128MThe total number of map-tasks is less than: hive.exec.mode.local.auto.tasks.max (4 by default)  --maptask個(gè)數(shù)少于4個(gè)The total number of reduce tasks required is 1 or 0.  --reducetask個(gè)數(shù)是0 或者 1

切換Hive的執(zhí)行引擎

WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.

如果針對(duì)Hive的調(diào)優(yōu)依然無法滿足你的需求 還是效率低, 嘗試使用spark計(jì)算引擎 或者Tez.

Apache Hive-通用優(yōu)化-join優(yōu)化

在了解join優(yōu)化的時(shí)候,我們需要了解一個(gè)前置知識(shí)點(diǎn):map端join 和reduce端join

- reduce端join

  • 這種join的弊端在于map階段沒有承擔(dān)太多的責(zé)任,所有的數(shù)據(jù)在經(jīng)過shuffle在reduce階段實(shí)現(xiàn)的,而shuffle又是影響性能的核心點(diǎn).

-map端join

  • 首先啟動(dòng)本地任務(wù)將join中小表數(shù)據(jù)進(jìn)行分布式緩存
  • 啟動(dòng)mr程序(只有map階段)并行處理大數(shù)據(jù),并且從自己的緩存中讀取小表數(shù)據(jù),進(jìn)行join,結(jié)果直接輸出到文件中
  • 沒有shuffle過程 也沒有reduce過程
  • 弊端:緩存太小導(dǎo)致表數(shù)據(jù)不能太大

reduce 端 join 優(yōu)化

適合于大表Join大表

bucket join-- 適合于大表Join大表

方式1:Bucktet Map Join 分桶表

語法: clustered by colName(參與join的字段)
參數(shù): set hive.optimize.bucketmapjoin = true
要求: 分桶字段 = Join字段 ,分桶的個(gè)數(shù)相等或者成倍數(shù),必須是在map join中

方式2:Sort Merge Bucket Join(SMB)

基于有序的數(shù)據(jù)Join
語法:clustered by colName sorted by (colName)
參數(shù)
set hive.optimize.bucketmapjoin = true;
set hive.auto.convert.sortmerge.join=true;
set hive.optimize.bucketmapjoin.sortedmerge = true;
set hive.auto.convert.sortmerge.join.noconditionaltask=true;
要求: 分桶字段 = Join字段 = 排序字段,分桶的個(gè)數(shù)相等或者成倍數(shù)

map 端 join 優(yōu)化

  • hive.auto.convert.join.noconditionaltask
hive.auto.convert.join=trueHive老版本#如果參與的一個(gè)表大小滿足條件 轉(zhuǎn)換為map joinhive.mapjoin.smalltable.filesize=25000000  Hive2.0之后版本#是否啟用基于輸入文件的大小,將reduce join轉(zhuǎn)化為Map join的優(yōu)化機(jī)制。假設(shè)參與join的表(或分區(qū))有N個(gè),如果打開這個(gè)參數(shù),并且有N-1個(gè)表(或分區(qū))的大小總和小于hive.auto.convert.join.noconditionaltask.size參數(shù)指定的值,那么會(huì)直接將join轉(zhuǎn)為Map join。hive.auto.convert.join.noconditionaltask=true hive.auto.convert.join.noconditionaltask.size=512000000 

Apache Hive--通用調(diào)優(yōu)--數(shù)據(jù)傾斜優(yōu)化

數(shù)據(jù)傾斜優(yōu)化
什么是數(shù)據(jù)傾斜
描述的數(shù)據(jù)進(jìn)行分布式處理 分配不平均的現(xiàn)象
數(shù)據(jù)傾斜的后果
某個(gè)task數(shù)據(jù)量過大 執(zhí)行時(shí)間過長(zhǎng) 導(dǎo)致整體job任務(wù)遲遲不結(jié)束
執(zhí)行時(shí)間長(zhǎng) 出bug及風(fēng)險(xiǎn)幾率提高
霸占運(yùn)算資源 遲遲不釋放
通常如何發(fā)現(xiàn)數(shù)據(jù)傾斜
在yarn或者其他資源監(jiān)控軟件上 發(fā)現(xiàn)某個(gè)job作業(yè) 卡在某個(gè)進(jìn)度遲遲不動(dòng) (注意 倒不是報(bào)錯(cuò))
造成數(shù)據(jù)傾斜的原因
數(shù)據(jù)本身就傾斜
自定義分區(qū)、分組規(guī)則不合理
業(yè)務(wù)影響 造成數(shù)據(jù)短期高頻波動(dòng)
數(shù)據(jù)傾斜的通用解決方案
1、有錢 有預(yù)警
增加物理資源 單獨(dú)處理傾斜的數(shù)據(jù)
2、沒錢 沒有預(yù)警
傾斜數(shù)據(jù)打散 分步執(zhí)行
先將傾斜數(shù)據(jù)打散成多干份
處理的結(jié)果再最終合并
hive中數(shù)據(jù)傾斜的場(chǎng)景
場(chǎng)景一:group by 、count(distinct)
hive.map.aggr=true; map端預(yù)聚合
手動(dòng)將數(shù)據(jù)隨機(jī)分區(qū) select * from table distribute by rand();
如果有數(shù)據(jù)傾斜問題 開啟負(fù)載均衡
先啟動(dòng)第一個(gè)mr程序 把傾斜的數(shù)據(jù)隨機(jī)打散分散到各個(gè)reduce中
然后第二個(gè)mr程序把上一步結(jié)果進(jìn)行最終匯總
hive.groupby.skewindata=true;
場(chǎng)景二:join
提前過濾,將大數(shù)據(jù)變成小數(shù)據(jù),實(shí)現(xiàn)Map Join
使用Bucket Join
使用Skew Join
將Map Join和Reduce Join進(jìn)行合并,如果某個(gè)值出現(xiàn)了數(shù)據(jù)傾斜,就會(huì)將產(chǎn)生數(shù)據(jù)傾斜的數(shù)據(jù)單獨(dú)使用Map Join來實(shí)現(xiàn)
最終將Map Join的結(jié)果和Reduce Join的結(jié)果進(jìn)行Union合并
Hive中通常指的是在reduce階段數(shù)據(jù)傾斜

解決方法

group by數(shù)據(jù)傾斜

方案一:開啟Map端聚合

hive.map.aggr=true;#是否在Hive Group By 查詢中使用map端聚合。#這個(gè)設(shè)置可以將頂層的部分聚合操作放在Map階段執(zhí)行,從而減輕清洗階段數(shù)據(jù)傳輸和Reduce階段的執(zhí)行時(shí)間,提升總體性能。但是指標(biāo)不治本。

方案二:實(shí)現(xiàn)隨機(jī)分區(qū)

實(shí)現(xiàn)隨機(jī)分區(qū)select * from table distribute by rand();

方案三:數(shù)據(jù)傾斜時(shí)==自動(dòng)負(fù)載均衡==只使用group by

hive.groupby.skewindata=true;#開啟該參數(shù)以后,當(dāng)前程序會(huì)自動(dòng)通過兩個(gè)MapReduce來運(yùn)行#第一個(gè)MapReduce自動(dòng)進(jìn)行隨機(jī)分布到Reducer中,每個(gè)Reducer做部分聚合操作,輸出結(jié)果#第二個(gè)MapReduce將上一步聚合的結(jié)果再按照業(yè)務(wù)(group by key)進(jìn)行處理,保證相同的分布到一起,最終聚合得到結(jié)果

join數(shù)據(jù)傾斜

  • 方案一:提前過濾,將大數(shù)據(jù)變成小數(shù)據(jù),實(shí)現(xiàn)Map Join
  • 方案二:使用Bucket Join
  • 方案三:使用Skew Join

數(shù)據(jù)單獨(dú)使用Map Join來實(shí)現(xiàn)

#其他沒有產(chǎn)生數(shù)據(jù)傾斜的數(shù)據(jù)由Reduce Join來實(shí)現(xiàn),這樣就避免了Reduce Join中產(chǎn)生數(shù)據(jù)傾斜的問題#最終將Map Join的結(jié)果和Reduce Join的結(jié)果進(jìn)行Union合并#開啟運(yùn)行過程中skewjoinset hive.optimize.skewjoin=true;#如果這個(gè)key的出現(xiàn)的次數(shù)超過這個(gè)范圍set hive.skewjoin.key=100000;#在編譯時(shí)判斷是否會(huì)產(chǎn)生數(shù)據(jù)傾斜set hive.optimize.skewjoin.compiletime=true;set hive.optimize.union.remove=true;#如果Hive的底層走的是MapReduce,必須開啟這個(gè)屬性,才能實(shí)現(xiàn)不合并set mapreduce.input.fileinputformat.input.dir.recursive=true;

Apache Hive--通用調(diào)優(yōu)--MR程序task個(gè)數(shù)調(diào)整

maptask個(gè)數(shù)

  • 如果是在MapReduce中 maptask是通過==邏輯切片==機(jī)制決定的。
  • 但是在hive中,影響的因素很多。比如邏輯切片機(jī)制,文件是否壓縮、壓縮之后是否支持切割。
  • 因此在==Hive中,調(diào)整MapTask的個(gè)數(shù),直接去HDFS調(diào)整文件的大小和個(gè)數(shù),效率較高==。

合并的大小最好=block size

如果大文件多,就調(diào)整blocl size

reducetask個(gè)數(shù)

  • 如果在MapReduce中,通過代碼可以直接指定 job.setNumReduceTasks(N)
  • 在Hive中,reducetask個(gè)數(shù)受以下幾個(gè)條件控制的

hive.exec.reducers.bytes.per.reducer=256000000
每個(gè)任務(wù)最大的 reduce 數(shù),默認(rèn)為 1009
hive.exec.reducsers.max=1009
mapreduce.job.reduces
該值默認(rèn)為-1,由 hive 自己根據(jù)任務(wù)情況進(jìn)行判斷。

--如果用戶用戶不設(shè)置 hive將會(huì)根據(jù)數(shù)據(jù)量或者sql需求自己評(píng)估reducetask個(gè)數(shù)。
--用戶可以自己通過參數(shù)設(shè)置reducetask的個(gè)數(shù)
set mapreduce.job.reduces = N
--用戶設(shè)置的不一定生效,如果用戶設(shè)置的和sql執(zhí)行邏輯有沖突,比如order by,在sql編譯期間,hive又會(huì)將reducetask設(shè)置為合理的個(gè)數(shù)。

Number of reduce tasks determined at compile time: 1

通用優(yōu)化-執(zhí)行計(jì)劃

通過執(zhí)行計(jì)劃可以看出==hive接下來是如何打算執(zhí)行這條sql的==。

語法格式:explain + sql語句

通用優(yōu)化-并行機(jī)制,推測(cè)執(zhí)行機(jī)制

并行執(zhí)行機(jī)制

  • 如果hivesql的底層某些stage階段可以并行執(zhí)行,就可以提高執(zhí)行效率。
  • 前提是==stage之間沒有依賴== 并行的弊端是瞬時(shí)服務(wù)器壓力變大。

參數(shù)

set hive.exec.parallel=true; --是否并行執(zhí)行作業(yè)。適用于可以并行運(yùn)行的 MapReduce 作業(yè),例如在多次插入期間移動(dòng)文件以插入目標(biāo)set hive.exec.parallel.thread.number=16; --最多可以并行執(zhí)行多少個(gè)作業(yè)。默認(rèn)為8。

Hive的嚴(yán)格模式

  • 注意。不要和動(dòng)態(tài)分區(qū)的嚴(yán)格模式搞混淆。
  • 這里的嚴(yán)格模式指的是開啟之后 ==hive會(huì)禁止一些用戶都影響不到的錯(cuò)誤包括效率低下的操作==,不允許運(yùn)行一些有風(fēng)險(xiǎn)的查詢。

設(shè)置

set hive.mapred.mode = strict --默認(rèn)是嚴(yán)格模式  nonstrict

解釋

1、如果是分區(qū)表,沒有where進(jìn)行分區(qū)裁剪 禁止執(zhí)行

2、order by語句必須+limit限制

推測(cè)執(zhí)行機(jī)制 ==建議關(guān)閉==。

  • MapReduce中task的一個(gè)機(jī)制。
  • 功能:

一個(gè)job底層可能有多個(gè)task執(zhí)行,如果某些拖后腿的task執(zhí)行慢,可能會(huì)導(dǎo)致最終job失敗。

所謂的==推測(cè)執(zhí)行機(jī)制就是通過算法找出拖后腿的task,為其啟動(dòng)備份的task==。

兩個(gè)task同時(shí)處理一份數(shù)據(jù),誰先處理完,誰的結(jié)果作為最終結(jié)果。

  • 推測(cè)執(zhí)行機(jī)制默認(rèn)是開啟的,但是在企業(yè)生產(chǎn)環(huán)境中==建議關(guān)閉==。

以上就是Apache Hive 通用調(diào)優(yōu)featch抓取機(jī)制 mr本地模式的詳細(xì)內(nèi)容,更多關(guān)于Apache Hive 通用調(diào)優(yōu)的資料請(qǐng)關(guān)注其它相關(guān)文章!

標(biāo)簽: Linux Apache
主站蜘蛛池模板: 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | 中医治疗皮肤病_潍坊银康医院「山东」重症皮肤病救治平台 | 东莞ERP软件_广州云ERP_中山ERP_台湾工厂erp系统-广东顺景软件科技有限公司 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 烘箱-工业烘箱-工业电炉-实验室干燥箱 - 苏州华洁烘箱制造有限公司 | 示波器高压差分探头-国产电流探头厂家-南京桑润斯电子科技有限公司 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 瓶盖扭矩测试仪-瓶盖扭力仪-全自动扭矩仪-济南三泉中石单品站 | 丹佛斯变频器-Danfoss战略代理经销商-上海津信变频器有限公司 | 压砖机、液压制砖机、静压砖机、环保砖机生产厂家—杜甫机械 | 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 航空障碍灯_高中低光强航空障碍灯_民航许可认证航空警示灯厂家-东莞市天翔航天科技有限公司 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 施工电梯_齿条货梯_烟囱电梯_物料提升机-河南大诚机械制造有限公司 | 冷水机,风冷冷水机,水冷冷水机,螺杆冷水机专业制造商-上海祝松机械有限公司 | 防火板_饰面耐火板价格、厂家_品牌认准格林雅 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 包塑软管|金属软管|包塑金属软管-闵彬管业 | 河南正规膏药生产厂家-膏药贴牌-膏药代加工-修康药业集团官网 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 申江储气罐厂家,储气罐批发价格,储气罐规格-上海申江压力容器有限公司(厂) | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 | 螺旋绞龙叶片,螺旋输送机厂家,山东螺旋输送机-淄博长江机械制造有限公司 | 代理记账_免费注册公司_营业执照代办_资质代办-【乐财汇】 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 烟台金蝶财务软件,烟台网站建设,烟台网络推广 | 全自动贴标机-套标机-工业热风机-不干胶贴标机-上海厚冉机械 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 电动葫芦|防爆钢丝绳电动葫芦|手拉葫芦-保定大力起重葫芦有限公司 | 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 |