精华内容
下载资源
问答
  • Scheduler

    2018-10-28 12:21:10
    如果要向相关的Observable操作符引入多线程,可给操作符(或特定Observable对象)指定Scheduler。 有些ReactiveX Observable操作符具有带Scheduler参数的变体。指示操作符在特定的Scheduler上下文上执行。 默认,...

    如果要向相关的Observable操作符引入多线程,可给操作符(或特定Observable对象)指定Scheduler

    有些ReactiveX Observable操作符具有带Scheduler参数的变体。指示操作符在特定的Scheduler上下文上执行。

    默认,Observable及其操作链将会执行其操作,并向观察者发送通知,这些都是在与订阅方法相同的线程上执行。

    SubscribeOn操作符改变了这个规则,指定一个不同的Scheduler执行Observable操作。

    ObserveOnoperator指定Observable在不同的Scheduler向观察者发送通知。

    如上所述,SubscribeOn操作符指定Observable开始执行的线程,无视操作符处于操作符链的位置。另一方面,ObserveOn影响Observable所在线程优先级低于操作符。因此,可能会在Observable操作符链上调用多次ObserveOn,调整操作符执行的线程。

    If you want to introduce multithreading into your cascade of Observable operators, you can do so by instructing those operators (or particular Observables) to operate on particular Schedulers.

    Some ReactiveX Observable operators have variants that take a Scheduler as a parameter. These instruct the operator to do some or all of its work on a particular Scheduler.

    By default, an Observable and the chain of operators that you apply to it will do its work, and will notify its observers, on the same thread on which its Subscribe method is called. The SubscribeOn operator changes this behavior by specifying a different Scheduler on which the Observable should operate. The ObserveOnoperator specifies a different Scheduler that the Observable will use to send notifications to its observers.

    As shown in this illustration, the SubscribeOn operator designates which thread the Observable will begin operating on, no matter at what point in the chain of operators that operator is called. ObserveOn, on the other hand, affects the thread that the Observable will use below where that operator appears. For this reason, you may call ObserveOn multiple times at various points during the chain of Observable operators in order to change on which threads certain of those operators operate.

    更多见

    特定语言实现:

    RxClojure

    RxCpp

    RxGroovy

    RxJava 1․x

    RxJS

    RxKotlin

    RxNET

    RxPY

    Rxrb

    RxScala

    展开全文
  • scheduler

    千次阅读 2015-08-25 17:57:01
    #!/bin/bash MASTER_ADDRESS=${1:-".../opt/kubernetes/cfg/kube-scheduler KUBE_SCHEDULER_OPTS="--logtostderr=true \\ --v=4 \\ --master=${MASTER_ADDRESS}:8080 \\ --leader-e...
    #!/bin/bash
    
    MASTER_ADDRESS=${1:-"127.0.0.1"}
    
    cat <<EOF >/opt/kubernetes/cfg/kube-scheduler
    
    KUBE_SCHEDULER_OPTS="--logtostderr=true \\
    --v=4 \\
    --master=${MASTER_ADDRESS}:8080 \\
    --leader-elect"
    
    EOF
    
    cat <<EOF >/usr/lib/systemd/system/kube-scheduler.service
    [Unit]
    Description=Kubernetes Scheduler
    Documentation=https://github.com/kubernetes/kubernetes
    
    [Service]
    EnvironmentFile=-/opt/kubernetes/cfg/kube-scheduler
    ExecStart=/opt/kubernetes/bin/kube-scheduler \$KUBE_SCHEDULER_OPTS
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    systemctl daemon-reload
    systemctl enable kube-scheduler
    systemctl restart kube-scheduler


    展开全文
  • Dolphin Scheduler Official Website dolphinscheduler.apache.org Design Features: DolphinScheduler is a distributed and extensible workflow scheduler platform with powerful DAG visual ...
  • Quartz Scheduler

    2019-03-31 15:49:33
    Scheduler & QuartzScheduler & QuartzSchedulerThread & ThreadExecutor(DefaultThreadExecutor) & ThreadPool(SimpleThreadPool and WorkThread)是Quartz调度任务的核心类, Schedul...

    SchedulerFactory & Scheduler & QuartzScheduler & QuartzSchedulerThread & ThreadExecutor(DefaultThreadExecutor) & ThreadPool(SimpleThreadPool and WorkThread)是Quartz调度任务的核心类,

    Scheduler

    SchedulerFactory负责收集配置信息,然后初始化Scheduler需要的资料,然后创建一个Scheduler对象
    Scheduler的信息存储在QRTZ_scheduler_state表中;
    scheduler的check;

    SchedulerContext的配置方法
    org.quartz.context.key.SOME_KEY=SOME_VALUE
    SchedulerContext有什么用?Quartz默认一般都用来存储什么信息?

    Scheduler实例持有一个QuartzSchedulerThread对象,Scheduler中负责启动此线程。

    QuartzSchedulerThread是大老板,获取Trigger及Trigger关联的Job和其他相关信息,包装成JobRunShell,调用SimpleThreadPool#runInThread传递给包工头SimpleThreadPool,SimpleThreadPool包工头下面有很多干活的工人WorkThread,这些干活的工人最大的特点就是干完一个任务可以接着干另一个任务,WorkThread对象可以复用;SimpleThreadPool有个小本本,记录着哪些工人忙着,哪些工人闲着,availWorkers,busyWorkers字段;如果来了一个任务,没有空闲的工人,就需要等着。

    QuartzSchedulerThread

    org.quartz.scheduler为前缀的配置中,有相当一部分是给QuartzSchedulerThread配置的;

    org.quartz.scheduler.threadName:Scheduler持有的QuartzSchedulerThread的线程的名称,默认是Scheduler_Name+"_QuartzSchedulerThread"
    org.quartz.scheduler.makeSchedulerThreadDaemon:Scheduler持有的QuartzSchedulerThread的线程的名称是否设置成Deamon
    org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer:是否集成初始化器的ClassLoader,在StdSchedulerFactory中初始化QuartScheduler对象,在QuartScheduler中初始化QuartzSchedulerThread,在QuartzSchedulerThread中设置本线程执行时使用的ContextClassLoader,也就是说如果设置成true,跟Scheduler在一个ContextClassLoader
    org.quartz.scheduler.idleWaitTime:这个配置最终是给QuartzScheudlerThread使用的,QuartzScheudlerThread的run方法里会用到此参数的值,run方法的while循环再处理完Triggers之后,会使用此值计算一个等待时间,让线程等待一段时间啥也不做,也就是让线程空闲一段时间;
    org.quartz.scheduler.batchTriggerAcquisitionMaxCount:这个配置最终是给QuartzScheudlerThread使用的,用来jobStore#acquireNextTriggers的时候使用,用来一次性获取的最大的Trigger数;
    org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow:从Trigger表里查询将要fire的Triggers的时候,不能等到now=next_fire_time的时候再触发,程序本身还有运行的时间,这个时候需要指定一个提前的时间窗口。

    已jdbcjobstore为例:
    查询next fire triggers的时候,需要org.quartz.jobStore.misfireThreshold/org.quartz.scheduler.idleWaitTime/org.quartz.scheduler.batchTriggerAcquisitionMaxCount/org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow
    最终生成的查询语句的条件是

    now-threshold<=next_fire_time<=now+idlewaittime+timewinodw

    now-threshold<=next_fire_time的意思是查询还没有misfire的Trigger
    如果next_fire_time>now+idlewaittime+timewinod,也就是说放到下次查询触发这些tiggers,也晚不了;也就是说next_fire_time<=now+idlewaittime+timewinodw查询的是,不能放到下次查询触发,不然就晚了的Triggers。

    org.quartz.scheduler.dbFailureRetryInterval:QuartzSchedulerThread从JobStore获取Triggers的时候,可能会因为JobStore持有的Connection比如JdbcConnection失效,QuartzSchedulerThread的run方法内是个whhile循环,在下一次循环尝试获取的时候,需要使用Thread.sleep让QuartzSchedulerThread睡一会,这个一会就是根据此配置的值计算出来的。

    org.quartz.scheduler.classLoadHelper.class:scheuler运行过程中实例化类什么的用的ClassLoader

    org.quartz.scheduler.jobFactory.class:在生成jobDetails对象的时候,我们指定的是一个类名,也就是说这个类需要实例化,然后执行实例化后的对象的execute方法,jobFactory就是用来实例化job的。这个地方可以扩展的原因是,生成job之后,我们可以做很多的工作,比如SpringBeanJobFactory增加了给Job对象注入Spring IOC容器内的Bean的能力;Quartz内置的PropertSeetingJobFactory可以将JobDataMap里的信息注入到Job对象的set方法;

    ThreadExecutor

    ThreadExecutor,线程执行器,提供了两种实现
    DefaultThreadExecutor和WorkManagerThreadExecutor
    DefaultThreadExecutor直接调用thread.start()启动线程
    WorkManagerThreadExecutor是试用commonj执行线程
    ThreadExecutor一个Scheduler持有一个,在ScheduleFactory中被初始化之后,在三个地方使用到了,ClusterManager MifireHandler 和在QuartzScheduler中启用QuartzSchedulerThread线程,这三个线程是quartz的三个主线程,所有的活都是这三个线程干的。

    org.quartz.threadExecutor.class

    ThreadPool

    ThreadPool是用来执行用户提交的Job的,一个Scheduler对象一个;
    QuartzScheulerThread的作用是从JobStore取出Trigger执行关联的job,使用JobRunShell这个Java Runnable的实现包裹关联的Job,然后将Job放到ThreadPool中执行;
    SimpleThreadPool实现解析,

    org.quartz.threadPool.class
    org.quartz.threadPool.threadCount
    org.quartz.threadPool.threadPriority
    SimpleThreadPool
    org.quartz.threadPool.makeThreadsDaemons
    org.quartz.threadPool.threadsInheritGroupOfInitializingThread
    org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread
    org.quartz.threadPool.threadNamePrefix

    注解

    1. DisallowConcurrentExecution
    2. ExecutionInJTATranaction
    3. PersistJobDataAfterExecution:QRTZ_JOB_DETAILS表中的Job_DATA字段,如果在Job类上添加了PersistJobDataAfterExecution注解,会序列化到此字段;是Java 序列化

    参考

    如何让一个Quartz实例不执行任务:此博客展示了一个ThreadExecutor的高级用法,通过自定义一个ThreadExecutor,达到不启用这三个线程的目的;

    展开全文
  • Hadoop: Fair Scheduler

    万次阅读 2020-10-10 12:09:56
    默认情况下,Fair Scheduler只基于内存来保证公平分配,通过配置yarn.scheduler.fair.cpu-scheduling-enabled为true,可以基于内存+CPU来分配资源。 当只有一个application在运行时,它可以使用整个集群资源。当其他...

    介绍

    Fair Scheduler是公平分配YARN资源的方法之一。默认情况下,Fair Scheduler只基于内存来保证公平分配,通过配置yarn.scheduler.fair.cpu-scheduling-enabled为true,可以基于内存+CPU来分配资源。
    当只有一个application在运行时,它可以使用整个集群资源。当其他app提交后,资源会被释放并分配给新来的app,这样就能保证大家拥有大致相同的资源。Fair Scheduler还可以根据每个app的权重、优先级来确定分配资源的比例。

    Fair Scheduler基于队列概念,在队列和队列之间公平分配资源。默认default队列,用户也可以指定队列,还可以根据用户来配置其能够提交的队列。在每个队列中,也有一个资源调度策略,默认是基于内存的公平策略,还有FIFO等。

    除了公平分配资源,Fair Scheduler还能控制每个队列最少获取资源数,来保证该队列下的app至少能获取到的资源。不过当该队列的任务没有用到最小资源数,那这些资源也会分给其他队列使用。(看到这里可能会有疑惑,资源不够时需要evict其他队列share的资源,这个策略是如何实现的?之后会有写Fair Scheduler原理的文章)

    Fair Scheduler还可以限制每个用户和每个队列正在执行的app数,这个特性会在当某个用户同时提交大量app时,会产生过多的intermediate数据或者上下文切换。限制app执行数,对于后来的app不会直接失败,而是排在队列中等待。

    可插拔策略实现的分级队列

    分级队列不难理解,有一级、二级、三级…N级队列,如:

    root:
    	root.default
    	root.low:
    			root.low.offline
    			root.low.realtime
    	root.middle
    	root.high
    

    每个队列中的资源分配策略可以通过org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.SchedulingPolicy来设置,默认为FairSharePolicy,可以设置为FifoPolicy/DominantResourceFairnessPolicy。

    为app自动选择执行队列

    Fair Scheduler可以由管理员配置对提交app自动选择队列的策略。该策略依据用户、所在用户组以及app指定的队列。这些策略控制了队列接受/拒绝或者继续执行下一个策略的逻辑,具体在fair-scheduler.xml中配置。

    配置

    在yarn-site.xml中添加:

    <property>
      <name>yarn.resourcemanager.scheduler.class</name>
      <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
    </property>
    

    参数

    参数分两种,一种是在yarn-site.xml中配置,如开启Fair Scheduler等,另一种是fair-scheduler.xml中配置队列的参数,如配置队列层级,队列提交用户限制、资源数等,这种配置修改后可以使用命令yarn rmadmin –refreshQueues,无需重启YARN即可生效。由于参数很多,这边就不做详细介绍了,需要可以参考官方文档

    在队列之间移动application

    Fair Scheduler支持移动正在执行的app到其他队列。我们可以将某个任务往高优先级队列移动,也可以向低优先级队列移动来降低它的优先级。移动命令:yarn application -movetoqueue appID -queue targetQueueName
    当任务移过去后,资源消耗会从原队列扣除并加到新队列中。如果新队列超过了最大执行app数或者资源分配超过了上限,则此次move会失败。

    总结

    本文简单介绍了Fair Scheduler,后续在研究代码之后会另写一篇实现。

    笔者对文章有略微改动,加入了些个人理解并更通俗易懂,如想阅读官方文档请戳:Hadoop: Fair Scheduler

    展开全文
  • TaskScheduler

    2019-04-10 00:53:30
    一、TaskScheduler的初始化 在SparkContext中创建。
  • rufus-scheduler' scheduler = Rufus::Scheduler.new scheduler.every('2s') do puts 'Test' end scheduler = Rufus::Scheduler.new # Test # Test # (...) scheduler = nil # ...
  • 安装pip install apscheduler基础组件四大基础组件类型:triggersjob storesexecutorsschedulers组件:BlockingScheduler: use when the scheduler is the only thing running in your processBackgrou...
  • Dolphin Scheduler Official Website dolphinscheduler.apache.org Dolphin Scheduler for Big Data Design features: A distributed and easy-to-extend visual DAG workflow scheduling system. ...
  • <p>In the scheduler file if scheduler 1 is above scheduler 2 and takes say 3 minutes to complete the task, the scheduler 2 is not executed at all. Am I missing something or is there a work around to ...
  • 1、Fair Scheduler Facebook开发的适合共享环境的调度器,支持多用户多分组管理,每个分组可以配置资源量,也可限制每个用户和每个分组中的并发运行作业数量;每个用户的作业有优先级,优先级越高分配的资源越多。 ...
  • Quartz Scheduler详解

    2018-04-03 16:10:50
    很不错的quarts scheduler的学习书籍,能帮助初学者快速的入门quarts scheduler框架和运用。
  • APScheduler Scheduler

    2020-08-15 09:59:19
    负责管理定时任务 对于BlockingScheduler ,程序会阻塞在这,防止退出 对于BackgroundScheduler,程序会立即...scheduler = BlockingScheduler() scheduler.start() # 此处程序会发生阻塞 BackgroundScheduler: 在框
  • scheduler的优化

    2021-01-08 10:01:51
    if(scheduler.count && !scheduler.setTimeoutID){ scheduler.setTimeoutID = setTimeout(function(){ console.log(scheduler.count, 'mountComponent') scheduler.run() scheduler....
  • Scheduler模块

    2020-05-02 17:33:25
    概述:Scheduler模块有两个重要的组件,DAGScheduler与TaskScheduler。DAGScheduler主要负责分析用户提交的应用,并根据任务的依赖关系建立DAG,然后将DAG划分为不同的stage,其中每个stage由一组可以并发执行的task...
  • ProxySQL Scheduler

    2018-08-31 18:16:00
    Scheduler scheduler特性是在ProxySQL v1.2.0引入的。 scheduler是一个类似cron的调度器,已经被集成到ProxySQL中了,粒度可以达到毫秒级。通过admin即可配置:目前不支持配置文件配置,将来也没这个打算 ...
  • DolphinScheduler使用文档

    万次阅读 2020-03-10 11:37:24
    工作流任务调度系统:Apache DolphinScheduler 工作流任务调度系统:Apache DolphinScheduler 一、文档说明 1.1 DolphinScheduler 说明 1.2 相关网址 1.3 名词解释 1.4 DolphinScheduler 架构 1.4.1 Master...
  • <div><p>Use chaos monkey specific scheduler to avoid multiple scheduler conflict issue when we have more than one scheduler already defined in the application code <p><strong>What</strong>: ...
  • DBMS SCHEDULER

    2016-05-03 17:29:19
    DBMS SCHEDULER DBMS_SCHEDULERis a more sophisticated job scheduler introduced i...
  • 3)org.apache.spark.scheduler.TaskScheduler 其中1,3在上篇的图示里面有,而org.apache.spark.scheduler.SchedulerBackend是一个trait,作用是:分配当前可用的资源 ——就是给Task分配计算资源(Execut.
  • yarn FairScheduler 与 CapacityScheduler CapacityScheduler(根据计算能力调度) CapacityScheduler 允许多个组织共享整个集群, 每个组织可以获得集群的一部分计算能力。通过为每个组织分配专门的队列, 然后再为每...
  • 浅谈Scheduler

    万次阅读 2019-09-26 18:09:18
    转载地址:... 1.Scheduler工厂模式 所有的Scheduler实例应该由SchedulerFactory来创建 2.SchedulerFactory类图  最常用的是StdSchedulerFactory工程类,其出那个键Scheduler的两种方式: ...
  • 工作流任务调度系统:Apache DolphinScheduler

    万次阅读 多人点赞 2019-10-28 16:21:51
    Apache DolphinScheduler(目前处在孵化阶段,原名为EasyScheduler)是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开...
  • YARN FairScheduler

    2018-03-01 14:38:56
    本文档介绍FairScheduler,一个hadoop Scheduler,在大规模集群中允许YARN中的applications公平的共享集群资源。 一、介绍 FairScheduler是一个资源分配方式,在整个时间线上,所有的applications平均的获取资源。...
  • JobScheduler

    2018-04-25 12:07:40
    为了节省电量节省用户流量,需要在充电状态和WiFi时去执行某一后台耗时操作,而service并不能直接支持,需要自己去加入功能监听...工作调度(JobScheduler)介绍:This is an API for scheduling various types of j...
  • 扩展Kubernetes Scheduler

    2020-05-19 22:29:55
    扩展Kubernetes Scheduler零、Scheduler扩展简介一、环境准备二、构建项目三、Scheduler配置四、验证自定义调度是否有效 转载请注明出处即可。 所使用源码k8s源码为release-1.18 如果对K8s的Scheduler不是很了解,...
  • 本文是Scheduler模块源码分析的第二篇,第一篇Spark Scheduler模块源码分析之DAGScheduler主要分析了DAGScheduler。本文接下来结合Spark-1.6.0的源码继续分析TaskScheduler和SchedulerBackend。
  • <div><p>2018-02-06 22:57:56.732 INFO 11432 --- [ler [scheduler]] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now, after delay of 10 seconds 2018-02-06 22:57:56.764 INFO 11432 --- ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,194
精华内容 16,477
关键字:

scheduler