0036-如何通过CM API优雅的获取元数据库密码
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.问题描述
人啊,上了年纪了,总容易忘记一些事情,比如你一不小心就忘记了CDH集群Hive,Hue和Sentry服务的元数据库密码,对于数据库(MySQL/Oracle/PostgreSQL)管理员来说,可能有自己独特的一些奇技淫巧来找回密码。但对于咱普通人,其实Cloudera Manger提供了一种很优雅的方式让你找回元数据库密码,那就是神奇的Cloudera Manager API。
2.解决方法
2.1通过HTTP方式
1.获取Cloudera Manager所有集群信息
在浏览器输入如下地址,将
http://: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
在浏览器输入如下地址,将
http://:7180/api/v10/clusters//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.通过服务名称获取,该服务的配置信息
在浏览器输入如下地址,将
http://:7180/api/v10/clusters//services//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.获取集群信息
将
curl -v -k -X GET -u : http://: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 : http://:7180/api/v10/clusters//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 : http://:7180/api/v10/clusters//services//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://×××w.cloudera.com/documentation/enterprise/latest/topics/cm\_intro\_api.html
醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操