前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何通过CM API优雅的获取元数据库密码

如何通过CM API优雅的获取元数据库密码

作者头像
Fayson
修改2018-04-01 19:12:05
3.2K0
修改2018-04-01 19:12:05
举报
文章被收录于专栏:Hadoop实操

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

1.问题描述


人啊,上了年纪了,总容易忘记一些事情,比如你一不小心就忘记了CDH集群Hive,Hue和Sentry服务的元数据库密码,对于数据库(MySQL/Oracle/PostgreSQL)管理员来说,可能有自己独特的一些奇技淫巧来找回密码。但对于咱普通人,其实Cloudera Manger提供了一种很优雅的方式让你找回元数据库密码,那就是神奇的Cloudera Manager API。

2.解决方法

2.1通过HTTP方式


1.获取Cloudera Manager所有集群信息

在浏览器输入如下地址,将<cmserver>替换为CM的IP地址

代码语言:txt
复制
http://<cmserver>:7180/api/v10/clusters/

输入CM的账号密码

获取集群信息:

代码语言:txt
复制
{
  "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

在浏览器输入如下地址,将<cmserver>替换成CM的IP地址,<cluster_name>替换为上一步中获取到的集群名称

代码语言:txt
复制
http://<cmserver>:7180/api/v10/clusters/<cluster_name>/services/
代码语言:txt
复制
{
  "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>替换为指定服务的名称

代码语言:txt
复制
http://<cmserver>:7180/api/v10/clusters/<cluster_name>/services/<service_name>/config
代码语言:txt
复制
{
  "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地址

代码语言:txt
复制
curl -v -k -X GET -u <cm_admin_user>:<cm_admin_pass> http://<cmserver>:7180/api/v10/clusters/

命令行执行

代码语言:txt
复制
[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>替换为上一步获取到的集群名称

代码语言:txt
复制
curl -v -k -X GET -u <cm_admin_user>:<cm_admin_pass> http://<cmserver>:7180/api/v10/clusters/<cluster_name>/services/

命令行执行:

代码语言:txt
复制
[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>替换为上一步获取到的服务名称。

代码语言:txt
复制
curl -v -k -X GET -u <cm_admin_user>: <cm_admin_pass>http://<cmserver>:7180/api/v10/clusters/<cluster_name>/services/<service_name>/config

命令行执行:

代码语言:txt
复制
[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实操

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档