Pythonベースのブートストラップ・ヘルパー関数
Pythonスクリプト・ベースのブートストラップ・ヘルパー関数は、ビッグ・データ・サービスのAmbari構成を更新するために存在します。
- クラスタ内のHadoopコンポーネントの構成の更新
- 特定のホストまたはホストグループに適用可能な構成を更新します
- 構成値を取得し、値に基づいてアクションを実行します
- 構成タイプ(HDFS
core-site.xml
など)から構成をエクスポートします。 - HAクラスタのマスター・ノードに、Zookeeper、Namenode、Resource Managerなどのコンポーネントを追加します。
- DataNodeやNodeManagerなどのコンポーネントを削除します。
- これらのヘルパー関数は、Pythonスクリプトの事前定義済メソッドからのみ実行できます。
- Python 2.7は、Pythonスクリプトでサポートされているpythonバージョンです。
- マイクロサービスの停止につながる可能性があるため、Pythonスクリプトは自分で管理する必要があります。
ブートストラップ・スクリプトを実行するには、「ブートストラップ・スクリプトの実行」を参照してください。
Pythonブートストラップ・スクリプト・ヘルパー関数の詳細は、次を参照してください:
ブートストラップPythonスクリプトのヘルパー関数
Pythonブートストラップ・スクリプトの詳細は、Pythonベースのブートストラップ・ヘルパー関数を参照してください。
Pythonベースのブートストラップ・ヘルパー関数の例は、Pythonスクリプトの例を参照してください。
ブートストラップ・スクリプトを実行するには、「ブートストラップ・スクリプトの実行」を参照してください。
カテゴリ | Helper関数 | 機能 |
---|---|---|
構成グループ | createConfigGroup (service_name, hosts, config_group="Default") |
このヘルパー関数は、ホストのリストを含むサービスの構成グループを作成します。入力として、service_name、hostsおよびconfig_group名のリストを指定する必要があります。 |
removeConfigGroup (service_name, config_group="Default") |
このヘルパー関数は、サービスの構成グループを削除します。入力としてservice_nameおよびconfig_group名を指定する必要があります。 | |
addHostsInConfigGroup (service_name, hosts, config_group="Default" |
このヘルパー関数は、ホストのリストを含むサービスの構成グループにホストを追加します。入力として、service_name、hostsのリストおよびconfig_group名を指定する必要があります。 | |
removeHostsInConfigGroup (service_name, hosts, config_group="Default" |
このヘルパー関数は、ホストのリストを含むサービスの構成グループに対するホストを削除します。入力として、service_name、hostsのリストおよびconfig_group名を指定する必要があります。 | |
listConfigGroups (service_name) |
このヘルパー関数は、サービス内のすべての構成グループを表示します。service_nameを指定する必要があります。 | |
getHostsInConfigGroup (service_name, config_group="Default" |
このヘルパー関数は、サービスのconfig_group内のすべてのホストを表示します。config_groupおよびservice_nameを指定する必要があります。 | |
importConfigGroup (service_name, from_config_group, to_config_group) |
このヘルパー関数は、ある構成グループから構成をサービス内の別の構成グループにクローニングします。from_config_group、to_config_groupおよびservice_nameを指定する必要があります。 | |
Config | updateConfig (service_name, config_type, config_properties, config_group="Default", config_meta={}) |
このヘルパー関数は、サービス内のconfig_groupのconfig_typeファイルに構成プロパティを更新します。サービス名、config_type、config_properties、config_groupおよびconfig_metaを指定する必要があります。 ノート: config_propertiesは、構成キーと値のペアのマップです。 config_metaは、構成キーおよび構成メタデータのマップです。構成メタで使用可能なタイプ値は、 たとえば: |
removeConfig (service_name, config_type, config_name, config_group="Default") |
このヘルパー関数は、サービス内のconfig_groupのconfig_typeファイルから構成を削除します。config_group、config_type、config_nameおよびservice_nameを指定する必要があります。 たとえば: |
|
getConfig (service_name, config_type, config_name, config_group="Default") |
このヘルパー関数は、サービス内のconfig_groupのconfig_typeファイル内のconfig_nameの構成プロパティ値を表示します。config_group、config_type、config_nameおよびservice_nameを指定する必要があります。 | |
restartStaleConfig () |
このヘルパー関数は、構成が失効しているサービスを再起動します。 | |
exportConfig (service_name, config_type, config_group="Default") |
このヘルパー関数は、サービス内のconfig_groupのconfig_typeファイル内のすべての構成を表示します。config_group、config_typeおよびservice_nameを指定する必要があります。 | |
シェル実行 | runShellCommandOnAllNodes (command) |
このヘルパー関数は、すべてのクラスタ・ノードでシェル・コマンドを実行します。commandを指定する必要があります。 |
runShellCommandOnNode (command, host) |
このヘルパー関数は、要求されたホスト上でシェルコマンドを実行します。commandおよびhostを指定する必要があります。 | |
ユーティリティ | getClusterName () |
クラスタ名を表示します。 |
getMasterNodesIps () |
マスターノードlpsを表示します。 | |
getWorkerNodesIps () |
ワーカー・ノードlpsを表示します。 | |
getUtilityNodesIps () |
ユーティリティーノードlpsを表示します。 | |
getQueryServerNodesIps () |
クエリーサーバーノードlpsを表示します。 | |
getComputeOnlyWorkerNodesIps () |
コンピュート専用ワーカー・ノードlpsを表示します。 | |
getEdgeNodesIps () |
エッジ ノードlpsを表示します。 | |
getAllNodesIps () |
すべてのノードlpsを表示します。 | |
getEventType () |
イベント・タイプが表示されます。使用可能なイベント・タイプ値は、CreateBdsInstance 、AddWorkerNodes 、StartBdsInstance 、ChangeShape 、on-demand です。 |
|
getLogger () |
このヘルパー関数は、情報ログおよびエラー・ログを記録するために使用できるロガー・インスタンスを返します。たとえば、 |
|
get_last_added_host_names() |
最後の「ノードの追加」操作で追加されたホスト名のPythonリストを返します。 新しいホストがクラスタに追加されていない場合は、「なし」を返します。 |
|
get_last_added_host_ips() |
最後の「ノードの追加」操作で追加されたプライベートIPのPythonリストを返します。 新しいホストがクラスタに追加されていない場合は、「なし」を返します。 |
|
executeAmbariFunc(method, path, payload=None, params=None, headers=None) |
このヘルパー関数は、Ambari REST APIベースのメソッド・タイプ、パスおよびペイロードを実行します。method、path、payload(存在する場合)、params(存在する場合)およびheadersを指定する必要があります。 パラメータ:
|
|
リモートJMX | updateRemoteJmx (service_names=None, component_names_mapping=None, enable=True) |
このヘルパー・ファンクションは、remoteJMXメトリックを有効または無効にします。
|
getRemoteJmxInfo () |
このヘルパー・ファンクションの戻り値:
|
|
コンポーネントの追加 | add_component_to_host(request_dict) |
この関数は、Pythonディクショナリを取得し、ディクショナリに記載されているホストにコンポーネントを追加します。サポートされているコンポーネントは、 例:
注意: NNおよびRMのサポートは、HAクラスタおよびデフォルト構成グループを持つホストに対してのみ行われます。 |
コンポーネントを削除 | remove_component_from_host(request_dict) |
この関数はPythonディクショナリを取得し、タイムアウトでディクショナリに示されたホストからコンポーネントを削除します。サポートされているコンポーネントは、 例:
|
サポートされているサービス名のリスト= [HDFS、 YARN、 MAPREDUCE2、 TEZ、 HIVE、 OOZIE、 ZOOKEEPER、 AMBARI_METRICS、 RANGER、 HUE、 KAFKA、 KERBEROS、 ODHUTILS、 SPARK3、 HBASE、 TRINO、 REGISTRY、 FLINK、 JUPYTERHUB]
サポートされているイベント・タイプのリスト= ["CreateBdsInstance"、 "AddWorkerNodes"、 "StartBdsInstance"、 "ChangeShape"] type = ["PASSWORD"、 "TEXT"]
Pythonスクリプトの例
Pythonヘルパー関数の詳細は、Bootstrap Pythonスクリプト・ヘルパー関数を参照してください。
#!/usr/bin/env python2.7
def execute(helper):
# custom logger
logger = helper.getLogger()
logger.info('Testing Config Helper functions')
# Update config_properties in the Default config group of config_type file core-site in service HDFS
helper.updateConfig(service_name="HDFS", config_type="core-site", config_properties={"fs.trash.interval": "400"})
# Remove config property from Default config group of config_type core-site
helper.removeConfig(service_name="HDFS", config_type="core-site", config_name="fs.trash.interval")
# Get config value from Default config group of config_type file core-site in service HDFS
config_value = helper.getConfig(service_name="HDFS", config_type="core-site", config_name="fs.trash.interval")
# Export configs from Default config group of config_type file core-site in service HDFS
helper.exportConfig(service_name="HDFS", config_type="core-site")
# Restart stale config
helper.restartStaleConfig()
#!/usr/bin/env python2.7
def execute(helper):
logger = helper.getLogger()
logger.info("Custom logger logs are available in '/var/logs/oracle/bds/bootstrap/' directory of mn0 node")
logger.info("Execute get utility nodes ips")
utility_node_ips = helper.getUtilityNodesIps()
logger.info("Execute shell command on utility node")
helper.runShellCommandOnNode(command='pwd', host=utility_node_ips[0])
logger.info("Execute shell command for on-demand event type")
event_type = helper.getEventType()
if event_type == "on-demand":
helper.runShellCommandOnNode(command='ls', host=utility_node_ips[0])
logger.info("Create config group test in service HDFS")
helper.createConfigGroup(config_group="test", service_name="HDFS", hosts=[])
logger.info("Add Worker nodes as hosts to above created config group test in service HDFS")
worker_node_ips = helper.getWorkerNodesIps()
helper.addHostsInConfigGroup(service_name="HDFS", hosts=worker_node_ips, config_group="test")
logger.info("Update config_properties in the config group test of config_type file core-site in service HDFS")
helper.updateConfig(config_group="test", service_name="HDFS", config_type="core-site",
config_properties={"fs.trash.interval": "400"})
logger.info("Restart stale configs")
helper.restartStaleConfig()
#!/usr/bin/env python2.7
def execute(helper):
logger = helper.getLogger()
logger.info("Executing getWorkerNodesIps")
worker_node_ips = helper.getWorkerNodesIps()
logger.info("Executing createConfigGroup")
helper.createConfigGroup(service_name="HDFS", config_group="testConfigGroup",
hosts=worker_node_ips)
logger.info("Executing updateConfigGroup")
helper.updateConfig(config_group="test", service_name="HDFS", config_type="core-site",
config_properties={"fs.trash.interval": "1000"})
logger.info("Executing updateConfig")
helper.updateConfig(service_name="HDFS", config_type="core-site", config_properties=
{"fs.trash.interval": "1000", "test.password": "TestPassword"}, config_meta={"test.password":
{"type":"PASSWORD"}})
logger.info("Executing restartStaleConfig")
helper.restartStaleConfig()
#!/usr/bin/env python2.7
def execute(helper):
# custom logger
logger = helper.getLogger()
logger.info('Testing Config Helper functions')
# Update config_properties in the Default config group of config_type file core-site in service HDFS
hosts = helper.get_last_added_host_names()
request_dict = {
"NAMENODE": {
"hosts": hosts
},
"RESOURCEMANAGER": {
"hosts": hosts
}
}
helper.add_component_to_host(request_dict)
#!/usr/bin/env python2.7
def execute(helper):
# custom logger
logger = helper.getLogger()
logger.info('Testing Config Helper functions')
# Update config_properties in the Default config group of config_type file core-site in service HDFS
request_dict = {
"NAMENODE": {
"hosts": ["hostname1", "hostname2"]
},
"RESOURCEMANAGER": {
"hosts": ["hostname2", "hostname3"]
}
}
helper.add_component_to_host(request_dict)
#!/usr/bin/env python2.7
def execute(helper):
# custom logger
logger = helper.getLogger()
logger.info('Testing Config Helper functions')
# Update config_properties in the Default config group of config_type file core-site in service HDFS
request_dict = {
"DATANODE": {
"hosts": ["hostname1", "hostname2"],
"timeout_minutes": 40#(in minutes)
},
"NODEMANAGER": {
"hosts": ["hostname2", "hostname3"],
"timeout_minutes": 40#(in minutes)
}
}
helper.remove_component_from_host(request_dict)
#!/usr/bin/env python2.7
def execute(helper):
logger = helper.getLogger()
logger.info("Executing executeAmbariFunc")
response = helper.executeAmbariFunc(method='GET', path='clusters/<cluster_name>/services/')
logger.info("response : " + str(response))