oozie 可以在 action 中添加 email 标签, email 的发出是同步的,必须等到email 发出才能执行下一个 action. 则我们可以通过设置 email action,来让任务执行完成之后进行通知.
workflow 语法如下:
<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
...
<action name="[NODE-NAME]">
<email xmlns="uri:oozie:email-action:0.2">
<to>[COMMA-SEPARATED-TO-ADDRESSES]</to>
<cc>[COMMA-SEPARATED-CC-ADDRESSES]</cc> <!-- cc is optional -->
<subject>[SUBJECT]</subject>
<body>[BODY]</body>
<content_type>[CONTENT-TYPE]</content_type> <!-- content_type is optional -->
<attachment>[COMMA-SEPARATED-HDFS-FILE-PATHS]</attachment> <!-- attachment is optional -->
</email>
<ok to="[NODE-NAME]"/>
<error to="[NODE-NAME]"/>
</action>
...
</workflow-app>
to和cc命令指定了谁来接收邮件。可以通过逗号分隔来指定多个邮箱地址。to是必填项,cc是可选的。
主题subject和正文body用于指定邮件的标题和正文,email-action:0.2支持text/html这种格式的正文,默认是普通的文本"text/plain"
attachment用于在邮件中添加一个hdfs文件的附件,也可以通过逗号分隔符指定多个附件。如果路径声明的不全,那么也会被当做hdfs中的文件。本地文件是不能添加到附件中的。
在使用 workflow email action之前 要配置 发出邮件的账户地址. 配置 conf/oozie-site.xml
set oozie.email.smtp.host = <SMTP服务器的地址>
set oozie.email.smtp.port = <SMTP服务器的端口号,默认为25>
set oozie.email.from.address = <发送邮件的地址,默认是oozie@localhost>
set oozie.email.smtp.auth = <是否开启认证,默认 false>
set oozie.email.smtp.username = <如果开启认证,登录的用户名,默认是空>
set oozie.email.smtp.password = <如果开启认证,用户对应的密码,默认是空>