我想使用yarn
来跟踪节点的状态。所以,我yarn node -list
看我的节点。然后当我想列出某个状态的所有节点时,我尝试yarn node -list -states <State>
。
在webUI中,我可以点击nodes
,我可以看到有时我的节点是UNHEALTHY
。为什么我不能从命令行做同样的事情而yarn node -list -states UNHEALTHY
?
或者,是否有人可以提供给我的参考资料,告诉我哪些states
可供我使用此命令yarn node -list -states <State>
?
我找不到它here
答案 0 :(得分:1)
运行错误的命令行
yarn node -list -states any
给你这个例外:
Exception in thread "main" java.lang.IllegalArgumentException: No enum constant org.apache.hadoop.yarn.api.records.NodeState.ANY
at java.lang.Enum.valueOf(Enum.java:238)
at org.apache.hadoop.yarn.api.records.NodeState.valueOf(NodeState.java:27)
at org.apache.hadoop.yarn.client.cli.NodeCLI.run(NodeCLI.java:113)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at org.apache.hadoop.yarn.client.cli.NodeCLI.main(NodeCLI.java:62)
因此使用以下枚举:org.apache.hadoop.yarn.api.records.NodeState 根据您的版本,您可以检查枚举的值。这是hadoop 2.7.1 NodeState
的链接通常,
yarn node -list -states UNHEALTHY
如果你从纱线的角度来看有不健康的节点,应该可以正常工作
答案 1 :(得分:1)
您好,如果您可以直接从纱线项目中找到所有州。例如hadoop 2.7.3版本列出的节点状态:
package org.apache.hadoop.yarn.api.records;
import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Unstable;
/**
* <p>State of a <code>Node</code>.</p>
*/
@Public
@Unstable
public enum NodeState {
/** New node */
NEW,
/** Running node */
RUNNING,
/** Node is unhealthy */
UNHEALTHY,
/** Node is out of service */
DECOMMISSIONED,
/** Node has not sent a heartbeat for some configured time threshold*/
LOST,
/** Node has rebooted */
REBOOTED;
public boolean isUnusable() {
return (this == UNHEALTHY || this == DECOMMISSIONED || this == LOST);
}
}