如何限制配置单元作业中Map程序的数量?

y4ekin9u  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(292)

在我的三节点集群中,我已经优化了性能所需的所有参数。但这对我来说没什么帮助,我们所有的配置单元表都是用Parquet格式创建的,当我的团队尝试从外部表加载到内部表时,请查看下面的脚本,

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个Map器创建的,每个节点上运行2个容器,同时只有5个Map器为此作业运行。负载为85m记录和35gb左右。
如何用更少的Map程序运行这样的作业,以及如何提高运行Map程序的并发性!!!???

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
eyh26e7m

eyh26e7m1#

为配置单元查询生成的Map器数量取决于输入拆分。你有35 gb的数据,你得到718Map器。这意味着您的拆分大小约为49MB(35*1024/718)。您的集群只有三个节点,并且基于您的Yarn容器大小 设置它可能只能生成5个容器。为了提高并行性,您必须添加更多容器,即垂直或水平缩放集群节点。为了提高性能,需要更多的Map器,更少的Map器意味着更少的并行性。

相关问题