NameNode堆使用和ResourceManager堆使用的区别(试图找到NameNode堆使用原因)?

Posted

技术标签:

【中文标题】NameNode堆使用和ResourceManager堆使用的区别(试图找到NameNode堆使用原因)?【英文标题】:Difference between NameNode heap usage and ResourceManager heap usage (trying to find NameNode heap usage cause)? 【发布时间】:2020-02-01 00:23:57 【问题描述】:

NameNode 堆使用和 ResourceManager 堆使用有什么区别?我正在尝试查找重 NameNode 堆使用的原因。

在 ambari 仪表板中,我看到...

在运行一些 sqoop 作业时。不确定是什么导致这里的 NN 使用率如此之高(对 hadoop 管理的经验不是很多)?这是一个不寻常的数量吗(最近才注意到)?

此外,在 mapreduce 任务 100% 完成后,sqoop 作业似乎被冻结了一段异常的时间,例如。看到...

[2020-01-31 14:00:55,193]  INFO mapreduce.JobSubmitter: number of splits:12
[2020-01-31 14:00:55,402]  INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1579648183118_1085
[2020-01-31 14:00:55,402]  INFO mapreduce.JobSubmitter: Executing with tokens: []
[2020-01-31 14:00:55,687]  INFO conf.Configuration: found resource resource-types.xml at file:/etc/hadoop/3.1.0.0-78/0/resource-types.xml
[2020-01-31 14:00:55,784]  INFO impl.YarnClientImpl: Submitted application application_1579648183118_1085
[2020-01-31 14:00:55,837]  mapreduce.Job: The url to track the job: http://hw001.ucera.local:8088/proxy/application_1579648183118_1085/
[2020-01-31 14:00:55,837]  mapreduce.Job: Running job: job_1579648183118_1085
[2020-01-31 14:01:02,964]  mapreduce.Job: Job job_1579648183118_1085 running in uber mode : false
[2020-01-31 14:01:02,965]  mapreduce.Job:  map 0% reduce 0%
[2020-01-31 14:01:18,178]  mapreduce.Job:  map 8% reduce 0%
[2020-01-31 14:02:21,552]  mapreduce.Job:  map 17% reduce 0%
[2020-01-31 14:04:55,239]  mapreduce.Job:  map 25% reduce 0%
[2020-01-31 14:05:36,417]  mapreduce.Job:  map 33% reduce 0%
[2020-01-31 14:05:37,424]  mapreduce.Job:  map 42% reduce 0%
[2020-01-31 14:05:40,440]  mapreduce.Job:  map 50% reduce 0%
[2020-01-31 14:05:41,444]  mapreduce.Job:  map 58% reduce 0%
[2020-01-31 14:05:44,455]  mapreduce.Job:  map 67% reduce 0%
[2020-01-31 14:05:52,484]  mapreduce.Job:  map 75% reduce 0%
[2020-01-31 14:05:56,499]  mapreduce.Job:  map 83% reduce 0%
[2020-01-31 14:05:59,528]  mapreduce.Job:  map 92% reduce 0%
[2020-01-31 14:06:00,534] INFO mapreduce.Job:  map 100% reduce 0%

<...after some time longer than usual...>

[2020-01-31 14:10:05,446] INFO mapreduce.Job: Job job_1579648183118_1085 completed successfully

我的 hadoop 版本

[airflow@airflowetl root]$ hadoop version
Hadoop 3.1.1.3.1.0.0-78
Source code repository git@github.com:hortonworks/hadoop.git -r e4f82af51faec922b4804d0232a637422ec29e64
Compiled by jenkins on 2018-12-06T12:26Z
Compiled with protoc 2.5.0
From source with checksum eab9fa2a6aa38c6362c66d8df75774
This command was run using /usr/hdp/3.1.0.0-78/hadoop/hadoop-common-3.1.1.3.1.0.0-78.jar

有更多 hadoop 经验的人知道这里会发生什么吗?有什么调试建议吗?

【问题讨论】:

【参考方案1】:

Namenode 堆主要由存储在 HDFS 中的文件块的数量决定。特别是,许多小文件或同时写入的许多文件会导致大堆。

ResourceManager 与 namenode 不相关。它的堆将取决于正在积极跟踪的 YARN 作业的数量

在我维护的一个集群中,namenode heap 是 32G,我认为 ResourceManager 只有 8GB

【讨论】:

以上是关于NameNode堆使用和ResourceManager堆使用的区别(试图找到NameNode堆使用原因)?的主要内容,如果未能解决你的问题,请参考以下文章

如何去计算hdfs中namenode中所需的堆内存大小

如何配置hdfs namenode的内存

HDFS NameNode内存详解

HDFS集群优化实践(hadoop2.7.2)

HDFS RBF 在车好多的应用

HDFS RBF 在车好多的应用