关于oozie 配置多个oozie server出现的问题总结

问题描述:通过oozie 提交任务,一直报权限连接异常。

我配置了两台oozie server做分布式的oozie文件提交。但是当我提交任务的时候。当一台server 挂掉时出现了下面的错误。

Exception while executing check(). Error Code [JA002], Message[JA002: Unauthorized connection for super-user: oozie from IP 192.168.2.104]
org.apache.oozie.action.ActionExecutorException: JA002: Unauthorized connection for super-user: oozie from IP 192.168.2.104

出现.ActionExecutorException,出现这个问题首先想到的是要执行的任务,的那台机器报权限问题。

首先分析一下oozie执行的基本流程:

以提交一个hive的任务为例:

(1)Oozie Client提交了一个workflow给Oozie Server。这个workflow里面要执行具体的Hive作业(Hive Action)

    对于oozie server的理解:

         具体的作业执行上下文不是在Oozie Server process中。也就是说:Oozie Server只负责执行workflow,而workflow中的Action,比如MapReduce Action或者Java Action的执行是以集群的方式执行的。Oozie Server只负责查询这些Action的执行状态和结果,从而降低了Oozie Server的负载。

        通过将实际作业(MR Action or JAVA Action)的运行交给Hadoop来管理并执行,Oozie Server只负责查询作业的状态...如果用户提交的workflow增多了,只需要简单地增加Oozie Server 即可。

总结:这个oozie server 不是实际执行者,他只是对作业的检查。当提交的workflow增多的时候提高他的数量,对作业状态的检查。

(2)Oozie Server会启动一个MR作业,也就是launcher job,由launcher job来发起具体的Hive作业

      我们知道在Hadoop1的时候是使用jobtrack来对作业进行调度。提交多的任务的时候资源的分配就使用到slot这个概念。

   launcher job是个MR作业,它需要占用slot,也就是说:每提交一个workflow作业,都会创建一个launcher job并占用一个slot,如果底层Hadoop集群slot个数很少,而Oozie提交的      作业又很多,launcher job把 slot用完了,使得实际执行Action已经没有slot可用了,这就会导致死锁。当然,可以通过配置Oozie的相关参数来避免Oozie发起太多的launcher job

      但是在Hadoop2之后我们引入了yarn这个概念,不在使用slot,而是出现了container这一概念。他是动态的对资源进行分配。不在因为资源占用很多的slot而。出现很多的资源占用

回到上面那个问题:

了解了整个的oozie的执行原理,我们来分析一下问题所在:

出现了ActionExecutorException,也就是在action阶段,不能正确执行。后面查了一堆资料。显示我们没有将全部权限打开。第二台上面的core-site-xml文件有问题。

通过配置如下的配置文件问题解决:

配置Hadoop的 /core-site.xml文件中的两个配置文件:

<property>

<name>hadoop.proxyuser.oozie.hosts</name>

<value>host1,hosts2</value>

</property>

 至此问题解决; 

问题总结:在两台server上执行任务的时候,我们挂掉一台想让他在另外一台上执行。检测oozie的分布式。但是在挂掉一台时,他会切换到另外一台上面。

这个时候服务启动比较慢。等过一会之后服务正常执行。

原文地址:https://www.cnblogs.com/gxgd/p/8743921.html