我们计划创建Oozie作业,该作业运行Sqoop命令,每小时将数据从SQL服务器导入HDFS。但是我们正面临挑战,如果工作失败,如何获得警报以及sqoop将如何检查哪些数据成功导入以及哪些数据仍处于待处理状态。在sqoop导入期间是否有任何维护事务和重试机制的过程。而且我们也对他们的失败保持警惕。
答案 0 :(得分:0)
您可以配置Oozie的工作流程以在发送失败时发送电子邮件。 您可以通过将错误标记从任何操作重定向到发送电子邮件操作来实现此目的。
电子邮件配置的示例可能如下。
<action name="send-email">
<email xmlns="uri:oozie:email-action:0.1">
<to>${emailToAddress}</to>
<subject>Failed to import table.</subject>
<body>The following import has failed.
failed the workflow that was trying to perform job --exec import-${tableName}-${environment}-${format}-${db} --verbose
ID= ${wf:id()}
NAME= ${wf:name()}
APP PATH= ${wf:appPath()}
USER= ${wf:user()}
GROUP= ${wf:group()}
NAMENODE= ${nameNode}
JOBTRACKER = ${jobTracker}
QUEUE = ${queueName}
START DATE = ${start}
error message[${wf:errorMessage(wf:lastErrorNode())}]</body>
</email>
<ok to="fail-job"/>
<error to="fail-email"/>
</action>
请注意,电子邮件地址可以是多个逗号分隔。 要正确发送电子邮件,您还需要在oozie自定义站点上正确配置oozie电子邮件客户端。您可能需要配置的参数如下:
Custom oozie-site
oozie.email.smtp.password
oozie.email.from.address
oozie.email.smtp.auth
oozie.email.smtp.host
oozie.email.smtp.port
oozie.email.smtp.username
oozie.service.ProxyUserService.proxyuser.falcon.groups
oozie.service.ProxyUserService.proxyuser.falcon.hosts
关于从Oozie 3.1重试,您可以在每个操作中配置参数重试和重试间隔。为此,您可以在操作标记
中设置以下参数<action name="a" retry-max="2" retry-interval="1">
....
</action>
Oozie's documentation的更多信息 您可以在oozie-default.xml上找到或修改重试和重试间隔默认值。通用默认值指定为here