如何从 hdinsight 集群上的代码 运行 获取集群详细信息,例如 clusterID
How to get cluster details like clusterID from code running on hdinsight cluster
我需要使用 Azure API 的 ClusterInner 对象或一些集群信息,如集群 ID 等
但是要获取 ClusterInner 对象或集群 ID,我需要向 API 提供身份验证对象,但是 此代码将 运行 在同一个 HDInsight 集群上 所以理想情况下它不会要求凭据或使用一些 env 等(我的 spark 作业已经 运行 在此集群上并且 spark 作业需要此信息)。
是否有任何 API 或替代方案可以从同一个 运行 HDInsight 集群获取此信息。
根据评论编辑我的答案
这种特殊的方法不是一种干净的方法,但您可以获得详细信息。
注意:这仅适用于 HDInsight 群集。
部署细节只能从头节点中提取。您必须在 /etc/ambari-server/conf/ambari.properties
中查找该字段
server.jdbc.database_name
。例如,如果它是 v40e8b2c1e26279460ca3e8c0cbc75af8f8AmbariDb
,那么您可以 trim 前 3 个字符和 String.The 遗漏字符串的最后 8 个字符将是您的 clusterid。
您可以在作业中使用 Linux 脚本从文件中提取详细信息。
下面是shell命令
#!/bin/bash
string=$(sed -n 's/server.jdbc.database_name=//p' /etc/ambari-server/conf/ambari.properties)
POS=3
LEN=32
clusterid=${string:$POS:$LEN}
你可以在Python/Java中嵌入脚本。我正在使用Python来实现这个
import os
import subprocess
subprocess.call(['sh', '/path/to/script.sh'])
我需要使用 Azure API 的 ClusterInner 对象或一些集群信息,如集群 ID 等
但是要获取 ClusterInner 对象或集群 ID,我需要向 API 提供身份验证对象,但是 此代码将 运行 在同一个 HDInsight 集群上 所以理想情况下它不会要求凭据或使用一些 env 等(我的 spark 作业已经 运行 在此集群上并且 spark 作业需要此信息)。
是否有任何 API 或替代方案可以从同一个 运行 HDInsight 集群获取此信息。
根据评论编辑我的答案
这种特殊的方法不是一种干净的方法,但您可以获得详细信息。
注意:这仅适用于 HDInsight 群集。
部署细节只能从头节点中提取。您必须在 /etc/ambari-server/conf/ambari.properties
中查找该字段
server.jdbc.database_name
。例如,如果它是 v40e8b2c1e26279460ca3e8c0cbc75af8f8AmbariDb
,那么您可以 trim 前 3 个字符和 String.The 遗漏字符串的最后 8 个字符将是您的 clusterid。
您可以在作业中使用 Linux 脚本从文件中提取详细信息。
下面是shell命令
#!/bin/bash
string=$(sed -n 's/server.jdbc.database_name=//p' /etc/ambari-server/conf/ambari.properties)
POS=3
LEN=32
clusterid=${string:$POS:$LEN}
你可以在Python/Java中嵌入脚本。我正在使用Python来实现这个
import os
import subprocess
subprocess.call(['sh', '/path/to/script.sh'])