1.說明
Hive的常用計算引擎有MR、Tez和Spark,本篇博客主要是基于MR和Tez的引數調優,由于Hive的任務是在Yarn上提交的,所以Yarn作為一個資源調度器,可用的資源也需要進行配置,
2.Yarn引數個性化配置
組態檔名:yarn-site.xml
| 引數名 | 推薦值 | 引數說明 |
| yarn.nodemanager.resource.cpu-vcores | 當前資料節點的可用最大CPU核數*80% | Container可以使用的的CPU數 |
| yarn.scheduler.maximum-allocation-vcores | 當前資料節點的可用最大CPU核數*80% | 單個任務最大可用的CPU數 |
| yarn.scheduler.minimum-allocation-vcores | 1 | 單個任務最小可用的CPU數 |
| yarn.nodemanager.resource.memory-mb | 當前資料節點的物理記憶體總量的80% | 可分配給Container的記憶體大小 |
| yarn.scheduler.maximum-allocation-mb | 當前資料節點的物理記憶體總量的80% | 單個任務最大可用的記憶體大小 |
| yarn.scheduler.minimum-allocation-mb | 1024 | 單個任務最小可用的記憶體大小 |
3.Hive引數個性化配置(MR)
| 引數名 | 推薦值 | 引數說明 |
| hive.execution.engine | mr | 選擇執行引擎 |
| hive.exec.parallel | true | 是否并行執行任務,默認值為false, |
| hive.exec.compress.intermediate | true | 否對hive查詢中的資料進行壓縮,當map中間資料較多時,可以選擇開啟壓縮,壓縮形式推薦Snappy,默認值為false, |
| mapreduce.map.output.compress.codec | org.apache.hadoop.io.compress.SnappyCodec | 在開啟壓縮時,該引數生效,Snappy結合了低CPU開銷和好的壓縮執行效率,適合中間檔案的壓縮和解壓,默認值為org.apache.hadoop.io.compress.DefaultCodec, |
| mapreduce.map.memory.mb | 6144 | Mapper的Container的堆記憶體大小,根據實際情況設定,為1024的倍數,單位為MB,設定范圍大小在3072-20480之間, |
| mapreduce.map.cpu.vcores | 1 | 每個Mapper的可使用最大的CPU核數,默認值為1, |
| mapreduce.reduce.memory.mb | 6144 | Reducer的Container的堆記憶體大小,根據實際情況設定,為1024的倍數,單位為MB, |
| mapreduce.reduce.cpu.vcores | 1 | 每個Reducer的可使用最大的CPU核數,默認值為1, |
| hive.exec.reducers.max | 100 | 允許的最大reduce數量,需要根據reduce的資料量來判斷,默認值為1009, |
| mapred.reduce.tasks | 100 | 指定reduce的個數,默認為-1, |
4.Hive引數個性化配置(Tez)
| 引數名 | 推薦值 | 引數說明 |
| hive.execution.engine | tez | 選擇執行引擎 |
| hive.tez.input.format | org.apache.hadoop.hive.ql.io.CombineHiveInputFormat | 如果小檔案過多,導致map數很多時,可以使用org.apache.hadoop.hive.ql.io.CombineHiveInputFormat來合并小檔案,減少過多的map任務數,默認值為org.apache.hadoop.hive.ql.io.HiveInputFormat, |
| hive.tez.container.size | 10240 | Tez的Container的堆記憶體大小,根據實際情況設定,為1024的倍數,單位為MB,設定范圍大小在3072-20480之間, |
| tez.runtime.io.sort.mb | 128 | Hive輸出排序需要的記憶體大小,不超過2G,單位為MB, |
| tez.am.container.reuse.enabled | true | Tez的AM容器設定為可重用, |
| tez.runtime.shuffle.fetch.buffer.percent | 0.90 | 運行期間,用于shuffle的buffer大小比例, |
| tez.runtime.unordered.output.buffer.size-mb | 1024 | 如果不直接寫入磁盤,使用的緩沖區大小,建議設定為10% * hive.tez.container.size, |
| hive.exec.reducers.max | 100 | 允許的最大reduce數量,需要根據reduce的資料量來判斷,默認值為1009, |
| mapred.reduce.tasks | 100 | 指定reduce的個數,默認為-1, |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342338.html
標籤:其他
上一篇:ElasticSearch進階:一文全覽各種ES查詢在Java中的實作
下一篇:圖形 4.3 實時陰影簡介
