[英]How to limit the number of mappers in Hive job?
在我的三節點集群中,我優化了性能所需的所有必需參數。 但這對我來說並沒有太大幫助,我們所有的蜂巢表都是以鑲木地板格式創建的,當我的團隊嘗試從外部表加載到內部表時,請在下面找到腳本,
ksh -c 'hadoop fs -rm -R
hdfs:///user/hive/warehouse/bistore_sit_cycle2.db/wt_consumer/d_partition_number=0;
hive -e "set hive.exec.dynamic.partition.mode=nonstrict;
insert into bistore_sit_cycle2.wt_consumer
partition(d_partition_number)
select * from bistore_sit_cycle2.ext_wt_consumer;
set hive.exec.dynamic.partition.mode=strict;"'
加載需要2個多小時,使用718個映射器創建的配置單元作業在每個節點上運行2個容器,而同時有5個映射器僅為此作業運行。 負載為85M記錄,約35GB。
如何以更少的映射器像這樣運行作業,以及如何增加運行映射器的並發性!
And this is my complete Cluster and YARN configuration details,
CPU: Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz (16 physical cores)(32 hyper threaded)
RAM:256GB
DISK:1.2TB x 16
MapR 5.0.0 - Community Edition
mapreduce.map.memory.mb=10g
mapreduce.reduce.memory.mb=16g
yarn.app.mapreduce.am.resource.mb=16g
yarn.app.mapreduce.am.command-opts=15g
yarn.app.mapreduce.am.resource.cpu-vcores=16
mapreduce.map.cpu.vcores=12
mapreduce.reduce.cpu.vcores=16
mapreduce.map.disk=1.5
mapreduce.reduce.disk=3.99
mapreduce.map.java.opts=9g
mapreduce.reduce.java.opts=15g
mapreduce.task.io.sort.mb=1024
mapreduce.task.io.sort.factor=1024
mapreduce.reduce.shuffle.parallelcopies=48
yarn.nodemanager.resource.memory-mb=180g
yarn.scheduler.maximum-allocation-mb=180g
yarn.scheduler.minimum-allocation-mb=4g
yarn.nodemanager.resource.cpu-vcores=32
yarn.nodemanager.vmem-pmem-ratio=3.2
HADOOP_CLIENT_OPTS=32g
為配置單元查詢生成的映射器數量取決於輸入拆分。 您有35 GB的數據,並且正在獲得718個映射器。 這意味着您的拆分大小約為49 MB(35 * 1024/718)。 您的群集只有三個節點,根據YARN容器大小設置,它最多只能生成5個容器。 為了增加並行度,您添加了更多容器,即可以垂直或水平擴展群集節點。 您需要更多的數量或映射器來提高性能,而更少的映射器則意味着更少的並行性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.