我用sqoop、hive和pig操作创建了一个简单的oozie工作流程。对于每一个动作,oozie都会启动一个mr启动程序,而mr启动程序又会启动这个动作(sqoop/hive/pig)。因此,在工作流程中,总共有6个mr jobs用于3个动作。为什么oozie启动mr启动程序来启动操作,而不是直接启动操作?
j0pj023g1#
我在apacheflume论坛上发布了同样的消息,下面是回复。它还可以防止oozie服务器陷入困境或变得不稳定。例如,如果有一堆工作流运行pig作业,那么oozie服务器将直接运行pig客户机的多个副本(这是一个相对“繁重”的程序)。通过将所有用户代码和外部客户机移动到launcher作业中Map任务,oozie服务器将保持更轻的重量,并且更不容易出错。它还可以通过这种方式更具可伸缩性,因为启动程序作业将作业启动/监视分发给集群中的其他机器;否则,随着oozie服务器做所有事情,我们必须根据oozie服务器的机器规格(ram、cpu等)限制并发工作流的数量。最后,从架构的Angular 来看,oozie服务器本身是无状态的;也就是说,所有的东西都存储在数据库中,oozie服务器可以随时关闭而不会丢失任何东西。如果我们直接从oozie服务器启动作业,那么我们现在就有了一些状态(例如,pig客户端不能重新启动和恢复)。
1条答案
按热度按时间j0pj023g1#
我在apacheflume论坛上发布了同样的消息,下面是回复。
它还可以防止oozie服务器陷入困境或变得不稳定。例如,如果有一堆工作流运行pig作业,那么oozie服务器将直接运行pig客户机的多个副本(这是一个相对“繁重”的程序)。通过将所有用户代码和外部客户机移动到launcher作业中Map任务,oozie服务器将保持更轻的重量,并且更不容易出错。它还可以通过这种方式更具可伸缩性,因为启动程序作业将作业启动/监视分发给集群中的其他机器;否则,随着oozie服务器做所有事情,我们必须根据oozie服务器的机器规格(ram、cpu等)限制并发工作流的数量。最后,从架构的Angular 来看,oozie服务器本身是无状态的;也就是说,所有的东西都存储在数据库中,oozie服务器可以随时关闭而不会丢失任何东西。如果我们直接从oozie服务器启动作业,那么我们现在就有了一些状态(例如,pig客户端不能重新启动和恢复)。