簡體   English   中英

如何限制Hive作業中的映射器數量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM