zoukankan      html  css  js  c++  java
  • Jstorm调度定制化接口(0.9.5 及高版本)

    从JStorm 0.9.0 开始, JStorm 提供非常强大的调度功能, 基本上可以满足大部分的需求。

    在学习如何使用新调度前, 麻烦先学习 JStorm 0.9.0介绍 提供哪些功能

    接口

    设置每个worker的默认内存大小
    ConfigExtension.setMemSizePerWorker(Map conf, long memSize)
    设置每个worker的cgroup,cpu权重
    ConfigExtension.setCpuSlotNumPerWorker(Map conf, int slotNum)
    设置是否使用旧的分配方式
    ConfigExtension.setUseOldAssignment(Map conf, boolean useOld)
    设置强制某个component的task 运行在不同的节点上
    ConfigExtension.setTaskOnDifferentNode(Map componentConf, boolean isIsolate)

    注意,这个配置componentConf是component的配置, 需要执行addConfigurations 加入到spout或bolt的configuration当中

    自定义worker分配
    WorkerAssignment worker = new WorkerAssignment();
          worker.addComponent(String compenentName, Integer num);//在这个worker上增加一个task
          worker.setHostName(String hostName);//强制这个worker在某台机器上
          worker.setJvm(String jvm);//设置这个worker的jvm参数
          worker.setMem(long mem); //设置这个worker的内存大小
          worker.setCpu(int slotNum); //设置cpu的权重大小
          ConfigExtension.setUserDefineAssignment(Map conf, List<WorkerAssignment> userDefines)

    注:每一个worker的参数并不需要被全部设置,worker属性在合法的前提下即使只设置了部分参数也仍会生效

    强制topology运行在一些supervisor上

    在实际应用中, 常常一些机器部署了本地服务(比如本地DB), 为了提高性能, 让这个topology的所有task强制运行在这些机器上

    conf.put(Config.ISOLATION_SCHEDULER_MACHINES, List<String> isolationHosts);
    conf 是topology的configuration

    调度细则

    • 任务调度算法以worker为维度
    • 调度过程中正在进行的调度动作不会对已发生的调度动作产生影响
    • 调度过程中用户可以自定义useDefined Assignment,和使用已有的old Assignment,这两者的优先级是:useDefined Assignment>old Assignment
    • 用户可以设置task.on.differ.node参数,强制要求同组件的task分布到不同supervisor上

    默认调度算法

    • 以worker为维度,尽量将worker平均分配到各个supervisor上
    • 以worker为单位,确认worker与task数目大致的对应关系(注意在这之前已经其他拓扑占用利用的worker不再参与本次动作)
    • 建立task-worker关系的优先级依次为:尽量避免同类task在同一work和supervisor下的情况,尽量保证task在worker和supervisor基准上平均分配,尽量保证有直接信息流传输的task在同一worker下
  • 相关阅读:
    SSAS没有注册类别 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)) 解决办法
    Javascript中暂停功能的实现
    【转】JQuery ajax json 实例
    SqlDataAdapter有关InsertCommand,UpdateCommand,DeleteCommand 实例
    绑定数组对象DataTable.Select返回值DataRow[]
    SQL SERVER 联想函数重写
    JQuery Dialog(转)
    温习C 文件操作
    轻松掌握Windows窗体间的数据交互
    反射方法调用时的一个错误:参数计数不匹配( parameter count mismatch )
  • 原文地址:https://www.cnblogs.com/catkins/p/5866122.html
Copyright © 2011-2022 走看看