hadoop多节点群集太慢如何提高数据处理速度?

nue99wik  于 2021-06-01  发布在  Hadoop
关注(0)|答案(3)|浏览(468)

我有一个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

我们是否可以使用一些额外的内存参数来提交作业,以便有效地使用内存?

w9apscun

w9apscun1#

要让您了解如何为每个节点群集设置4节点32核128gb ram,请执行以下操作:
对于tez:divide ram/cores=max tez container size,所以在我的例子中:128/32=4gb
特兹:

Yarn:

kzmpq1sx

kzmpq1sx2#

我相信您可以编辑mapred-default.xml
你要找的情人是
mapreduce.job.running.map.limit文件
mapreduce.job.running.reduce.limit文件
0(可能是目前设置的)表示无限。
看看你的内存32g/台似乎太小了。
你有什么cpu/核心?我希望四cpu/16核最低。每台机器。

r55awzrz

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倍。

相关问题