Advertisement

oozie安装及简单使用

阅读量:

Oozie安装包好小。。。。通过编译在线下载的

  1. 安全模式理解

  2. 离开安全模式方法
    bin/Hadoop dfsadmin -safemode leave

问题导读:

  1. 在安装Oozie的过程中,请按照以下步骤操作以确保成功部署:首先下载并解压源码包;然后配置环境变量;接着运行启动脚本;最后进行测试连接。
  2. 请按照以下步骤完成任务流程的配置以实现高效的资源调度:
    首先初始化角色权限;
    然后配置集群节点之间的通信;
    最后设置数据存储路径。
  3. Spark提交(Spark Submit)与Spark on Yarn有两种主要的区别:
    第一,在资源管理上:Spark submit采用单点资源模型;
    第二,在提交机制上:Spark submit支持异步提交,
    而Spark on Yarn则依赖于Hadoop HDFS的分块传输机制。

软件版本:
Oozie4.2.0,Hadoop2.6.0,Spark1.4.1,Hive0.14,Pig0.15.0,Maven3.2,JDK1.7,zookeeper3.4.6,HBase1.1.2,MySQL5.6

集群部署:

node1~4.centos.com node1~4 192.168.0.31~34 1G4 内存 1核4 虚拟机

node1:NameNode 、ResourceManager;

node2:SecondaryNameNode、Master、HMaster、HistoryServer、JobHistoryServer

节点3包含以下组件:OOZI服务器(基于Tomcat框架)、数据节点、节点管理器、分布式区域服务器、工件实例以及QuorumPeerMain组件。

数据节点

  1. 编译Oozie4.2.0

1.1 编译环境准备

使用tomcat7,而不是tomcat6的下载地址:

1)下载压缩包oozie-4.2.0.tar.gz,并解压缩到/usr/local/oozie目录

2)修改pom.xml

/usr/local/oozie/oozie-4.2.0/distro/pom.xml

复制代码
    export MAVEN_HOME=/opt/maven  
    export PATH=$PATH:$MAVEN_HOME/bin  
    
      
      
    
    代码解释

保存退出后执行命令:
[html] view plain copy
source /etc/profile

调整maven的setting.xml文件,并采用来自开源中国项目的镜像以加快构建速度为目标(由于该镜像的完整性有限),仅作为参考使用即可)

复制代码
    <mirror>  
      <id>nexus-osc</id>  
      <name>OSChina Central</name>                                                                               
      <url>http://maven.oschina.net/content/groups/public/</url>  
      <mirrorOf>*</mirrorOf>  
    </mirror>  
    
      
      
      
      
      
      
    
    代码解释

从4.3.0-SNAPSHOT源码中解压获取oozie的master版本

2.4)修改主目录中的pom.xml,有以下位置要改:
1.8

复制代码
    <property>  
    <name>hadoop.proxyuser.[USER].hosts</name>  
    <value>*</value>  
      </property>  
      <property>  
    <name>hadoop.proxyuser.[USER].groups</name>  
    <value>*</value>  
      </property>
    
      
      
      
      
      
      
      
      
    
    代码解释

其中,[USER]需要改为后面启动oozie tomcat的用户

不重启hadoop集群,而使配置生效

使用Bash脚本执行纯文本查看功能并复制代码内容
通过dfsadmin命令刷新超级用户组的配置信息
通过rmadmin命令更新并重置超级用户组的配置参数

1.4 配置Oozie工具(该oozie实例已成功部署于node3节点,并请将以下压缩包复制到node3节点)

1) 取得压缩包:

[Bash shell] 纯文本查看 复制代码
oozie-4.2.0/distro/target/oozie-4.2.0-distro.tar.gz

2) 解压缩:

[Bash shell] 纯文本查看 复制代码
tar -zxf oozie-4.2.0-distro.tar.gz

在oozie-4.2.0目录中创建libext目录,并将ext-2.2.zip复制至该目录中;同时复制hadoop相关jar包至该目录中

