在我的三节点集群中,我已经优化了性能所需的所有参数。但这对我来说没什么帮助,我们所有的配置单元表都是用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
1条答案
按热度按时间eyh26e7m1#
为配置单元查询生成的Map器数量取决于输入拆分。你有35 gb的数据,你得到718Map器。这意味着您的拆分大小约为49MB(35*1024/718)。您的集群只有三个节点,并且基于您的Yarn容器大小 设置它可能只能生成5个容器。为了提高并行性,您必须添加更多容器,即垂直或水平缩放集群节点。为了提高性能,需要更多的Map器,更少的Map器意味着更少的并行性。