• 关于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的分布式。但是在挂掉一台时,他会切换到另外一台上面。

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

  • 相关阅读:
    [Java多线程]-并发,并行,synchonrized同步的用法
    [大数据可视化]-saiku的源码打包运行/二次开发构建
    [大数据可视化]-saiku的源码包Bulid常见问题和jar包
    [Java多线程]-线程池的基本使用和部分源码解析(创建,执行原理)
    [机器学习]-PCA数据降维:从代码到原理的深入解析
    [Java多线程]-Thread和Runable源码解析之基本方法的运用实例
    [Java多线程]-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
    [Java多线程]-Thread和Runable源码解析
    [机器学习]-Adaboost提升算法从原理到实践
    月是故乡明
  • 原文地址:https://www.cnblogs.com/gxgd/p/8743921.html
Copyright © 2020-2023  润新知