溫馨提示:要看高清無碼套圖,請使用手機打開并單擊圖檔放大檢視。
1.問題描述
人啊,上了年紀了,總容易忘記一些事情,比如你一不小心就忘記了CDH叢集Hive,Hue和Sentry服務的中繼資料庫密碼,對于資料庫(MySQL/Oracle/PostgreSQL)管理者來說,可能有自己獨特的一些奇技淫巧來找回密碼。但對于咱普通人,其實Cloudera Manger提供了一種很優雅的方式讓你找回中繼資料庫密碼,那就是神奇的Cloudera Manager API。
2.解決方法
2.1通過HTTP方式
1.擷取Cloudera Manager所有叢集資訊
在浏覽器輸入如下位址,将替換為CM的IP位址
http://<cmserver>:7180/api/v10/clusters/
輸入CM的賬号密碼
擷取叢集資訊:
{
"items" : [ {
"name" : "cluster",
"displayName" : "Cluster 1",
"version" : "CDH5",
"fullVersion" : "5.11.2",
"maintenanceMode" : false,
"maintenanceOwners" : [ ],
"clusterUrl" : "http://ip-172-31-22-86.ap-southeast-1.compute.internal:7180/cmf/clusterRedirect/cluster"
} ]
}
2.通過上一步擷取的叢集資訊,擷取指定叢集的Services
在浏覽器輸入如下位址,将替換成CM的IP位址,替換為上一步中擷取到的叢集名稱
http://<cmserver>:7180/api/v10/clusters/<cluster_name>/services/
{
"items" : [ …{
"name" : "hue",
"type" : "HUE",
"clusterRef" : {
"clusterName" : "cluster"
},
"serviceUrl" : "http://ip-172-31-22-86.ap-southeast-1.compute.internal:7180/cmf/serviceRedirect/hue",
"serviceState" : "STARTED",
"healthSummary" : "GOOD",
"healthChecks" : [ {
"name" : "HUE_HUE_SERVERS_HEALTHY",
"summary" : "GOOD"
} ],
"configStalenessStatus" : "FRESH",
"clientConfigStalenessStatus" : "FRESH",
"maintenanceMode" : false,
"maintenanceOwners" : [ ],
"displayName" : "Hue"
} …]
}
以上為擷取到的json資料片段,标紅部分為Services名稱。
3.通過服務名稱擷取,該服務的配置資訊
在浏覽器輸入如下位址,将替換成CM的IP位址,替換為叢集名稱,将替換為指定服務的名稱
http://<cmserver>:7180/api/v10/clusters/<cluster_name>/services/<service_name>/config
{
"items" : [ {
"name" : "database_host",
"value" : "ip-172-31-22-86.ap-southeast-1.compute.internal"
}, {
"name" : "database_password",
"value" : "password"
}, {
"name" : "database_type",
"value" : "mysql"
}... ]
}
這樣就擷取到了相應服務的配置資訊,标紅部分即為該服務的資料庫密碼。
2.2指令行方式
1.擷取叢集資訊
将替換為CM的使用者名,替換為CM對應使用者密碼,替換為CM的IP位址
curl -v -k -X GET -u <cm_admin_user>:<cm_admin_pass> http://<cmserver>:7180/api/v10/clusters/
指令行執行
[ec2-user@ip-172-31-22-86 ~]$ curl -v -k -X GET -u admin:admin http://ip-172-31-22-86:7180/api/v10/clusters/
...
{
"items" : [ {
"name" : "cluster",
"displayName" : "Cluster 1",
"version" : "CDH5",
"fullVersion" : "5.11.2",
"maintenanceMode" : false,
"maintenanceOwners" : [ ],
"clusterUrl" : "http://ip-172-31-22-86.ap-southeast-1.compute.internal:7180/cmf/clusterRedirect/cluster"
} ]
* Connection #0 to host ip-172-31-22-86 left intact
}
[ec2-user@ip-172-31-22-86 ~]$
标注部分為擷取到的叢集名稱。
2.擷取指定叢集的Services
将如下指令中相應參數替換,替換為上一步擷取到的叢集名稱
curl -v -k -X GET -u <cm_admin_user>:<cm_admin_pass> http://<cmserver>:7180/api/v10/clusters/<cluster_name>/services/
指令行執行:
[ec2-user@ip-172-31-22-86 ~]$ curl -v -k -X GET -u admin:admin http://ip-172-31-22-86:7180/api/v10/clusters/cluster/services/
...
{
"items" : [ {
"name" : "hive",
"type" : "HIVE",
"clusterRef" : {
"clusterName" : "cluster"
},
"serviceUrl" : "http://ip-172-31-22-86.ap-southeast-1.compute.internal:7180/cmf/serviceRedirect/hive",
"serviceState" : "STARTED",
"healthSummary" : "GOOD",
"healthChecks" : [ {
"name" : "HIVE_HIVEMETASTORES_HEALTHY",
"summary" : "GOOD"
}, {
"name" : "HIVE_HIVESERVER2S_HEALTHY",
"summary" : "GOOD"
} ],
"configStalenessStatus" : "FRESH",
"clientConfigStalenessStatus" : "FRESH",
"maintenanceMode" : false,
"maintenanceOwners" : [ ],
"displayName" : "Hive"
} ...]
}
[ec2-user@ip-172-31-22-86 ~]$
标注部分為服務名稱。
3.根據擷取到的Service名稱,擷取該服務的配置
将一下指令中參數替換為自己環境資訊,替換為上一步擷取到的服務名稱。
curl -v -k -X GET -u <cm_admin_user>: <cm_admin_pass>http://<cmserver>:7180/api/v10/clusters/<cluster_name>/services/<service_name>/config
[ec2-user@ip-172-31-22-86 ~]$ curl -v -k -X GET -u admin:admin http://ip-172-31-22-86:7180/api/v10/clusters/cluster/services/hive/config
...
{
"items" : [ {
"name" : "hive_metastore_database_host",
"value" : "ip-172-31-22-86.ap-southeast-1.compute.internal"
}, {
"name" : "hive_metastore_database_password",
"value" : "password"
}, {
"name" : "mapreduce_yarn_service",
"value" : "yarn"
}, {
"name" : "zookeeper_service",
"value" : "zookeeper"
} ]
* Connection #0 to host ip-172-31-22-86 left intact
}
[ec2-user@ip-172-31-22-86 ~]$
上圖示注部分即為hive服務中繼資料庫的密碼。
3.總結
通過以上兩種方式可以擷取Hue、Hive、Sentry服務中繼資料庫密碼,但不支援擷取Oozie、AM、CM、RM、Navigator等服務的資料庫密碼。注意:以上操作需要使用CM的管理者使用者擷取,非管理者使用者擷取的密碼顯示為“REDACTED”。
更多關于CM的API接口可參考官網:
https://www.cloudera.com/documentation/enterprise/latest/topics/cm_intro_api.html醉酒鞭名馬,少年多浮誇! 嶺南浣溪沙,嘔吐酒肆下!摯友不肯放,資料玩的花!
推薦關注Hadoop實操,第一時間,分享更多Hadoop幹貨,歡迎轉發和分享。
原創文章,歡迎轉載,轉載請注明:轉載自微信公衆号Hadoop實操