根据 Cloudera,Ambari 是一个完全开源的管理平台,用于调配、管理、监视和保护 Apache Hadoop 群集。阿帕奇 · 安巴里从操作哈多普中猜出猜测。但是,每个用户在 Ambari 上工作时遇到的一个问题就是它不提供作业级别警报。因此,在 Prod Hadoop 群集中工作时,某些作业的运行时间可能超过预期时间或请求的资源超过阈值。如果有许多作业,则很难找到导致资源短缺的特定作业。用户可能需要完成每个作业才能确定根本原因。

使用自定义 Python 代码和调用 Yarn 提供的其余 API 可以解决此问题。下面是使用纱线休息 API 获取作业详细信息的简单代码示例。您可以进一步自定义代码以获取分配的资源和其他详细信息。

先决条件

  • 发送网格帐户/Gmail 帐户

注意:如果您使用的是 Gmail SMTP 服务器,则需要创建应用密码,该密码将在两步验证后启用,如下所示。相同的密码可以在服务器中使用。

log in with 2 step verification

  • Json (从纱线休息 API 分析 Json 响应), 用于打开和读取 Url 的 urlib 包
  • 电子邮件和 SMTP 库以发送电子邮件。

下面是可用于获取 Hadoop 作业的警报的 python 代码。您可以进一步自定义代码以获得其他详细信息(只需分析 JSON 响应)。您可以引用此链接

https://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html#Cluster_Applications_APISubmit_Application

Python

 

x
1
34
 
1
请求

2
电子邮件哑剧部分导入MIMEMultipart
3
电子邮件哑剧文本导入Mimetext
4
导入smtplib
5

6

7
#Email功能
8
defsend_email测试):
9
登录密码"发送网格密码"

11
从addr[源电子邮件]
12
toaddr="目标电子邮件 ID"
13
msg=Mimemultipart()
14
msg="从"=从addr
15
msg="To"=toaddr
16
msg="主题"="警报"
17
msg.附加(MIMEText正文'平原'))

19
服务器=smtplib.SMTP'smtp.sendgrid.net'587
20
服务器启动 ()
21
服务器登录登录用户登录密码
22
文本=msg.as_string()
23
服务器发送邮件从addrtoaddr文本
24
服务器退出()
25

26
#Mentionyour阈值时间以毫秒为单位)

28
Prescribed_limit=6000
29
urllib.请求urlopen链接作为响应
30
结果=json负载响应读取()。解码 ('utf8'))
31
*Below下面解析thejson
32
对于结果中的作业="应用程序"="应用程序"=:
33
send_email(str\nApp 名称: *"格式作业="名称" = =="带应用程序 ID: +"。格式作业= "id"= =="运行 + 小时"格式圆形作业="已运行时间"= /1000/60/60))))

Comments are closed.