我有一个6节点的集群-5个dn和1个nn。它们都有32 gb的ram。所有从机都有8.7 tb硬盘驱动器。dn有1.1 tb硬盘驱动器。这是指向my core-site.xml、hdfs-site.xml、yarn-site.xml的链接。
运行mr作业后,我检查了ram的使用情况,如下所述:
名称节点
free -g
total used free shared buff/cache available
Mem: 31 7 15 0 8 22
Swap: 31 0 31
数据节点:
奴隶1:
free -g
total used free shared buff/cache available
Mem: 31 6 6 0 18 24
Swap: 31 3 28
奴隶2:
total used free shared buff/cache available
Mem: 31 2 4 0 24 28
Swap: 31 1 30
同样,其他从机也有类似的ram用法。即使提交了一个作业,其他提交的作业也会进入 ACCEPTED
陈述并等待第一个作业完成,然后开始。
下面是 ps
我为执行mr作业而提交的jar命令:
/opt/jdk1.8.0_77//bin/java -Dproc_jar -Xmx1000m
-Dhadoop.log.dir=/home/hduser/hadoop/logs -Dyarn.log.dir=/home/hduser/hadoop/logs
-Dhadoop.log.file=yarn.log -Dyarn.log.file=yarn.log
-Dyarn.home.dir= -Dyarn.id.str= -Dhadoop.root.logger=INFO,console
-Dyarn.root.logger=INFO,console -Dyarn.policy.file=hadoop-policy.xml
-Dhadoop.log.dir=/home/hduser/hadoop/logs -Dyarn.log.dir=/home/hduser/hadoop/logs
-Dhadoop.log.file=yarn.log -Dyarn.log.file=yarn.log
-Dyarn.home.dir=/home/hduser/hadoop -Dhadoop.home.dir=/home/hduser/hadoop
-Dhadoop.root.logger=INFO,console -Dyarn.root.logger=INFO,console
-classpath --classpath of jars
org.apache.hadoop.util.RunJar abc.jar abc.mydriver2 /raw_data /mr_output/02
是否有任何设置可以更改/添加以允许多个作业同时运行并加快当前数据处理速度?我正在使用hadoop2.5.2。集群在prod环境中,我无法将其关闭以更新hadoop版本。
编辑1:我开始了一个新的mr作业,有362gb的数据,但ram的使用量仍然在8gb左右,22gb的ram是免费的。这是我的作业提交命令-
nohup yarn jar abc.jar def.mydriver1 /raw_data /mr_output/01 &
以下是更多信息:
18/11/22 14:09:07 INFO input.FileInputFormat: Total input paths to process : 130363
18/11/22 14:09:10 INFO mapreduce.JobSubmitter: number of splits:130372
我们是否可以使用一些额外的内存参数来提交作业,以便有效地使用内存?
3条答案
按热度按时间w9apscun1#
要让您了解如何为每个节点群集设置4节点32核128gb ram,请执行以下操作:
对于tez:divide ram/cores=max tez container size,所以在我的例子中:128/32=4gb
特兹:
Yarn:
kzmpq1sx2#
我相信您可以编辑mapred-default.xml
你要找的情人是
mapreduce.job.running.map.limit文件
mapreduce.job.running.reduce.limit文件
0(可能是目前设置的)表示无限。
看看你的内存32g/台似乎太小了。
你有什么cpu/核心?我希望四cpu/16核最低。每台机器。
r55awzrz3#
基于你的
yarn-site.xml
你的yarn.scheduler.minimum-allocation-mb
设置10240太高。这实际上意味着您最多只有18个vCore可用。对于拥有大量内存的集群来说,这可能是正确的设置,但是对于32gb来说,它太大了。降到1或2gb。请记住,hdfs块大小是每个Map器通常使用的大小。所以1-2gb的内存存储128mb的数据听起来更合理。额外的好处是您可以有多达180个vcore可用,这将处理作业的速度比18个vcore快10倍。