[Bash shell] 纯文本浏览 拷贝代码
执行copypaste命令将指定JAR文件复制至libext目录
执行copypaste命令将指定另一个JAR文件复制至libext目录

把hadoop与tomcat冲突jar包去掉

[Bash shell] 纯文本查看 复制代码

移旧至新并创建旧的备份文件.mv\ servlet-api-2.5.jar\ servlet-api-2.5.jar.bak

拷贝mysql驱动到该目录下(使用mysql数据库,默认是derby)

在Bash编程环境中进行纯文本查看及复制代码操作时,请执行以下命令:

4)配置数据库连接,文件是conf/oozie-site.xml

[XML] 纯文本查看 复制代码

复制代码
    <property>  
    <name>oozie.service.JPAService.create.db.schema</name>  
    <value>true</value>  
    </property>  
    <property>  
    <name>oozie.service.JPAService.jdbc.driver</name>  
    <value>com.mysql.jdbc.Driver</value>  
    </property>  
    <property>  
    <name>oozie.service.JPAService.jdbc.url</name>  
    <value>jdbc:mysql://master:3306/oozie?createDatabaseIfNotExist=true</value>  
    </property>  
    
    <property>  
    <name>oozie.service.JPAService.jdbc.username</name>  
    <value>hadoop</value>  
    </property>  
    
    <property>  
    <name>oozie.service.JPAService.jdbc.password</name>  
    <value>hadoop</value>  
    </property>  
    <property>  
    <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>  
    <value>*=/usr/hadoop/hadoop-2.6.0/etc/hadoop</value>  
    </property>
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释

最后一个是必要的配置,在后续运行调度的过程中, 如果未正确设置相关参数, 将导致程序在执行到File /user/root/share/lib时出现无法加载的问题.

5)启动前的初始化

a. 打war包

bin/oozie-setup.sh prepare-war

b. 初始化数据库

bin/ooziedb.sh create -sqlfile oozie.sql -run

c. 修改oozie-4.2.0/oozie-server/conf/server.xml文件,注释掉下面的记录

复制代码
    <!--<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />-->
    
      
    
    代码解释

d. 上传jar包

bin/oozie-setup.sh sharelib create -fs hdfs://node1:8020

1.5 启动

bin/oozied.sh start

  1. 流程实例

该份文件位于bank.csv,并存于hdfs://node1:8020/user/root/bank.csv,并可在http://zeppelin-project.org/docs/tutorial/tutorial.html的官方网站上获取。在进行Hive或Pig等任务时,请注意删除该份文件的第一行数据。

默认设置下所有作业用户均为Hadoop;若为非Hadoop用户,则可能需调整相应的目录路径。

配置环境变量:export OOZIE_URL=http://node3:11000/oozie

2.1 MR任务流程

  1. job.properties :

[Plain Text] 纯文本查看 复制代码

复制代码
    oozie.wf.application.path=hdfs://node1:8020/user/root/workflow/mr_demo/wf  
    #Hadoop"R  
    jobTracker=node1:8032  
    #Hadoop"fs.default.name  
    nameNode=hdfs://node1:8020/  
    #Hadoop"mapred.queue.name  
    queueName=default
    
      
      
      
      
      
      
      
    
    代码解释
  1. workflow.xml

[XML] 纯文本查看 复制代码

