尝试运行 YARN 进程并出现错误时感到困惑。查看 ambari UI YARN 部分,看到... (注意它说 60GB 可用)。然而,当尝试运行 YARN 进程时,出现错误,表明可用资源少于 ambari 中报告的资源,请参阅...
➜ h2o-3.26.0.2-hdp3.1 hadoop jar h2odriver.jar -nodes 4 -mapperXmx 5g -output /home/ml1/hdfsOutputDir
Determining driver host interface for mapper->driver callback...
[Possible callback IP address: 192.168.122.1]
[Possible callback IP address: 172.18.4.49]
[Possible callback IP address: 127.0.0.1]
Using mapper->driver callback IP address and port: 172.18.4.49:46721
(You can override these with -driverif and -driverport/-driverportrange and/or specify external IP using -extdriverif.)
Memory Settings:
mapreduce.map.java.opts: -Xms5g -Xmx5g -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Dlog4j.defaultInitOverride=true
Extra memory percent: 10
mapreduce.map.memory.mb: 5632
Hive driver not present, not generating token.
19/08/07 12:37:19 INFO client.RMProxy: Connecting to ResourceManager at hw01.ucera.local/172.18.4.46:8050
19/08/07 12:37:19 INFO client.AHSProxy: Connecting to Application History server at hw02.ucera.local/172.18.4.47:10200
19/08/07 12:37:19 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /user/ml1/.staging/job_1565057088651_0007
19/08/07 12:37:21 INFO mapreduce.JobSubmitter: number of splits:4
19/08/07 12:37:21 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1565057088651_0007
19/08/07 12:37:21 INFO mapreduce.JobSubmitter: Executing with tokens: []
19/08/07 12:37:21 INFO conf.Configuration: found resource resource-types.xml at file:/etc/hadoop/3.1.0.0-78/0/resource-types.xml
19/08/07 12:37:21 INFO impl.YarnClientImpl: Submitted application application_1565057088651_0007
19/08/07 12:37:21 INFO mapreduce.Job: The url to track the job: http://HW01.ucera.local:8088/proxy/application_1565057088651_0007/
Job name 'H2O_80092' submitted
JobTracker job ID is 'job_1565057088651_0007'
For YARN users, logs command is 'yarn logs -applicationId application_1565057088651_0007'
Waiting for H2O cluster to come up...
19/08/07 12:37:38 INFO client.RMProxy: Connecting to ResourceManager at hw01.ucera.local/172.18.4.46:8050
19/08/07 12:37:38 INFO client.AHSProxy: Connecting to Application History server at hw02.ucera.local/172.18.4.47:10200
----- YARN cluster metrics -----
Number of YARN worker nodes: 4
----- Nodes -----
Node: http://HW03.ucera.local:8042 Rack: /default-rack, RUNNING, 1 containers used, 5.0 / 15.0 GB used, 1 / 3 vcores used
Node: http://HW04.ucera.local:8042 Rack: /default-rack, RUNNING, 0 containers used, 0.0 / 15.0 GB used, 0 / 3 vcores used
Node: http://hw05.ucera.local:8042 Rack: /default-rack, RUNNING, 0 containers used, 0.0 / 15.0 GB used, 0 / 3 vcores used
Node: http://HW02.ucera.local:8042 Rack: /default-rack, RUNNING, 0 containers used, 0.0 / 15.0 GB used, 0 / 3 vcores used
----- Queues -----
Queue name: default
Queue state: RUNNING
Current capacity: 0.08
Capacity: 1.00
Maximum capacity: 1.00
Application count: 1
----- Applications in this queue -----
Application ID: application_1565057088651_0007 (H2O_80092)
Started: ml1 (Wed Aug 07 12:37:21 HST 2019)
Application state: FINISHED
Tracking URL: http://HW01.ucera.local:8088/proxy/application_1565057088651_0007/
Queue name: default
Used/Reserved containers: 1 / 0
Needed/Used/Reserved memory: 5.0 GB / 5.0 GB / 0.0 GB
Needed/Used/Reserved vcores: 1 / 1 / 0
Queue 'default' approximate utilization: 5.0 / 60.0 GB used, 1 / 12 vcores used
----------------------------------------------------------------------
ERROR: Unable to start any H2O nodes; please contact your YARN administrator.
A common cause for this is the requested container size (5.5 GB)
exceeds the following YARN settings:
yarn.nodemanager.resource.memory-mb
yarn.scheduler.maximum-allocation-mb
----------------------------------------------------------------------
For YARN users, logs command is 'yarn logs -applicationId application_1565057088651_0007'
注意
错误:无法启动任何 H2O 节点;请联系您的 YARN 管理员。
造成这种情况的一个常见原因是请求的容器大小 (5.5 GB) 超过了以下 YARN 设置:
yarn.nodemanager.resource.memory-mb yarn.scheduler.maximum-allocation-mb
然而,我已经配置了 YARN
yarn.scheduler.maximum-allocation-vcores=3
yarn.nodemanager.resource.cpu-vcores=3
yarn.nodemanager.resource.memory-mb=15GB
yarn.scheduler.maximum-allocation-mb=15GB
我们可以看到容器和节点资源限制都高于请求的容器大小。
尝试使用默认的 mapreduce pi 示例进行更重的计算
[myuser@HW03 ~]$ yarn jar /usr/hdp/3.1.0.0-78/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 1000 1000
Number of Maps = 1000
Samples per Map = 1000
....
并检查 RM UI,我可以看到至少在某些情况下可以使用 RM 的所有 60GB 资源(请注意图像底部的 61440MB)
所以有一些关于这个问题的事情我不明白
队列“默认”近似利用率:使用 5.0 / 60.0 GB,使用 1 / 12 个 vcore
我想使用 YARN 表面上可以提供的全部 60GB(或者至少可以选择,而不是抛出错误)。会认为应该有足够的资源让 4 个节点中的每一个都为进程提供 15GB(> 请求的 4x5GB=20GB)。我在这里错过了什么吗?请注意,我只有 YARN 的默认根队列设置?
----- 节点 -----
节点:http://HW03.ucera.local:8042机架:/default-rack,正在运行,使用 1 个容器,使用 5.0 / 15.0 GB,使用 1 / 3 个 vcore
节点:http://HW04.ucera.local:8042机架:/default-rack,正在运行,使用了 0 个容器,使用了 0.0 / 15.0 GB,使用了 0 / 3 个 vcore
……
为什么在出错之前只使用一个节点?
从这两件事看来,15GB 节点限制和 60GB 集群限制似乎都没有被超过,那么为什么会抛出这些错误呢?我在这里误解了这种情况怎么办?可以做些什么来修复(再次,希望能够使用所有明显的 60GB YARN 资源来完成这项工作而不会出错)?修复的任何调试建议?
更新:
问题似乎与如何正确更改 HDP / ambari-created 用户的 uid 有关?并且让用户存在于节点上并拥有具有正确权限的目录这一事实(正如我从Hortonworks 论坛帖子hdfs://user/<username>
中被引导相信的那样)不足以被确认为集群上的“存在”。
为所有集群节点上存在的不同用户(在本例中为 Ambari 创建的 hdfs 用户)运行 hadoop jar 命令(即使 Ambari 创建的该用户在节点之间具有不同的 uid(如果这是一个问题,则为 IDK))并且具有一个hdfs://user/hdfs
目录,发现 h2o jar 按预期运行。
我最初的印象是用户只需要存在于正在使用的任何客户端机器上,并且需要 hdfs://user/ 目录(请参阅https://community.cloudera.com/t5/Support-Questions/Adding -a-new-user-to-the-cluster/mp/130319/highlight/true#M93005)。一个令人担忧/令人困惑的事情是,Ambari 显然在具有不同 uid 和 gid 值的各种集群节点上创建了 hdfs 用户,例如......
[root@HW01 ~]# clush -ab id hdfs
---------------
HW[01-04] (4)
---------------
uid=1017(hdfs) gid=1005(hadoop) groups=1005(hadoop),1003(hdfs)
---------------
HW05
---------------
uid=1021(hdfs) gid=1006(hadoop) groups=1006(hadoop),1004(hdfs)
[root@HW01 ~]#
[root@HW01 ~]#
# wondering what else is using a uid 1021 across the nodes
[root@HW01 ~]# clush -ab id 1021
---------------
HW[01-04] (4)
---------------
uid=1021(hbase) gid=1005(hadoop) groups=1005(hadoop)
---------------
HW05
---------------
uid=1021(hdfs) gid=1006(hadoop) groups=1006(hadoop),1004(hdfs)
这似乎不是它应该是的样子(只是我怀疑使用过 MapR(它要求 uid 和 gids 在节点之间是相同的)并在这里查看:https ://www.ibm.com/support /knowledgecenter/en/STXKQY_BDA_SHR/bl1adv_userandgrpid.htm)。请注意,HW05 是后来添加的节点。如果这在 HDP 中实际上没问题,我计划只添加我实际缩进的用户,以便在具有任意 uid 和 gid 值的所有节点上使用 h2o。对此有什么想法吗?任何支持为什么这是正确或错误的文档,您可以将我链接到?
在发布作为答案之前,将对此进行更多研究。我认为基本上需要进一步澄清 HDP 何时认为用户“存在”在集群中。