我使用Sqoop,Hive和Pig动作创建了一个简单的Oozie工作流程。对于每一个动作,Oozie发射一个MR发射器,然后发射动作(Sqoop / Hive / Pig)。因此,工作流程中的3个操作总共有6个MR作业。
为什么Oozie启动MR启动器来启动操作而不是直接启动操作?
答案 0 :(得分:4)
我在Apache Flume论坛上发布了相同内容,这是回复。
这也是为了防止Oozie服务器陷入困境或成为现实 不稳定。例如,如果您有一堆运行Pig作业的工作流, 然后你就会让Oozie服务器运行Pig客户端的多个副本 (这是一个相对“重”的程序)直接。通过移动所有的 用户代码和外部客户端在启动器作业Oozie中映射任务 服务器仍然更轻,更不容易出错。它也可以 这种方式可扩展性更强,因为启动器作业分配了 作业启动/监控到集群中的其他机器;否则,有 Oozie服务器做的一切,我们必须限制数量 基于Oozie服务器的机器规格(RAM,CPU, 等等)。最后,从架构的角度来看,Oozie服务器 本身就是无国籍的;也就是说,一切都存储在数据库中 Oozie服务器可以在任何时候取下而不会丢失任何东西。要是我们 是直接从Oozie服务器上启动工作,然后我们现在有一些 状态(例如猪客户端无法重新启动和恢复)。