复制代码
    <workflow-app xmlns="uri:oozie:workflow:0.2" name="map-reduce-wf">  
    <start to="mr-node"/>  
    <action name="mr-node">  
        <map-reduce>  
            <job-tracker>${jobTracker}</job-tracker>  
            <name-node>${nameNode}</name-node>  
            <prepare>  
                <delete path="${nameNode}/user/${wf:user()}/workflow/mr_demo/output"/>  
            </prepare>  
            <configuration>  
                <property>  
                    <name>mapred.job.queue.name</name>  
                    <value>${queueName}</value>  
                </property>  
                <property>  
                    <name>mapreduce.mapper.class</name>  
                    <value>org.apache.hadoop.examples.WordCount$TokenizerMapper</value>  
                </property>  
                <property>  
                    <name>mapreduce.reducer.class</name>  
                    <value>org.apache.hadoop.examples.WordCount$IntSumReducer</value>  
                </property>  
                <property>  
                    <name>mapred.map.tasks</name>  
                    <value>1</value>  
                </property>  
                <property>  
                    <name>mapred.input.dir</name>  
                    <value>/user/${wf:user()}/bank.csv</value>  
                </property>  
                <property>  
                    <name>mapred.output.dir</name>  
                    <value>/user/${wf:user()}/workflow/mr_demo/output</value>  
                </property>  
            </configuration>  
        </map-reduce>  
        <ok to="end"/>  
        <error to="fail"/>  
    </action>  
    <kill name="fail">  
        <message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>  
    </kill>  
    <end name="end"/>  
    </workflow-app>
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
  1. 运行:

将workflow.xml文件复制至HDFS的hdfs://node1:8020/user/root/workflow/mr_demo/wf/workflow.xml存储目录中。

在node3节点(其中node3同时充当oozie集群的客户端和服务端)上执行 bin/oozie job -config job.properties -run 命令即可触发任务提交流程。当任务提交成功后,系统将返回一个唯一标识符jobId(例如,在配置好上述参数后运行该命令将返回一个特定的jobId值)。

0000004-160123180442501-oozie-root-W

3) 使用 bin/oozie job -info 0000004-160123180442501-oozie-root-W 即可查看流程状态;

4) 流程结束后,查看流程状态以及在对应的目录即可查看输出结果;

2.2 Pig任务流程

  1. job.properties

[Plain Text] 纯文本查看 复制代码

复制代码
    oozie.wf.application.path=hdfs://node1:8020/user/root/workflow/pig_demo/wf  
    oozie.use.system.libpath=true #pig流程必须配置此选项  
    #Hadoop"ResourceManager  
    resourceManager=node1:8032  
    #Hadoop"fs.default.name  
    nameNode=hdfs://node1:8020/  
    #Hadoop"mapred.queue.name  
    queueName=default
    
      
      
      
      
      
      
      
      
    
    代码解释
  1. workflow.xml

[XML] 纯文本查看 复制代码

复制代码
    <workflow-app xmlns="uri:oozie:workflow:0.2" 
    name="whitehouse-workflow">  
    <start to="transform_job"/>  
    <action name="transform_job">  
        <pig>  
            <job-tracker>${resourceManager}</job-tracker>  
            <name-node>${nameNode}</name-node>  
            <prepare>  
                <delete path="/user/root/workflow/pig_demo/output"/>  
            </prepare>  
            <script>transform_job.pig</script>  
        </pig>  
        <ok to="end"/>  
        <error to="fail"/>  
    </action>  
    <kill name="fail">  
        <message>Job failed, error  
            message[${wf:errorMessage(wf:lastErrorNode())}]  
        </message>  
    </kill>  
    <end name="end"/>  
    </workflow-app>
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释

3 . transform_job.pig pig任务用到的脚本

[Plain Text] 纯文本查看 复制代码

复制代码
    bank_data= LOAD '/user/root/bank.csv' USING PigStorage(';') AS  
    (age:int, job:chararray, marital:chararray,education:chararray,  
     default:chararray,balance:int,housing:chararray,loan:chararray,  
    contact:chararray,day:int,month:chararray,duration:int,campaign:int,  
    pdays:int,previous:int,poutcom:chararray,y:chararray);  
    
    age_gt_30 = FILTER bank_data BY age >= 30;  
    
    store age_gt_30 into '/user/root/workflow/pig_demo/output' using PigStorage(',');
    
      
      
      
      
      
      
      
      
      
    
    代码解释
  1. 运行

1) 将 transform_job.pig 和 workflow.xml 文件复制或移动至 hdfs://node1:8020/user/root/workflow/pig_demo/wf/ 目录内
2) 通过执行 bin/oozie job 命令并配置相关的参数来完成操作
3) 通过运行 bin/oozie job 命令并指定 jobId 来获取对应任务的进度信息;或者在浏览器中的 node3:11000 地址处查看所有任务的状态

