精华内容
下载资源
问答
  • camunda外部任务客户端python3 该存储库包含用Python3编写的Camunda外部任务客户端。 在Python3中实现您的。 需要Python> = 3.7 正在安装 将以下行添加到您的Python项目的requirements.txt中。 git+...
  • camunda外部任务客户端 在NodeJS中实现您的。 必须安装NodeJS> = v10 正在安装 npm install -s camunda-external-task-client-js 或者: yarn add camunda-external-task-client-js 用法 确保运行 。 使用外部...
  • 【flink】sql-client 提交任务到yarn

    千次阅读 2021-03-12 15:47:47
    默认情况下,这个sql-client上面所跑的任务,会提交到flink的standalone集群上,如果你没有bin/start-cluster.sh启动standalon集群,那么sql-client进程可以启动起来,但是在实际执行sql的时候,会报如下连接拒绝的...

    1 默认standalone模式

    启动sql-client命令:bin/sql-client.sh embedded

    默认情况下,这个sql-client上面所跑的任务,会提交到flink的standalone集群上,如果你没有bin/start-cluster.sh启动standalon集群,那么sql-client进程可以启动起来,但是在实际执行sql的时候,会报如下连接拒绝的错误

    2 使用yarn-session模式

    yarn-session模式其实就是在yarn上生成一个standalone集群

    1. bin/yarn-session.sh -s 2 -jm 1024 -tm 2048 -nm test1 -d
    2. bin/sql-client.sh embedded -s yarn-session

    参考文章

    https://blog.csdn.net/lsr40/article/details/113398830

    展开全文
  • YARN-client提交任务处理过程

    千次阅读 2018-06-05 21:38:15
    Client向RM提交任务的过程大致分为七步,如下图:1. Client向RM发出请求2. RM返回一个ApplicationID作为回应3. Client向RM回应Application Submission Context(ASC)。ASC包括ApplicationID、user、queue,以及其他...

    Client向RM提交任务的过程大致分为七步,如下图:



    1. Client向RM发出请求
    2. RM返回一个ApplicationID作为回应
    3. Client向RM回应Application Submission Context(ASC)。ASC包括ApplicationID、user、queue,以及其他一些启动AM相关的信息,除此之外,还有一个Container Launch Context(CLC),CLC包含了资源请求数(内存与CPU),job files,安全token,以及其他一些用以在一个node上启动AM的信息。任务一旦提交以后,client可以请求RM去杀死应用或查询应用的运行状态
    4. 当RM接受到ASC后,它会调度一个合适的container来启动AM,这个container经常被称作为container 0。AM需要请求其他的container来运行任务,如果没有合适的container,AM就不能启动。当有合适的container时,RM发请求到合适的NM上,来启动AM。这时候,AM的PRC与监控的URL就已经建立了。
    5. 当AM启动起来后,RM回应给AM集群的最小与最大资源等信息。这时AM必须决定如何使用那么当前可用的资源。YARN不像那些请求固定资源的scheduler,它能够根据集群的当前状态动态调整。
    6. AM根据从RM那里得知的可使用的资源,它会请求一些一定数目的container。This request can be very specific,including containers with multiples of the resource minimum values (e.g., extra memory)。

    7. RM将会根据调度策略,尽可能的满足AM申请的container。也就是会分配container给AM,然后这些container的node manager会与AM进行通信,AM会向这些container的node manager发送启动容器的必要配置。

    同时,在一个job运行时,AM会向RM汇报心跳与进度信息,在这些心跳过程中,AM可能去申请或释放container。会当任务完成时,AM向RM发送一条任务结束信息然后退出。如下图所示:




    接下来,用一个简单的例子来说明整个过程。

    代码参考:https://github.com/trumanz/hadoop_the_definitive_guide/tree/master/ch04-yarn/yarnExample


    YARN client编写

    1.创建一个Application

    YarnClientApplication app = yarnClient.createApplication();
    

    createApplication()方法在hadoop源码中yarn project中的org.apache.hadoop.yarn.client.api.impl中YARNClientImpl.java实现。


    2.设置Application的名字

    app.getApplicationSubmissionContext().setApplicationName( "truman.ApplicationMaster");

    getApplicationSubmissionContext()方法位于org.apache.hadoop.yarn.client.api中的YarnClientApplication.java中

    setApplicationName()方法位于org.apache.hadoop.yarn.client.api中的ApplicationSubmissionContextPBImpl.java中


    3.设置Application的内存和CPU需求以及优先级和queue信息,YARN中RM将根据这些信息来选择合适的container来启动APP master,这个container经常被称作为container 0。

     app.getApplicationSubmissionContext().setResource(Resource.newInstance(100, 1));
     app.getApplicationSubmissionContext().setPriority(Priority.newInstance(0));
     app.getApplicationSubmissionContext().setQueue("default");

     setResource(),setResource(),setQueue()这些方法都在org.apache.hadoop.yarn.client.api中的ApplicationSubmissionContextPBImpl.java中


    4.设置ContainerLaunchContext,这一步,amContainer中包含了App Master执行所需要的资源文件,环境变量和启动命令,这里将资源文件上传到了HDFS,这样在Node Manager就可以通过HDFS取得这些文件。

    app.getApplicationSubmissionContext().setAMContainerSpec(amContainer);

    setAMContainerSpec()方法位于org.apache.hadoop.yarn.client.api中的ApplicationSubmissionContextPBImpl.java中。


    5.提交应用给RM

        ApplicationId appId = yarnClient.submitApplication(app
                        .getApplicationSubmissionContext());

    submitApplication()方法位于org.apache.hadoop.yarn.client.api.impl中YARNClientImpl.java中。

    对于client的编写还是比较简单的,不需要维护状态,只需要提交相应的消息给RM就行。


    YARN APP Master编写

    这部分编写比较复杂,AM需要与RM和NM通信,交互。

    通过RM,申请container,并接受RM的一些信息,如可用的container资源,结束container等。

    通过NM,启动container,并接收NM的信息,如container的状态变化以及Node状态变化等。

    1.创建一个AMRMClientAsync对象,负责与RM交互通信

    amRMClient = AMRMClientAsync.createAMRMClientAsync( 1000, new RMCallbackHandler());
    这里的RMCallbackHandler 是我们编写的继承自AMRMClientAsync.CallbackHandler 的一个类,其功能是处理由Resource Manager收到的消息,
           其需要实现的方法由如下
           public void onContainersCompleted(List<ContainerStatus> statuses);
              public void onContainersAllocated(List<Container> containers) ;
              public void onShutdownRequest() ;
              public void onNodesUpdated(List<NodeReport> updatedNodes) ;
              public void onError(Throwable e) ;


           这里不考虑异常的情况下,只写onContainersAllocated, onContainersCompleted 这两个既可以, 一个是当有新的Container 可以使用, 一个是Container 运行结束。
           在onContainersAllocated 我们需要编写 启动container 的代码,amNMClient.startContainerAsync(container, ctx); 这里的ctx 同Yarn Client 中第4步中的amContainer 是同一个类型, 即这个container 执行的一些资源,环境变量与命令等, 因为这是在回调函数中,为了保证时效性,这个操作最好放在线程池中异步操作。

           在onContainersCompleted 中,如果是失败的Container,我们需要重新申请并启动Container,(这一点有可能是YARN的 Fair Schedule 中会强制退出某些Container 以释放资源) 成功的将做记录既可以。


    2.创建一个NMClientAsyncImpl对象,负责与NM交互通信

     amNMClient = new NMClientAsyncImpl(new NMCallbackHandler());
    这里NMCallbackHandler 使我们需要编写的继承自NMClientAsync.CallbackHandler 的对象,其功能是处理由Node Manager 收到的消息
           public void onContainerStarted(ContainerId containerId,  Map<String, ByteBuffer> allServiceResponse);
              public void onContainerStatusReceived(ContainerId containerId,  ContainerStatus containerStatus);
              public void onContainerStopped(ContainerId containerId) ;
              public void onStartContainerError(ContainerId containerId, Throwable t);
              public void onGetContainerStatusError(ContainerId containerId,  Throwable t) ;
              public void onStopContainerError(ContainerId containerId, Throwable t);

          这里简单的不考虑异常的情况下,这些函数可以写一个空函数体,忽略掉处理。


    3.将自己(AM)注册到RM上

     RegisterApplicationMasterResponse response = amRMClient
                        .registerApplicationMaster(NetUtils.getHostname(), -1, "");

    该函数将自己注册到RM上,没有提供RPC port和trackURL。

    该方法在org.apache.hadoop.yarn.client.api.impl的AMRMClientImpl.java中。


    4.向RM申请container

    ContainerRequest containerAsk = new ContainerRequest(
                             //100*10M + 1vcpu
                             Resource.newInstance(100, 1), null, null,
                             Priority.newInstance(0));
          amRMClient.addContainerRequest(containerAsk);

     这里一个containerAsk   表示申请一个 Container, 这里的对nodes和rasks 设置为NULL,猜测MapReduce应该由参数来尝试申请靠近HDFS block的container的。

    addContainerRequest()方法在org.apache.hadoop.yarn.client.api.impl的AMRMClientImpl.java中。



    5.等待container执行完毕,清除退出

      我的代码如下, 循环等待container 执行完毕,并上报执行结果

     void waitComplete() throws YarnException, IOException{
              while(numTotalContainers.get() != numCompletedConatiners.get()){
                   try{
                        Thread.sleep(1000);
                        LOG.info("waitComplete" + 
                             ", numTotalContainers=" + numTotalContainers.get() +
                             ", numCompletedConatiners=" + numCompletedConatiners.get());
                   } catch (InterruptedException ex){}
              }
              exeService.shutdown();
              amNMClient.stop();
              amRMClient.unregisterApplicationMaster(FinalApplicationStatus.SUCCEEDED, "dummy Message", null);
              amRMClient.stop();
         }


    YARN Container Application

    真正处理数据的是由APP master中amNMClient.startContainerAsync(container, ctx)提交的 Container application,也就是提交给具体的container执行的工作。然后这这个应用并不需要特殊编写,任何程序通过提交相应的运行信息都可以在这些Node中的某个Container 中执行, 所以这个程序可以是一个复杂的MapReduce  Task 或者 是一个简单的脚本。


    总结:

    YARN 提供了对cluster 资源管理 和 作业调度的功能。
    编写一个应用运行在YARN 之上,比较复杂的是App Mstr 的编写,其需要维护container 的状态并能共做一些错误恢复,重启应用的操作。 比较简答的是Client的编写,只需要提交必须的信息既可以,不需要维护状态。 真正运行处理数据的是Container Application ,这个程序可以不需要针对YARN做代码编写。

    展开全文
  • yarn架构 及 client提交任务过程讲解

    千次阅读 2016-12-01 16:14:56
    Client向RM提交任务的过程大致分为七步,先上图在解释: 1. Client向RM发出请求 2. RM返回一个ApplicationID作为回应 3. Client向RM回应Application Submission Context(ASC)。ASC包括ApplicationID、user...

    先看个yarn的整体架构



    Client向RM提交任务的过程大致分为七步,先上图在解释:


    1. Client向RM发出请求
    2. RM返回一个ApplicationID作为回应
    3. Client向RM回应Application Submission Context(ASC)。ASC包括ApplicationID、user、queue,以及其他一些启动AM相关的信息,除此之外,还有一个Container Launch Context(CLC),CLC包含了资源请求数(内存与CPU),job files,安全token,以及其他一些用以在一个node上启动AM的信息。任务一旦提交以后,client可以请求RM去杀死应用或查询应用的运行状态
    4. 当RM接受到ASC后,它会调度一个合适的container来启动AM,这个container经常被称作为container 0。AM需要请求其他的container来运行任务,如果没有合适的container,AM就不能启动。当有合适的container时,RM发请求到合适的NM上,来启动AM。这时候,AM的PRC与监控的URL就已经建立了。
    5. 当AM启动起来后,RM回应给AM集群的最小与最大资源等信息。这时AM必须决定如何使用那么当前可用的资源。YARN不像那些请求固定资源的scheduler,它能够根据集群的当前状态动态调整。
    6. AM根据从RM那里得知的可使用的资源,它会请求一些一定数目的container。This request can be very specific,including containers with multiples of the resource minimum values (e.g., extra memory)。
    7. RM将会根据调度策略,尽可能的满足AM申请的container。


    在一个job运行时,AM会向RM汇报心跳与进度信息,在这些心跳过程中,AM可能去申请或释放container。会当任务完成时,AM向RM发送一条任务结束信息然后退出。如下图所示:


    展开全文
  • 我们以flink中自带的wordcount例子作为提交任务,查看在客户端Flink提交任务的详细源码步骤。 入口分析 首先我们看一下提交命令如下: bin/flink run examples/batch/WordCount.jar 接着会在bin/flink shell脚本中...

    我们以flink中自带的wordcount例子作为提交任务,查看在客户端Flink提交任务的详细源码步骤。

    入口分析

    首先我们看一下提交命令如下:

    bin/flink run  examples/batch/WordCount.jar
    

    接着会在bin/flink shell脚本中找到提交的主类org.apache.flink.client.cli.CliFrontend。我们从CliFrontend的main函数开始

    源码分析
    cli.parseParameters(args));// 解析参数+提交
    ==> 然后进到parseParameters方法,执行到switch case ACTION_RUN
    1 ==> run(params); ==> runProgram ==> 
    
    2 ==> 
    if (isNewMode && clusterId == null && runOptions.getDetachedMode()) {//yarn per job -d模式
     ...
    } else {
    	if (clusterId != null) {//standalone -d模式 和 yarn-session模式
    		client = clusterDescriptor.retrieve(clusterId);
    		shutdownHook = null;
    	} else {//job有多部分组成
    	}
    }
    
    ==>我们一个个看,先看yarn per job模式
    clusterDescriptor.deployJobCluster ==》 YarnClusterDescriptor.deployJobCluster() ==> AbstractYarnClusterDescriptor.deployInternal
    ==》 startAppMaster ==》yarnClient.submitApplication(appContext); 最后返回一个 ClusterClient<ApplicationId> ==> client关闭
    
    ==>接着看stand-alone模式
    clusterDescriptor.retrieve(clusterId); ===> StandaloneClusterDescriptor.retrieve 返回一个 RestClusterClient<StandaloneClusterId>类型的client
    
    ==>和yarn-session模式,yarn sesion模式 app已经启动,这里只需要通过 appid获取相关的appmaster 的 ip port ,返回一个ClusterClient<ApplicationId>类型的 client
    clusterDescriptor.retrieve(clusterId); ===> AbstractYarnClusterDescriptor.retrieve ===> createYarnClusterClient  ===> return  ClusterClient<ApplicationId>
    
    3 ===> 接着往下看到 executeProgram(program, client, userParallelism);
    ===》 JobSubmissionResult result = client.run(program, parallelism); //此时是RestClusterClient 提交任务
    ===》 prog.invokeInteractiveModeForExecution();  //反射调用 wordcount的main 函数
    ===》 执行到DataSet.print 会触发 ExecutionEnvironment.execute()执行 ,实际调用的是ContextEnvironment.execute()方法
    ===》调用ClusterClient.run方法,最后会调用RestClusterClient.submitJob()方法,将jobGraph 用rest请求提交到JobManager,至此客户端提交完成。
    
    stand-alone提交的堆栈

    右下往上依次为调用过程,可以对着源码仔细查看。

    	at org.apache.flink.client.program.rest.RestClusterClient.submitJob(RestClusterClient.java:261)
    	at org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:486)
    	at org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:474)
    	at org.apache.flink.client.program.ContextEnvironment.execute(ContextEnvironment.java:62)
    	at org.apache.flink.api.java.ExecutionEnvironment.execute(ExecutionEnvironment.java:817)
    	at org.apache.flink.api.java.DataSet.collect(DataSet.java:413)
    	at org.apache.flink.api.java.DataSet.print(DataSet.java:1652)
    	at org.apache.flink.examples.java.wordcount.WordCount.main(WordCount.java:88)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:529)
    	at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:421)
    	at org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:426)
    	at org.apache.flink.client.cli.CliFrontend.executeProgram(CliFrontend.java:816)
    	at org.apache.flink.client.cli.CliFrontend.runProgram(CliFrontend.java:290)
    	at org.apache.flink.client.cli.CliFrontend.run(CliFrontend.java:216)
    	at org.apache.flink.client.cli.CliFrontend.parseParameters(CliFrontend.java:1053)
    	at org.apache.flink.client.cli.CliFrontend.lambda$main$11(CliFrontend.java:1129)
    	at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1129)
    
    展开全文
  • Java操作Jenkins实现创建任务等操作(java-client

    千次阅读 热门讨论 2019-02-28 11:20:49
    Java操作Jenkins实现创建任务等操作(java-client) jenkins的基本配置 跨站设置:安装好jenkins后,先在系统管理—全局安全设置—取消跨站请求保护 组件设置:若使用maven、docker等组件,建议先在系统设置-全局...
  • client := camunda_client_go . NewClient (camunda_client_go. ClientOptions { EndpointUrl : "http://localhost:8080/engine-rest" , ApiUser : "demo" , ApiPassword : "demo" , Timeout : time . Second *...
  • Spark可以和Yarn整合,将Application提交到Yarn...1.yarn-client提交任务方式 配置 在client节点配置中spark-env.sh添加Hadoop_HOME的配置目录即可提交yarn 任务,具体步骤如下: export HADOOP_CONF_DIR=$HADO...
  • idea以yarn-client 提交任务到yarn

    千次阅读 2018-09-07 09:36:48
    鉴于很多小白经常问我如何用idea提交任务到yarn,这样测试的时候不用频繁打包。昨天,晚上健身回来录了一个小视频,说是小视频但是耗时也比较长,将近40min。可能是健身...
  • oVirt客户端可以支持oVirt 3.4、3.5、3.6和oVirt4.0、4.1、4.2
  • JAVA端通过Oozie Client 启动Oozie任务

    千次阅读 2015-09-07 16:39:56
    oozie虽然内置了条件触发,但有时当我们的触发条件比较...Workflow.xml指定任务内所需配置文件等信息,如hive的配置文件等。 需要注意必须指定user.name,否则将导致权限错误,使程序一直处于Hold状态。 1、JAVA端调用
  • 这是Mega-WeChat的Client Demo,主要的功能是发送模板消息任务,支持自定义模板内容,指定发送用户或群发所有用户。该项目是基于Yii实现,Client使用Swoole。 二话不说,先上效果图: 功能特性 发送微信模板消息 多...
  • 实验指导书 项目标号 1 项目名称 木马实验 学时 2 实验目的 掌握木马病毒的基本原理 实验原理 木马病毒原理 实验环境 VMware ...是木马server端源代码 是木马client端源代码 安装Visual Studio 6.0详见用Visual Studio
  • 咕噜摩卡客户端 在浏览器中运行 mocha 测试...使用grunt mocha-client命令运行此任务。 可以根据 grunt指南指定任务目标、文件和选项。 选项 漂亮 类型: Boolean默认值: true 标题 类型: String默认值: Test R
  • 以local模型和yarn-cluster方式提交任务,都能正确额执行,但是一yarn-client方式就卡在ACCEPTED 问题原因 在网上查了资料,都说是资源不够用,需要调整yarn.scheduler.capacity.maximum-am-resource-per...
  • 用idea提交任务到yarn,这样测试的时候不用频繁打包。 构建工程的命令: mvnarchetype:generate \ -DarchetypeGroupId=org.scala-tools.archetypes \ -DarchetypeArtifactId=scala-archetype-simple \ -...
  • 最近现场反馈采用yarn-cluster方式提交spark application后,在提交节点机上依然会存在一个yarn的client进程不关闭,又由于spark application都是spark structured streaming程序(application常年累月的执行),...
  • 版权声明:本文为博主原创文章,未经博主允许不得转载!! 欢迎访问:... 交流QQ: 824203453 ...hadoop版本: 2.8.0 spark 版本: 2.2.0 ...1.运行spark on yarn 任务简介 ...yarn集群运行spark任务有两种模...
  • Eureka客户端的定时任务详解,理解其内部的定时运转机制
  • 该项目是实习的任务。 该应用程序托管在Heroku上,可以在找到实时版本。 先决条件: 节点JS NPM Chrome(能够运行测试) 用法: # installing dependencies $ npm install # starting the server $ npm start ...
  • yarn-cluster和yarn-client方式的区别: yarn-cluster的ApplicationMaster在任一一台NodeManager上启动,申请启动的Executor反向注册到AM所在的NodeManager, 而yarn-client方式的用ExecutorLancher替代AM,...
  • 2、开发整天的monitor程序,用来定时向zk中获取server和client端的心跳数据信息,如果超过指定时间没有收到最新的数据包,那么任务server端或者client端死掉了,此时要删除该server或client端节点,发邮件通知相关...
  • 在Hive on spark中 设置spark.master 为 yarn-client , 提交HiveQL任务到yarn上执行,发现任务无法执行 输出一下错误: 可以看到 Hive on Spark 可以submit查询,但是任务无法执行。 因为我们设置的yarn-client ...
  • dwan-client-wiredmarker 注释后端客户端 T5.6 测试内容: : 更多信息请参考维基页面: : 基于 DWAN 有线标记的客户端根据知识共享许可获得许可。
  • POE-Component-Client-Websocket:兼容多任务(POE)的WebSocket客户端
  • 厨师客户食谱 该菜谱用于配置运行Chef Infra Client的系统。 要求 平台类 AIX 6+ 清除Linux 德比安 ... Chef_client_scheduled_task资源可设置Chef Infra Client,使其在Windows上作为计划任务运行。
  • DevExpress.MailClient.Win:使用DevExpress WinForms组件的待办任务列表演示
  •  一般是由于有多个用户同时向集群提交任务或一个用户向集群同时提交了多个任务导致Yarn资源的分配错误。解决这个问题,只需要更改Hadoop的配置文件:/etc/hadoop/conf/capacity-scheduler.xml,把选项:yarn....
  • 创建完全自定义的集群(包括GPU机器)以能够运行并行化的机器学习任务。 使用简单的json配置文件设置您的RL实验。 Tensorforce-client已经带有许多预定义的配置,可以直接使用。 通过您最喜欢的本地shell中的简单...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 253,279
精华内容 101,311
关键字:

如何删除client的任务与事件