如何通过CM API优雅的获取元数据库密码
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.问题描述
人啊,上了年纪了,总容易忘记一些事情,比如你一不小心就忘记了CDH集群Hive,Hue和Sentry服务的元数据库密码,对于数据库(MySQL/Oracle/PostgreSQL)管理员来说,可能有自己独特的一些奇技淫巧来找回密码。但对于咱普通人,其实Cloudera Manger提供了一种很优雅的方式让你找回元数据库密码,那就是神奇的Cloudera Manager API。
2.解决方法
2.1通过HTTP方式
1.获取Cloudera Manager所有集群信息
在浏览器输入如下地址,将<cmserver>替换为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
在浏览器输入如下地址,将<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干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
- LCA 最近公共祖先
- RMQ问题(线段树算法,ST算法优化)
- 统计0到n之间1的个数[数学,动态规划dp](经典,详解)
- Selenium2+python自动化40-cookie相关操作
- 【干货】PyTorch实例:用ResNet进行交通标志分类
- 2017年浙江理工大学程序设计竞赛校赛 题解&源码(A.水, D. 简单贪心 ,E.数论,I 暴力)
- Selenium2+python自动化41-绕过验证码(add_cookie)
- C语言求最小公倍数和最大公约数三种算法(经典)
- Selenium2+python自动化47-判断弹出框存在(alert_is_present)
- Free Pascal初次体验(有亮点哦)
- HDU 1312 Red and Black(DFS,板子题,详解,零基础教你代码实现DFS)
- Selenium2+python自动化48-登录方法(参数化)
- 51Nod 1003 阶乘后面0的数量(数学,思维题)
- 如何查看某个用户指定时间段的ABAP开发记录
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 回文平方数 Palindromic Squares
- 双重回文数 Dual Palindromes
- 修理牛棚 Barn Repair
- 牛式 Prime Cryptarithm
- 解题报告(牛客OI周赛7-普及组)
- 号码锁 Combination Lock
- 数据结构回顾及展望(一)
- Spring Boot 整合 Quartz 实现 Java 定时任务的动态配置
- 数据结构回顾及展望(二)(3.22更新)
- Windows挂载CFS文件系统
- XMU oj Problem List
- Python入门笔记(安装及初步使用)
- python 入门笔记[语法基础(上)]
- 怎样解决 JavaScript 生态中第三方安全性问题?
- 【Hadoop 分布式部署 十:配置HDFS 的HA、启动HA中的各个守护进程】