2.3 Hive任务流程

注意:在hive任务完成之后, bank.csv会被转移至hive的warehouse目录下; 因此,在执行其他操作或重新启动之前,请确保将bank.csv重新上传至系统

  1. job.properties

[Plain Text] 纯文本查看 复制代码

复制代码
    nameNode=hdfs://node1:8020  
    jobTracker=node1:8032  
    queueName=default  
    maxAge=30  
    input=/user/root/bank.csv  
    output=/user/root/workflow/hive_demo/output  
    oozie.use.system.libpath=true  
    
    oozie.wf.application.path=${nameNode}/user/${user.name}/workflow/hive_demo/wf
    
      
      
      
      
      
      
      
      
      
    
    代码解释
  1. workflow.xml

[XML] 纯文本查看 复制代码

复制代码
    <workflow-app xmlns="uri:oozie:workflow:0.2" name="hive-wf">  
    <start to="hive-node"/>  
    
    <action name="hive-node">  
        <hive xmlns="uri:oozie:hive-action:0.2">  
            <job-tracker>${jobTracker}</job-tracker>  
            <name-node>${nameNode}</name-node>  
            <prepare>  
                <delete path="${output}/hive"/>  
                <mkdir path="${output}"/>  
            </prepare>  
            <configuration>  
                <property>  
                    <name>mapred.job.queue.name</name>  
                    <value>${queueName}</value>  
                </property>  
            </configuration>  
            <script>script.hive</script>  
            <param>INPUT=${input}</param>  
            <param>OUTPUT=${output}/hive</param>  
            <param>maxAge=${maxAge}</param>  
     </hive>  
        <ok to="end"/>  
        <error to="fail"/>  
    </action>  
    
    <kill name="fail">  
        <message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>  
    </kill>  
    <end name="end"/>  
    </workflow-app>
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
  1. hive任务用到的脚本 script.hive

[SQL] 纯文本查看 复制代码

复制代码
    DROP TABLE IF EXISTS bank;  
    
    CREATE TABLE bank(  
    age int,  
    job string,  
    marital string,education string,  
     default string,balance int,housing string,loan string,  
    contact string,day int,month string,duration int,campaign int,  
    pdays int,previous int,poutcom string,y string  
    )   
     ROW FORMAT DELIMITED FIELDS TERMINATED BY '\073' 
     STORED AS TEXTFILE;  
    
     LOAD DATA INPATH '${INPUT}' INTO TABLE bank;  
    
    INSERT OVERWRITE DIRECTORY '${OUTPUT}' SELECT * FROM bank where age > '${maxAge}';
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释

注意:‘\073’ 代表分号;

  1. 运行,参考上面

2.4 Hive 2 任务流程

  1. job.properties

[Plain Text] 纯文本查看 复制代码

复制代码
    nameNode=hdfs://node1:8020  
    jobTracker=node1:8032  
    queueName=default  
    jdbcURL=jdbc:hive2://node4:10000/default # hiveserver2 时,配置此选项  
    maxAge=30  
    input=/user/root/bank.csv  
    output=/user/root/workflow/hive2_demo/output  
    oozie.use.system.libpath=true  
    
    oozie.wf.application.path=${nameNode}/user/${user.name}/workflow/hive2_demo/wf
    
      
      
      
      
      
      
      
      
      
      
    
    代码解释
  1. workflow.xml

[XML] 纯文本查看 复制代码

