我有一个6节点群集-5 DN和1 NN。全部都有32 GB RAM。所有从站均具有8.7 TB硬盘。 DN具有1.1 TB硬盘。这是指向我的core-site.xml,hdfs-site.xml,yarn-site.xml的链接。
运行MR作业后,我检查了RAM的使用情况,如下所述:
Namenode
free -g
total used free shared buff/cache available
Mem: 31 7 15 0 8 22
Swap: 31 0 31
Datanode:
从站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
状态,等待第一个作业完成然后开始。
这是我 JAR 所执行的MR工作的ps
命令的输出:
/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
是否可以更改/添加任何设置以允许多个作业同时运行并加速当前数据处理?我正在使用hadoop 2.5.2。该集群处于PROD环境中,我无法删除它以更新hadoop版本。
编辑1:我以362 GB的数据开始了一个新的MR作业,但RAM的使用量约为8 GB,而22 GB的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
是否可以使用其他一些内存参数来提交作业以提高内存使用率?
答案 0 :(得分:0)
我相信您可以编辑 mapred-default.xml
您要寻找的参数是
0(目前可能也设置为0)表示不受限制。
查看您的内存32G /机器似乎太小了。
您拥有哪些CPU /内核?我希望四核CPU / 16核最低。每台机器。
答案 1 :(得分:0)
根据您的 $find = array(
'~\[url=(.+)](.+)\[/url\]~s',
'~\[img\](https?://[^"\'><]*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s',
);
$replace = array(
'<a rel="nofollow" target="_blank" href="$1">$2</a>',
'<img src="$1" alt="Image"/>',
);
,您的yarn-site.xml
设置为10240太高。这实际上意味着您最多只能使用18个vcore。对于您拥有大量内存的群集而言,这可能是正确的设置,但对于32GB而言,它太大了。将其降到1或2GB。
请记住,每个映射器通常消耗HDFS块大小。因此1-2GB的内存用于128MB的数据听起来更加合理。额外的好处是您最多可以使用180个vcore,这将比18个vcore处理作业快10倍。
答案 2 :(得分:0)