標籤:

hive在E-MapReduce集群的實踐(二)集群hive參數優化

本文介紹一些常見的集群跑hive作業參數優化,可以根據業務需要來使用。

提高hdfs性能

修改hdfs-site,注意重啟hdfs服務

dfs.client.read.shortcircuit=true //直讀

dfs.client.read.shortcircuit.streams.cache.size=4096 //直讀緩存

dfs.datanode.balance.bandwidthPerSec=30048576 //提高balance帶寬,一般擴容後調整

dfs.datanode.max.transfer.threads=16384 //提高線程數

dfs.namenode.checkpoint.period=21600 //延長checkpoint時間

dfs.namenode.handler.count=100 //並發數,大集群要提高

dfs.namenode.fslock.fair=false //降低寫性能,但提高讀鎖性能

dfs.namenode.lifeline.handler.count=1 //ha集群優化,大集群使用

hive參數優化

服務進程優化

hive-site

線程數

hive.metastore.server.max.threads=100000

hive.compactor.worker.threads=5

超時,重試

hive.metastore.client.socket.timeout=1800s

hive.metastore.failure.retries=5

動態分區調大

hive.exec.max.dynamic.partitions=5000

hive.exec.max.dynamic.partitions.pernode=2000

盡量用tez代替mapreduce

set hive.execution.engine=tez;

SET hive.tez.auto.reducer.parallelism=true;

SET hive.tez.max.partition.factor=20;

如果用普通text格式,考慮換orcfile格式

STORED AS ORC tblproperties (「orc.compress" = 「SNAPPY」)

hive.exec.orc.default.compress=SNAPPY

並發度優化

提高sql並發度

hive.exec.parallel=true

提高reduce數

SET hive.exec.reducers.bytes.per.reducer=128000000;

開啟矢量,一次處理1024條數據

set hive.vectorized.execution.enabled = true;

set hive.vectorized.execution.reduce.enabled = true;

limit下推

hive.limit.optimize.enable=true

基於代價優化

set hive.cbo.enable=true;

set hive.compute.query.using.stats=true;

set hive.stats.fetch.column.stats=true;

set hive.stats.fetch.partition.stats=true;

查詢前先統計常用表的靜態信息,常join的列

analyze table tweets compute statistics;

analyze table tweets compute statistics for columns sender, topic;

考慮使用桶表

插入數據前

set hive.enforce.bucketing = true;

join前

set hive.optimize.bucketmapjoin = true;

set hive.optimize.bucketmapjoin.sortedmerge = true;

set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat;


推薦閱讀:

扒完羞羞網站1024,我漲了這6個知識點
企名片-5.25日國內外融資事件清單(53筆)
Kaggle自行車預測練習-基礎篇
詳解:大數據分析的學習之路
Apache Kylin在鏈家的實踐

TAG:大數據分析 |