复制代码
    <workflow-app xmlns="uri:oozie:workflow:0.5" name="hive2-wf">  
    <start to="hive2-node"/>  
    
    <action name="hive2-node">  
        <hive2 xmlns="uri:oozie:hive2-action:0.1">  
            <job-tracker>${jobTracker}</job-tracker>  
            <name-node>${nameNode}</name-node>  
            <prepare>  
                <delete path="${output}/hive"/>  
                <mkdir path="${output}"/>  
            </prepare>  
            <configuration>  
                <property>  
                    <name>mapred.job.queue.name</name>  
                    <value>${queueName}</value>  
                </property>  
            </configuration>  
    
        <jdbc-url>${jdbcURL}</jdbc-url>  
            <script>script2.hive</script>  
            <param>INPUT=${input}</param>  
            <param>OUTPUT=${output}/hive</param>  
            <param>maxAge=${maxAge}</param>  
     </hive2>  
        <ok to="end"/>  
        <error to="fail"/>  
    </action>  
    
    <kill name="fail">  
        <message>Hive2 failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>  
    </kill>  
    <end name="end"/>  
    </workflow-app>
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
  1. hive2用到的脚本: script2.hive

[SQL] 纯文本查看 复制代码

复制代码
    DROP TABLE IF EXISTS bank2;  
    
    CREATE TABLE bank2(  
    age int,  
    job string,  
    marital string,education string,  
     default string,balance int,housing string,loan string,  
    contact string,day int,month string,duration int,campaign int,  
    pdays int,previous int,poutcom string,y string  
    )   
     ROW FORMAT DELIMITED FIELDS TERMINATED BY '\073' 
     STORED AS TEXTFILE;  
    
     LOAD DATA INPATH '${INPUT}' INTO TABLE bank2;  
    
    INSERT OVERWRITE DIRECTORY '${OUTPUT}' SELECT * FROM bank2 where age > '${maxAge}';
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
  1. 运行,参考上面

2.5 Spark 任务流程

  1. job.properties :

[Plain Text] 纯文本查看 复制代码

复制代码
    nameNode=hdfs://node1:8020  
    jobTracker=node1:8032  
    #master=spark://node2:7077   
    master=spark://node2:6066  
    sparkMode=cluster  
    queueName=default  
    oozie.use.system.libpath=true  
    input=/user/root/bank.csv  
    output=/user/root/workflow/spark_demo/output  
    # the jar file must be local  
    jarPath=${nameNode}/user/root/workflow/spark_demo/lib/oozie-examples.jar  
    oozie.wf.application.path=${nameNode}/user/${user.name}/workflow/spark_demo/wf
    
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释

由于sparkMode采用cluster,所以master的链接需要是下面的6066,:

sparkMode使用client没有试验成功;

  1. workflow.xml

[XML] 纯文本查看 复制代码

复制代码
    <workflow-app xmlns='uri:oozie:workflow:0.5' name='SparkFileCopy'>  
    <start to='spark-node' />  
    
    <action name='spark-node'>  
        <spark xmlns="uri:oozie:spark-action:0.1">  
            <job-tracker>${jobTracker}</job-tracker>  
            <name-node>${nameNode}</name-node>  
            <prepare>  
                <delete path="${output}"/>  
            </prepare>  
            <master>${master}</master>  
        <mode>${sparkMode}</mode>     
            <name>Spark-FileCopy</name>  
     <class>org.apache.oozie.example.SparkFileCopy</class>  
            <jar>${jarPath}</jar>  
            <arg>${input}</arg>  
            <arg>${output}</arg>  
        </spark>  
        <ok to="end" />  
        <error to="fail" />  
    </action>  
    
    <kill name="fail">  
        <message>Workflow failed, error  
            message[${wf:errorMessage(wf:lastErrorNode())}]  
        </message>  
    </kill>  
    <end name='end' />  
    </workflow-app>
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
  1. 运行:

这里位于... oozie-examples.tar.gz解压后生成的examples/apps/spark/lib目录中/内

复制oozie-examples.jar至hdfs://node1:8020/user/root/workflow/spark_demo/lib/oozie-examples.jar目录,并将workflow.xml复制至hdfs://node1:8020/user/root/workflow/spark_demo/wf/workflow.xml文件中

3) bin/oozie job -config job.properties -run 即可运行;

  1. 相关问题:

