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

时间:2018-11-21 06:09:14

标签: hadoop cluster-computing yarn hadoop2

我有一个6节点群集-5 DN和1 NN。全部都有32 GB RAM。所有从站均具有8.7 TB硬盘。 DN具有1.1 TB硬盘。这是指向我的core-site.xmlhdfs-site.xmlyarn-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

是否可以使用其他一些内存参数来提交作业以提高内存使用率?

3 个答案:

答案 0 :(得分:0)

我相信您可以编辑 mapred-default.xml

您要寻找的参数是

  • mapreduce.job.running.map.limit
  • mapreduce.job.running.reduce.limit

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)

让您了解如何为每个节点集群设置4节点32核128GB RAM:

对于Tez:划分RAM / CORES =最大TEZ容器大小 因此,就我而言: 128/32 = 4GB

TEZ: enter image description here


纱:

enter image description here