舒適提示:要看高清無碼套圖,請使用手機打開並單擊圖片放大查看。html
1.問題描述mysql
人啊,上了年紀了,總容易忘記一些事情,好比你一不當心就忘記了CDH集羣Hive,Hue和Sentry服務的元數據庫密碼,對於數據庫(MySQL/Oracle/PostgreSQL)管理員來講,可能有本身獨特的一些奇技淫巧來找回密碼。但對於咱普通人,其實Cloudera Manger提供了一種很優雅的方式讓你找回元數據庫密碼,那就是神奇的Cloudera Manager API。sql
2.解決方法數據庫
2.1經過HTTP方式json
1.獲取Cloudera Manager全部集羣信息api
在瀏覽器輸入以下地址,將<cmserver>替換爲CM的IP地址瀏覽器
http://<cmserver>:7180/api/v10/clusters/
輸入CM的帳號密碼curl
獲取集羣信息:oop
{ "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.經過上一步獲取的集羣信息,獲取指定集羣的Servicesurl
在瀏覽器輸入以下地址,將<cmserver>替換成CM的IP地址,<cluster_name>替換爲上一步中獲取到的集羣名稱
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.經過服務名稱獲取,該服務的配置信息
在瀏覽器輸入以下地址,將<cmserver>替換成CM的IP地址,<cluster_name>替換爲集羣名稱,將<service_name>替換爲指定服務的名稱
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_admin_user>替換爲CM的用戶名,<cm_admin_pass>替換爲CM對應用戶密碼,<cmserver>替換爲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
將以下命令中相應參數替換,<cloudera_name>替換爲上一步獲取到的集羣名稱
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名稱,獲取該服務的配置
將一下命令中參數替換爲本身環境信息,<service_name>替換爲上一步獲取到的服務名稱。
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乾貨,歡迎轉發和分享。