该任务通过Yarn启动后被提交至Spark集群执行,并非直接由Spark集群执行(如图所示:
在Yarn界面中可以看到启动的任务:

接着去spark监控界面,同样可以看到监控界面:

但是这样时间就不对了,看日志:

观察发现将资源 manager 连接到 yarn 后, 随后立即与 spark 的 master 连接, 然后提交任务请求, 接着 yarn 接收的任务处理完成, 最后 yarn 返回相应的响应信息。

查看spark的日志,时间也是吻合的:

最后保存文件,关闭driver:

2.6 spark on yarn任务流程

参考官网的提示:

  1. job.properties:

[Plain Text] 纯文本查看 复制代码

复制代码
    nameNode=hdfs://node1:8020  
    jobTracker=node1:8032  
    #master=spark://node2:7077  
    #master=spark://node2:6066  
    master=yarn-cluster  
    #sparkMode=cluster  
    queueName=default  
    oozie.use.system.libpath=true  
    input=/user/root/bank.csv  
    output=/user/root/workflow/sparkonyarn_demo/output  
    
    jarPath=${nameNode}/user/root/workflow/sparkonyarn_demo/lib/oozie-examples.jar  
    oozie.wf.application.path=${nameNode}/user/${user.name}/workflow/sparkonyarn_demo
    
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
  1. workflow.xml:

[XML] 纯文本查看 复制代码

复制代码
    <workflow-app xmlns='uri:oozie:workflow:0.5' name='SparkFileCopy_on_yarn'>  
    <start to='spark-node' />  
    
    <action name='spark-node'>  
        <spark xmlns="uri:oozie:spark-action:0.1">  
            <job-tracker>${jobTracker}</job-tracker>  
            <name-node>${nameNode}</name-node>  
            <prepare>  
                <delete path="${output}"/>  
            </prepare>  
            <master>${master}</master>  
            <name>Spark-FileCopy-on-yarn</name>  
     <class>org.apache.oozie.example.SparkFileCopy</class>  
            <jar>${jarPath}</jar>  
            <spark-opts>--conf spark.yarn.historyServer.address=http://node2:18080 --conf spark.eventLog.dir=hdfs://node1:8020/spark-log --conf spark.eventLog.enabled=true</spark-opts>  
        <arg>${input}</arg>  
            <arg>${output}</arg>  
        </spark>  
        <ok to="end" />  
        <error to="fail" />  
    </action>  
    
    <kill name="fail">  
        <message>Workflow failed, error  
            message[${wf:errorMessage(wf:lastErrorNode())}]  
        </message>  
    </kill>  
    <end name='end' />  
    </workflow-app>
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
  1. 运行;

环境配置:复制workflow.xml 到HDFS上指定位置

将oozie-exmaples.jar复制至HDFS中的指定位置

3)拷贝$SPARK_HOME/lib/spark-assembly-1.4.1-hadoop2.6.0.jar文件到hdfs;//node1:8020/user/root/workflow/sparkonyarn_demo/lib/spark-assembly-1.4.1-hadoop2.6.0.jar

4) bin/oozie job -config job.properties -run

5) 查看任务状态:

  1. 相关问题

1) spark 提交和spark on yarn 方式的区别:

同样,在使用yarn时会采用spark的方式来提交任务。而所有任务则都在yarn上运行。查看日志间的差异:在8088环境下的差异:

任务 ID 为 3-1601231804425-oozie-root-W 的情况下,在前后仅有一个任务的情况下,并且在 node2:8080 处设置了一个 spark 任务配置;作为对比的时间点上, spark 在 yarn 上的配置方式

看到0000009-160123180442501-oozie-root-W 这个任务其实是有两个yarn的任务组成的

查看oozie的日志监控:

所以 spark 采用的是 yarn 启动任务的方式,在执行过程中会涉及 spark 集群的启动;该过程同时也会启动 yarn 集群以辅助完成任务。

而 Spark on yarn 的方式 则是 yarn 首先运行 作业 A ,随后在 该作业 过程中 调用另一个 yarn 作业 B 。当 作业 B 完成后 ,会 返回至 作业 A ,最终完成整个流程 。无需 Spark 集群 启动 (这从 图片 中 可以 观察 到)。

原文链接:<>

全部评论 (0)

还没有任何评论哟~