一、Hbase的優(yōu)化
1磕瓷、JVM優(yōu)化:
1)如:HBase RegionServer 的 Java 配置選項(xiàng)
-XX:+UseParNewGC (設(shè)置年輕代為并行收集)-XX:+UseConcMarkSweepGC(使用CMS內(nèi)存收集) -XX:CMSInitiatingOccupancyFraction=70(使用cms作為垃圾回收使用70%后開始CMS收集) -XX:+CMSParallelRemarkEnabled(降低標(biāo)記停頓) -XX:+UseCompressedOops (壓縮指針盒齿,解決內(nèi)存占用)
2)另外設(shè)置合理的zookeeper.session.timeout,默認(rèn)3分鐘(GC回收時(shí)間如果超過這個(gè)值生宛,zk認(rèn)為宕機(jī)regionserver下線)
2县昂、讀寫性能優(yōu)化:
1)HTable.setAutoFlushTo(false)關(guān)閉自動(dòng)刷新,避免一個(gè)put就執(zhí)行更新陷舅。開啟緩存倒彰、客戶端達(dá)到閾值批量提交給RS。
2)對于日志數(shù)據(jù)可以臨時(shí)關(guān)閉WAL增加性能莱睁。
3)建議少的列族(最優(yōu)不超過3)原因1 多個(gè)列族意味著多個(gè)memstore待讳,內(nèi)存使用大效率低。原因2 假設(shè)列族1 數(shù)據(jù)量大仰剿,列族2數(shù)據(jù)量很少创淡,region分裂時(shí)兩個(gè)都會(huì)分裂,造成列族2分裂到不同的多個(gè)region上造成查詢效率低南吮。
4)設(shè)置Bloomfilter提升讀寫性能定位在那個(gè)hfile上r琳彩;
5)設(shè)置hbase壓縮。
6)設(shè)置hbase.regionserver.handler.count處理RPC線程數(shù)部凑,默認(rèn)10露乏,不是越大越好(OOM)
7)在離線批量讀取請求時(shí)設(shè)置禁用緩存,scan.setBlockCache(false)
8)region拆分:rowkey設(shè)d計(jì)預(yù)分區(qū)涂邀,保證散列瘟仿,讀寫壓力均衡
二、Spark優(yōu)化
1比勉、預(yù)估好資源使用情況劳较,通過submmit時(shí)的配置參數(shù)申請資源。根據(jù)core根據(jù)資源設(shè)置合理的并行度
2浩聋、注意數(shù)據(jù)傾斜观蜗,在shuffle階段,如distinct,groupbykey,join,repartition等赡勘,看是在那個(gè)stage,那個(gè)task嫂便。抽樣數(shù)據(jù),確定是什么key導(dǎo)致闸与,可以通過hive預(yù)處理聚合毙替,或者過濾這些key,單獨(dú)計(jì)算践樱;或者預(yù)處理采用兩步聚合厂画,比如key前加個(gè)隨機(jī)數(shù),聚合一次拷邢,去掉隨機(jī)數(shù)再聚合袱院;
3、另外大表join小表情況采用mapjoin(broadcast+map)瞭稼,
4忽洛、算子的使用,了解執(zhí)行原理环肘,比如reducebykey對比groupbykey的效果欲虚,repartion對比Coalesce,以及map和mappartition等等悔雹,對于可復(fù)用的RDD使用cache,persist或者checkpoint等緩存复哆,以及盡量減少shuffle。
三腌零、hive優(yōu)化
1梯找、排序:orderby,sortby等幾種類型排序的選擇(詳細(xì)見發(fā)布的另外一篇文章)
2、存儲(chǔ)類型優(yōu)化:詳細(xì)見:快速理解Hive的數(shù)據(jù)存儲(chǔ)格式及mapreduce底層原理
3益涧、根據(jù)數(shù)據(jù)量設(shè)置合理的map锈锤、reduce數(shù)量
4、其他:如查詢的過濾條件必須加入分區(qū)篩選闲询, join操作對于大表關(guān)聯(lián)小表時(shí)采用map join久免,對于普通量級別的數(shù)據(jù)采用即席查詢的mpp引擎(presto,impala等等)