根据 Cloudera,Ambari 是一个完全开源的管理平台,用于调配、管理、监视和保护 Apache Hadoop 群集。阿帕奇 · 安巴里从操作哈多普中猜出猜测。但是,每个用户在 Ambari 上工作时遇到的一个问题就是它不提供作业级别警报。因此,在 Prod Hadoop 群集中工作时,某些作业的运行时间可能超过预期时间或请求的资源超过阈值。如果有许多作业,则很难找到导致资源短缺的特定作业。用户可能需要完成每个作业才能确定根本原因。
使用自定义 Python 代码和调用 Yarn 提供的其余 API 可以解决此问题。下面是使用纱线休息 API 获取作业详细信息的简单代码示例。您可以进一步自定义代码以获取分配的资源和其他详细信息。
先决条件
- 发送网格帐户/Gmail 帐户
注意:如果您使用的是 Gmail SMTP 服务器,则需要创建应用密码,该密码将在两步验证后启用,如下所示。相同的密码可以在服务器中使用。
- Json (从纱线休息 API 分析 Json 响应), 用于打开和读取 Url 的 urlib 包
- 电子邮件和 SMTP 库以发送电子邮件。
下面是可用于获取 Hadoop 作业的警报的 python 代码。您可以进一步自定义代码以获得其他详细信息(只需分析 JSON 响应)。您可以引用此链接
Python
x
1
34
1
请求2从电子邮件。哑剧。多部分导入MIMEMultipart
3从电子邮件。哑剧。文本导入Mimetext
4导入smtplib
567#Email功能
8defsend_email(测试):
9登录密码•"发送网格密码"11从addr[源电子邮件]
12toaddr="目标电子邮件 ID"
13msg=Mimemultipart()
14msg="从"=从addr
15msg="To"=toaddr
16msg="主题"="警报"
17msg.附加(MIMEText(正文, '平原'))19服务器=smtplib.SMTP('smtp.sendgrid.net'587)
20服务器。启动 ()
21服务器。登录(登录用户,登录密码)
22文本=msg.as_string()
23服务器。发送邮件(从addrtoaddr文本)
24服务器。退出()
2526#Mentionyour阈值时间(以毫秒为单位)28Prescribed_limit=6000
29与urllib.请求。urlopen(链接作为响应:
30结果=json。负载(响应。读取()。解码 ('utf8'))
31*Below下面解析thejson
32对于结果中的作业="应用程序"="应用程序"=:
33send_email(str(\nApp 名称: *"。格式(作业="名称" = =="带应用程序 ID: +"。格式(作业= "id"= =="运行 + 小时"。格式(圆形(作业="已运行时间"= /1000/60/60)))) Comments are closed.