精华内容
下载资源
问答
  • dolphinscheduler 参数及日期处理

    千次阅读 2021-07-16 01:33:23
    dolphinscheduler 参数 dolphinscheduler 参数关键点: 不支持上下游传递,即上游的out给下游作为in输入 不支持在启动流程时候配置参数 有全局参数,可以在每个task使用 OUT参数貌似只用于存储过程输出 sql参数...

    dolphinscheduler 参数

    dolphinscheduler 参数关键点:

    • 不支持上下游传递,即上游的out给下游作为in输入
    • 不支持在启动流程时候配置参数
    • 有全局参数,可以在每个task使用
    • OUT参数貌似只用于存储过程输出

    sql参数处理

    sql参数类似preparedStatment,将${para}转为?,然后赋值,看woker日志可以有如下类似内容:

    [INFO] 2021-07-15 23:47:54.910  - [taskAppId=TASK-5-100-223]:[126] - Full sql parameters: SqlParameters{
       type=
    展开全文
  • dolphinscheduler 日期转换及参数测试流程
  • Apache DolphinScheduler(incubator,原EasyScheduler)是一个大数据分布式工作流任务调度系统,主要解决大数据研发过程中ETL处理错综复杂的依赖关系,而不能直观监控任务健康状态等问题。DolphinScheduler以DAG流式...
  • 基于DolphinScheduler构建大数据调度平台,课程会带大家构建DolphinScheduler大数据调度平台,实战讲解多种任务调度配置,会基于案例讲解DolphinScheduler使用,让大家在实战中掌握DolphinScheduler
  • 1. 通过DolphinScheduler参数传递到flink 程序中。 2.定义工作流程 3. flink 代码程序:测试代码 package com.wudl.flink.instance; import org.apache.flink.api.common.functions.MapFunction; import org....

    1. 通过DolphinScheduler 将参数传递到flink 程序中。

    2.定义工作流程

    在这里插入图片描述

    3. flink 代码程序:测试代码

    package com.wudl.flink.instance;
    
    import org.apache.flink.api.common.functions.MapFunction;
    import org.apache.flink.api.common.functions.RichFilterFunction;
    import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
    import org.apache.flink.api.java.DataSet;
    import org.apache.flink.api.java.ExecutionEnvironment;
    import org.apache.flink.api.java.io.jdbc.JDBCInputFormat;
    import org.apache.flink.api.java.io.jdbc.JDBCOutputFormat;
    import org.apache.flink.api.java.tuple.Tuple3;
    import org.apache.flink.api.java.typeutils.RowTypeInfo;
    import org.apache.flink.api.java.utils.ParameterTool;
    import org.apache.flink.types.Row;
    import org.apache.hadoop.mapreduce.Job;
    
    import java.util.stream.Stream;
    
    /**
     * @ClassName : WriteToMysql
     * @Description : flink-jdbc
     * @Author :wudl
     * @Date: 2021-08-01 20:36
     */
    
    public class WriteToMysql {
    
        public static void main(String[] args) throws Exception {
            System.out.println("----------args" + args);
            System.out.println("----------args" + args.toString());
            for (int i = 0; i < args.length; i++) {
                System.out.println("-----i---" + args[i]);
            }
    
            ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
            System.out.println("------------------------");
            ParameterTool parameterTool = ParameterTool.fromArgs(args);
            ParameterTool parameter = ParameterTool.fromSystemProperties();
            System.out.println("88888" + parameter.getNumberOfParameters());
            System.out.println("888884545555" + parameter.toString());
            System.out.println("fromSystemProperties--------" + parameter.get("programType"));
            System.out.println("fromSystemProperties2222-----------" + parameter.get("java"));
            System.out.println("fromSystemProperties2222-333----------" + parameter.get("mainClass"));
            System.out.println("88888" + parameter.getNumberOfParameters());
            System.out.println("88888" + parameter.getNumberOfParameters());
            System.out.println("88888" + parameter.getNumberOfParameters());
    
            System.out.println("打印参数----" + parameterTool.toString());
            System.out.println("********111**********" + parameterTool.get("java"));
            System.out.println("********111programType**********" + parameterTool.get("programType"));
            System.out.println("********111resourceList**********" + parameterTool.get("resourceList"));
            System.out.println("*******2222***********" + parameterTool.getProperties().getProperty("java"));
            System.out.println("*******3333***********" + parameterTool.getProperties().get("java"));
            System.out.println("*******3333***********" + parameterTool.getProperties().toString());
            System.out.println("*******3333***********" + parameterTool.getProperties());
            System.out.println("*******3333***********" + parameterTool.getProperties());
    
            System.out.println("");
    //        env.getConfig().setGlobalJobParameters(parameterTool);
    
            DataSet<Row> inputMysql = env.createInput(JDBCInputFormat.buildJDBCInputFormat()
                    //配置数据库连接信息
                    .setDrivername("com.mysql.jdbc.Driver")
                    .setDBUrl("jdbc:mysql://192.168.1.162:3306/test")
                    .setUsername("root")
                    .setPassword("123456")
                    .setQuery("select * from testtable")
                    //设置查询的列的类型,根据实际情况定
                    .setRowTypeInfo(new RowTypeInfo(BasicTypeInfo.INT_TYPE_INFO, BasicTypeInfo.STRING_TYPE_INFO))
                    .finish());
    
    
            inputMysql.print();
            System.out.println("************");
    //
    //        inputMysql.map(new MapFunction<Row, String>() {
    //            @Override
    //            public String map(Row value) throws Exception {
    //                System.out.println(value);
    //                return value.toString();
    //            }
    //        }).print();
    
            //mysql连接
            String driverClass = "com.mysql.jdbc.Driver";
            String dbUrl = "jdbc:mysql://192.168.1.162:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true ";
            String userNmae = "root";
            String passWord = "123456";
            String sql = "insert into testtable02 (id,mamer) values (?,?)";
            //将数据写入mysql数据库
            inputMysql.output(JDBCOutputFormat.buildJDBCOutputFormat()
                    .setDrivername("com.mysql.jdbc.Driver")
                    .setDBUrl("jdbc:mysql://192.168.1.162:3306/test")
                    .setUsername("root")
                    .setPassword("123456")
                    .setQuery(sql)
                    .finish());
            //这个必须要执行,否则看不到结果
            Job job = Job.getInstance();
            env.execute("insert into mysql");
        }
    
    //    class FilterGenreWithGlobalEnv extends RichFilterFunction<Tuple3<Long, String, String>> {
    //        @Override
    //        public boolean filter(Tuple3<Long, String, String> movie) throws Exception {
    //            String[] genres = movie.f2.split(",");
    //            // Get global parameters
    //            ParameterTool parameterTool = (ParameterTool) getRuntimeContext().getExecutionConfig().getGlobalJobParameters();
    //            // Read parameter
    //            String genre = parameterTool.get("genre");
    //            return Stream.of(genres).anyMatch(g -> g.equals(genre));
    //        }
    //    }
    
    }
    

    4. 日志:

    [INFO] 2021-08-03 00:31:22.695  - [taskAppId=TASK-16-66-76]:[115] - create dir success /tmp/dolphinscheduler/exec/process/5/16/66/76
    [INFO] 2021-08-03 00:31:23.484  - [taskAppId=TASK-16-66-76]:[70] - flink task params {"mainArgs":" -path kkkkkkkkkkkkkkkkkk,hhhhhhhhhhhhhhhhhh","programType":"JAVA","mainClass":"com.wudl.flink.instance.WriteToMysql","deployMode":"local","appName":"","parallelism":1,"taskManagerMemory":"2G","mainJar":{"id":9},"slot":1,"flinkVersion":"<1.10","taskManager":"2","localParams":[],"others":"","resourceList":[{"res":"wudl-2021.jar","name":"wudl-2021.jar","id":9}],"jobManagerMemory":"1G"}
    [INFO] 2021-08-03 00:31:23.489  - [taskAppId=TASK-16-66-76]:[90] - param Map : {}
    [INFO] 2021-08-03 00:31:23.489  - [taskAppId=TASK-16-66-76]:[93] - param args :  -path kkkkkkkkkkkkkkkkkk,hhhhhhhhhhhhhhhhhh
    [INFO] 2021-08-03 00:31:23.489  - [taskAppId=TASK-16-66-76]:[110] - flink task args : [flink, run]
    [INFO] 2021-08-03 00:31:23.489  - [taskAppId=TASK-16-66-76]:[117] - flink task command : flink run -p 1 -sae -c com.wudl.flink.instance.WriteToMysql wudl-2021.jar  -path kkkkkkkkkkkkkkkkkk,hhhhhhhhhhhhhhhhhh
    [INFO] 2021-08-03 00:31:23.490  - [taskAppId=TASK-16-66-76]:[87] - tenantCode user:hdfs, task dir:16_66_76
    [INFO] 2021-08-03 00:31:23.490  - [taskAppId=TASK-16-66-76]:[92] - create command file:/tmp/dolphinscheduler/exec/process/5/16/66/76/16_66_76.command
    [INFO] 2021-08-03 00:31:23.490  - [taskAppId=TASK-16-66-76]:[111] - command : #!/bin/sh
    BASEDIR=$(cd `dirname $0`; pwd)
    cd $BASEDIR
    source /ds1.3.6/conf/env/dolphinscheduler_env.sh
    flink run -p 1 -sae -c com.wudl.flink.instance.WriteToMysql wudl-2021.jar  -path kkkkkkkkkkkkkkkkkk,hhhhhhhhhhhhhhhhhh
    [INFO] 2021-08-03 00:31:23.491  - [taskAppId=TASK-16-66-76]:[327] - task run command:
    sudo -u hdfs sh /tmp/dolphinscheduler/exec/process/5/16/66/76/16_66_76.command
    [INFO] 2021-08-03 00:31:23.491  - [taskAppId=TASK-16-66-76]:[208] - process start, process id is: 28836
    [INFO] 2021-08-03 00:31:24.496  - [taskAppId=TASK-16-66-76]:[129] -  -> Setting HBASE_CONF_DIR=/etc/hbase/conf because no HBASE_CONF_DIR was set.
    [INFO] 2021-08-03 00:31:25.497  - [taskAppId=TASK-16-66-76]:[129] -  -> ----------args[Ljava.lang.String;@6f44a157
    	----------args[Ljava.lang.String;@6f44a157
    	-----i----path
    	-----i---kkkkkkkkkkkkkkkkkk,hhhhhhhhhhhhhhhhhh
    	------------------------
    	8888858
    	888884545555org.apache.flink.api.java.utils.ParameterTool@c01d802a
    	fromSystemProperties--------null
    	fromSystemProperties2222-----------null
    	fromSystemProperties2222-333----------null
    	8888858
    	8888858
    	8888858
    	打印参数----org.apache.flink.api.java.utils.ParameterTool@7cf5ec2d
    	********111**********null
    	********111programType**********null
    	********111resourceList**********null
    	*******2222***********null
    	*******3333***********null
    	*******3333***********{path=kkkkkkkkkkkkkkkkkk,hhhhhhhhhhhhhhhhhh}
    	*******3333***********{path=kkkkkkkkkkkkkkkkkk,hhhhhhhhhhhhhhhhhh}
    	*******3333***********{path=kkkkkkkkkkkkkkkkkk,hhhhhhhhhhhhhhhhhh}
    	
    [INFO] 2021-08-03 00:31:29.509  - [taskAppId=TASK-16-66-76]:[129] -  -> Job has been submitted with JobID d81184dbdcaf2feffed43e42b90361fd
    [INFO] 2021-08-03 00:31:31.511  - [taskAppId=TASK-16-66-76]:[129] -  -> Program execution finished
    	Job with JobID d81184dbdcaf2feffed43e42b90361fd has finished.
    	Job Runtime: 1335 ms
    	Accumulator Results: 
    	- 8aa67122e79dada47a718555a8fe18fd (java.util.ArrayList) [6 elements]
    	
    	
    	1,hdfs
    	2,hive
    	3,111
    	4,222222222222222
    	5,33333333333333
    	6,44444444444444444
    	************
    [INFO] 2021-08-03 00:31:37.706  - [taskAppId=TASK-16-66-76]:[217] - process has exited, execute path:/tmp/dolphinscheduler/exec/process/5/16/66/76, processId:28836 ,exitStatusCode:0
    [INFO] 2021-08-03 00:31:38.514  - [taskAppId=TASK-16-66-76]:[129] -  -> Job has been submitted with JobID b27f2f535c664cf95eeb4b9608ae3fa8
    	Program execution finished
    	Job with JobID b27f2f535c664cf95eeb4b9608ae3fa8 has finished.
    	Job Runtime: 1960 ms
    	
    
    

    5. 核心点就在将参数伪装成 -path 输出路径, 因为path 不影响命令的执行。

    可以看出flink 执行的命令:
    flink run -p 1 -sae -c com.wudl.flink.instance.WriteToMysql wudl-2021.jar -path kkkkkkkkkkkkkkkkkk,hhhhhhhhhhhhhhhhhh

    6. 可以采用接口调用 save 接口调用伪装参数

    展开全文
  • 在Apache DolphinScheduler 海豚调度器(本文简称:小海豚) 官网中,我们看到其自定义时间的参数是这样介绍的 1.支持代码中自定义变量名,声明方式:${变量名}。可以是引用 "系统参数" 或指定 "常量"。 2.我们...

    在Apache DolphinScheduler 海豚调度器(本文简称:小海豚) 官网中,我们看到其自定义时间的参数是这样介绍的

    1.支持代码中自定义变量名,声明方式:${变量名}。可以是引用 "系统参数" 或指定 "常量"。

    2.我们定义这种基准变量为 [...] 格式的,[yyyyMMddHHmmss] 是可以任意分解组合的,比如:$[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd] 等

    3.也可以使用以下格式:

    * 后 N 年:$[add_months(yyyyMMdd,12*N)]
    * 前 N 年:$[add_months(yyyyMMdd,-12*N)]


    * 后 N 月:$[add_months(yyyyMMdd,N)]
    * 前 N 月:$[add_months(yyyyMMdd,-N)]
    * 后 N 周:$[yyyyMMdd+7*N]
    * 前 N 周:$[yyyyMMdd-7*N]
    * 后 N 天:$[yyyyMMdd+N]
    * 前 N 天:$[yyyyMMdd-N]
    * 后 N 小时:$[HHmmss+N/24]
    * 前 N 小时:$[HHmmss-N/24]
    * 后 N 分钟:$[HHmmss+N/24/60]
    * 前 N 分钟:$[HHmmss-N/24/60]

    以上是可以满足大部分时间需求,但有些我们会受到常规java逻辑思维影响,导致不能很好的使用这些自定时间。

    比如:$[yyyyMM-1],首先我们会受到java思维的影响,认为yyyyMM-1就是当上一个月的年月时间。实际上,$[yyyyMM-1]表示的是昨天的年月。

    一般小海豚自定义时间格式有两种:

    1.调用函数add_months()函数的:这种是用来加减月份的。

    这种有两个参数,第一个是返回时间的格式(如yyyyMM,202012),第二个加减多少个月(如,输入-2,则代表前2个月的时间)

    2.直接+-数字的:这种用来加减天数的。

    这种直接输入数字的,不管你输入的时间格式是yyyyMM或者是HHHHmmss都无所谓,这个数字只代表加减多少天(比如-2,就代表两天前的时间)

    他的自定义时间规律是这样的:先进行加减月/日计算,再将其转化为指定格式输出

    就拿上述的$[yyyyMM-1]来说,它是先对当前时间进行减去一天,然后再转换为yyyyMM的格式输出。打个比方:今天是2020年03月02日,那么他会“2020年03月02日”减去一天,就得到“2020年03月01日”这个数据,接着再转化为yyyyMM输出,输出202003。

    我们java传统意义上的yyyyMM-1是指当前月份的上个月。比如,今天是2020年03月02日,yyyyMM-1之后会输出202002,这是java编程中的思维,跟小海豚的思维还是有点不一致。

    小海豚自定义时间参数中遇到的问题:

    我在大数据批处理中,有时候会碰到一些每天更新的月表数据(比如有张统计累计会员人数的月表,用于统计当月的累计会员人数,每天都在更新并同步到BI可视化系统中)(其实更应该叫日表,但需求就是统计周期为月,但每天要更新数据)

    小海豚会在今天的凌晨拉取昨天的数据进行计算,将昨天的数据同步到可视化系统中。

    一开始我是按照正常的写法,让数仓将$[yyyyMM] (当月)的数据同步到BI可视化系统中并每天更新。一开始是没问题的,都会同步当月的数据,毕竟今天是2020年03月02日获取的就是202003(2020年03月)

    但到了月初的第一天,就会出现问题。

    比如2020年03月31日,$[yyyyMM]输出202003,会将2020年03月的数据同步到可视化系统(此时小海豚还是抽取昨天2020年03月30日的数据进行累加计算出数据),此时同步是没问题的。

    到了2020年04月01日,小海豚会抽取昨天(2020年03月31日)的数据进行累加,按道理更新的应该是昨天3月份的数据,但是!!!$[yyyyMM]输出的是202004,而此时4月份没有数据,因此没有更新!!!

    到了2020年04月02日,小海豚抽取昨天(2020年04月01日)的数据进行4月份累加,$[yyyyMM]输出的是202004 ,更新4月份数据。

    此时从数仓同步到可视化系统的3月份数据就会少了31日,导致明明数仓数据正确,可是到了可视化系统时就不准了。此时不理解的人就会在骂小海豚有bug,可你输入的指令$[yyyyMM]获取的是今天的月份,你的业务要求你更新昨天的月份。

    正确做法是将$[yyyyMM]替换成$[yyyyMM-1],$[yyyyMM-1]代表昨天的年月,跟我们数仓抽取昨天的数据进行计算业务吻合。

    展开全文
  • 本文章经授权转载1组件介绍Apache Dolphin Scheduler是一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据...

    本文章经授权转载

    1

    组件介绍

    Apache Dolphin Scheduler是一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。

    官网

    https://dolphinscheduler.apache.org/en-us/

    github

    https://github.com/apache/incubator-dolphinscheduler

    2

    ds-1.2.0 目录解读

    (讲解配置文件的作用,具体配置在install.sh部署文件中完成)

    • bin 启动脚本

    • conf 配置文件

    • lib ds依赖的jar包

    • script 数据库创建升级脚本,部署分发脚本

    • sql ds的元数据创建升级sql文件

    • install.sh 部署ds主要的配置文件修改处

    bin

    bin目录下比较重要的是dolphinscheduler-daemon文件,之前版本中极容易出现的找不到jdk问题来源,当前版本的jdk已经export了本机的$JAVA_HOME,再也不用担心找不到jdk了。

    conf

    非常重要的配置文件目录!

    非常重要的配置文件目录!

    非常重要的配置文件目录!

    • env目录下的.dolphinscheduller_env.sh文件中记录了所有跟ds-task相关的环境变量,1.2.0版本的Spark不具备指定Spark版本的功能,可以注释掉SPARK_HOME1或者将SPARK_HOME1和SPARK_HOME2均配置为集群中的Spark2。下面给出CDH中的配置,测试环境中没有部署Flink,请忽略Flink的配置。

    (特别注意这个隐藏文件,需要ls -al)

    export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop
    export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop
    #可以注释掉,也可以配置为SPARK_HOME2
    #export SPARK_HOME1=/opt/cloudera/parcels/SPARK2/lib/spark2
    export SPARK_HOME2=/opt/cloudera/parcels/SPARK2/lib/spark2
    export PYTHON_HOME=/usr/local/anaconda3/bin/python
    export JAVA_HOME=/usr/java/jdk1.8.0_131
    export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive
    export FLINK_HOME=/opt/soft/flink
    export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$PATH
    

    common目录

    • common.properies

      • ds的task队列实现方式,默认是zookeeper

      • ds的task和资源的worker执行路径

      • 资源中心

        • 资源中心可选择HDFS,S3和服务器本地存储

      • 资源文件类型

      • kerberos

      • 开发状态

        • 开发测试可以开启,生产环境建议设置为false

      • ds的环境变量配置,本地调试的时候,需要保证dolphinscheduler.env.path存在

    • hadoop.properties

      • hdfs namenode配置

        • 单点可以直接写namenode的ip

        • hdfsHA需要将集群的core-site.xml和hdfs-site.xml文件拷贝到ds的conf目录下

      • s3配置

      • yarn resourcemanager配置

        • yarn.application.status.address - yarn单点

        • yarn.resourcemanager.ha.rm.ids - yarn HA

    config目录

    • install_config.conf

      • ds的安装路径

      • 部署用户

      • 部署ds的机器组ip

    • run_config.conf

      • 指定masters,workers,alertServer,apiServer部署在哪些机器上

    alert.properties

    • 邮件告警配置

    • excel下载目录

    • 企业微信配置

    application-api.properties

    • apiserver端口,上下文,日志等

    application-dao.properties

    敲黑板,重点!!!ds的元数据库配置,在ds-1.2.0中默认的数据库是pg,如果要使用mysql,需要将mysql的jdbc包放到lib目录下。

    • ds元数据库配置

    master.properties

    • master执行线程数

    • master并行任务上限

    • master资源CPU和内存阈值,超出阈值不会进行dag切分

    worker.properties

    • worker执行线程数

    • worker一次提交任务数

    • worker资源CPU和内存阈值,超出不会去task队列拉取task

    zookeeper.properties

    • zk集群

    • ds所需zk的znode,包含dag和task的分布式锁和master和worker的容错

    quartz.properties

    ds的定时由quartz框架完成,特别注意里边有quartz的数据库配置!!!

    • quartz的基本属性,线程池和job配置

    • quartz元数据库配置

    3

    install.sh详解

    install.sh部署脚本是ds部署中的重头戏,下面将参数分组进行分析。

    数据库配置

    # for example postgresql or mysql ...
    dbtype="postgresql"
    
    # db config
    # db address and port
    dbhost="192.168.xx.xx:5432"
    
    # db name
    dbname="dolphinscheduler"
    
    # db username
    username="xx"
    
    # db passwprd
    # Note: if there are special characters, please use the \ transfer character to transfer
    passowrd="xx"
    
    • dbtype参数可以设置postgresql和mysql,这里指定了ds连接元数据库的jdbc相关信息

    部署用户&目录

    # conf/config/install_config.conf config
    # Note: the installation path is not the same as the current path (pwd)
    installPath="/data1_1T/dolphinscheduler"
    
    # deployment user
    # Note: the deployment user needs to have sudo privileges and permissions to operate hdfs. If hdfs is enabled, the root directory needs to be created by itself
    deployUser="dolphinscheduler"
    
    • installPath是安装路径,在执行install.sh之后,会把ds安装到指定目录,如/opt/ds-agent。installPath不要和当前要一键安装的install.sh是同一目录。

    • deployUser是指ds的部署用户,该用户需要在部署ds的机器上打通sudo免密,并且需要具有操作hdfs的权限,建议挂到hadoop的supergroup组下。

    zk集群&角色指定

    • 配置zk集群的时候,特别注意:要用ip:2181的方式配置上去,一定要把端口带上。

    • ds一共包括master worker alert api四种角色,其中alert api只需指定一台机器即可,master和worker可以部署多态机器。下面的例子就是在4台机器中,部署2台master,2台worker,1台alert,1台api

    • ips参数,配置所有需要部署机器的hostname

    • masters,配置部署master机器的hostname

    • workers,配置部署worker机器的hostname

    • alertServer,配置部署alert机器的hostname

    • apiServers,配置部署api机器的hostname

      (前提在部署机器上已经设置好hostname)

    • zkroot参数可以通过调整,在一套zk集群中,配置开发测试和生产环境ds集群,如配置zkRoot="/dspro",zkRoot="/dstest"

    # zk cluster
    zkQuorum="192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181"
    
    # install hosts
    # Note: install the scheduled hostname list. If it is pseudo-distributed, just write a pseudo-distributed hostname
    ips="ark0,ark1,ark2,ark3"
    
    # conf/config/run_config.conf config
    # run master machine
    # Note: list of hosts hostname for deploying master
    masters="ark0,ark1"
    
    # run worker machine
    # note: list of machine hostnames for deploying workers
    workers="ark2,ark3"
    
    # run alert machine
    # note: list of machine hostnames for deploying alert server
    alertServer="ark3"
    
    # run api machine
    # note: list of machine hostnames for deploying api server
    apiServers="ark1"
    
    # zk config
    # zk root directory
    zkRoot="/dolphinscheduler"
    
    # used to record the zk directory of the hanging machine
    zkDeadServers="$zkRoot/dead-servers"
    
    # masters directory
    zkMasters="$zkRoot/masters"
    
    # workers directory
    zkWorkers="$zkRoot/workers"
    
    # zk master distributed lock
    mastersLock="$zkRoot/lock/masters"
    
    # zk worker distributed lock
    workersLock="$zkRoot/lock/workers"
    
    # zk master fault-tolerant distributed lock
    mastersFailover="$zkRoot/lock/failover/masters"
    
    # zk worker fault-tolerant distributed lock
    workersFailover="$zkRoot/lock/failover/workers"
    
    # zk master start fault tolerant distributed lock
    mastersStartupFailover="$zkRoot/lock/failover/startup-masters"
    
    # zk session timeout
    zkSessionTimeout="300"
    
    # zk connection timeout
    zkConnectionTimeout="300"
    
    # zk retry interval
    zkRetrySleep="100"
    
    # zk retry maximum number of times
    zkRetryMaxtime="5"
    

    邮件配置&excel文件路径

    • 邮件配置建议clone ds的代码,跑一下alert.MailUtilisTest这个测试类,下面给出QQ邮箱配置方式。如果是内网邮箱,需要注意的是ssl是否需要关闭,以及mail.user登陆用户是否需要去掉邮箱后缀。

    • excel路径则需要保证该路径的写入权限

    #QQ邮箱配置
    # alert config
    # mail protocol
    mailProtocol="SMTP"
    
    # mail server host
    mailServerHost="smtp.qq.com"
    
    # mail server port
    mailServerPort="465"
    
    # sender
    mailSender="783xx8369@qq.com"
    
    # user
    mailUser="783xx8369@qq.com"
    
    # sender password
    mailPassword="邮箱授权码"
    
    # TLS mail protocol support
    starttlsEnable="false"
    
    sslTrust="smtp.qq.com"
    
    # SSL mail protocol support
    # note: The SSL protocol is enabled by default.
    # only one of TLS and SSL can be in the true state.
    sslEnable="true"
    
    # download excel path
    xlsFilePath="/tmp/xls"
    
    # alert port
    alertPort=7789
    

    apiServer配置

    • 需要注意端口和上下文即apiServerPort和apiServerContextPath参数

    # api config
    # api server port
    apiServerPort="12345"
    
    # api session timeout
    apiServerSessionTimeout="7200"
    
    # api server context path
    apiServerContextPath="/dolphinscheduler/"
    
    # spring max file size
    springMaxFileSize="1024MB"
    
    # spring max request size
    springMaxRequestSize="1024MB"
    
    # api max http post size
    apiMaxHttpPostSize="5000000"
    

    资源中心&YARN

    • ds的资源中心支持HDFS和S3.

    • resUploadStartupType="HDFS"则开启hdfs作为资源中心。

    • defaultFS,如果hdfs没有配置HA则需要在这里写上单点namenode的ip,如果HDFS是HA则需要将集群的core-site.xml文件和hdfs-site.xml文件拷贝到conf目录下

    • yarnHaIps,如果yarn启用了HA,配置两个resourcemanager的ip,如果是单点,配置空字符串

    • singleYarnIp,配置resourcemanager的ip,在yarn单点情况下

    • hdfsPath,HDFS上ds存储资源的根路径,可采用默认值,如果是从1.1.0版本进行升级,需要注意这个地方,改为/escheduler

    # resource Center upload and select storage method:HDFS,S3,NONE
    resUploadStartupType="NONE"
    
    # if resUploadStartupType is HDFS,defaultFS write namenode address,HA you need to put core-site.xml and hdfs-site.xml in the conf directory.
    # if S3,write S3 address,HA,for example :s3a://dolphinscheduler,
    # Note,s3 be sure to create the root directory /dolphinscheduler
    defaultFS="hdfs://mycluster:8020"
    
    # if S3 is configured, the following configuration is required.
    s3Endpoint="http://192.168.xx.xx:9010"
    s3AccessKey="xxxxxxxxxx"
    s3SecretKey="xxxxxxxxxx"
    
    # resourcemanager HA configuration, if it is a single resourcemanager, here is yarnHaIps=""
    yarnHaIps="192.168.xx.xx,192.168.xx.xx"
    
    # if it is a single resourcemanager, you only need to configure one host name. If it is resourcemanager HA, the default configuration is fine.
    singleYarnIp="ark1"
    
    # hdfs root path, the owner of the root path must be the deployment user.
    # versions prior to 1.1.0 do not automatically create the hdfs root directory, you need to create it yourself.
    hdfsPath="/dolphinscheduler"
    
    # have users who create directory permissions under hdfs root path /
    # Note: if kerberos is enabled, hdfsRootUser="" can be used directly.
    hdfsRootUser="hdfs"
    

    开发状态

    • devState在测试环境部署的时候可以调为true,生产环境部署建议调为false

    # development status, if true, for the SHELL script, you can view the encapsulated SHELL script in the execPath directory.
    # If it is false, execute the direct delete
    devState="true"
    

    角色参数

    • 角色参数主要调整application.properties配置文件,涉及master,worker和apiserver

    • apiServerPort可以自定义修改apiserver的端口,注意需要跟前端保持一致。

    • master和worker的参数,初次部署建议保持默认值,如果在运行当中出现性能问题在作调整,有条件可以压一下自身环境中的master和worker的最佳线程数。

    • worker.reserved.memory是worker的内存阈值,masterReservedMemory是master的内存阈值,建议调整为0.1

    • masterMaxCpuLoadAvg建议注释掉,ds-1.2.0master和worker的CPU负载给出了默认cpu线程数 * 2的默认值

    # master config
    # master execution thread maximum number, maximum parallelism of process instance
    masterExecThreads="100"
    
    # the maximum number of master task execution threads, the maximum degree of parallelism for each process instance
    masterExecTaskNum="20"
    
    # master heartbeat interval
    masterHeartbeatInterval="10"
    
    # master task submission retries
    masterTaskCommitRetryTimes="5"
    
    # master task submission retry interval
    masterTaskCommitInterval="100"
    
    # master maximum cpu average load, used to determine whether the master has execution capability
    #masterMaxCpuLoadAvg="10"
    
    # master reserve memory to determine if the master has execution capability
    masterReservedMemory="1"
    
    # master port
    masterPort=5566
    
    # worker config
    # worker execution thread
    workerExecThreads="100"
    
    # worker heartbeat interval
    workerHeartbeatInterval="10"
    
    # worker number of fetch tasks
    workerFetchTaskNum="3"
    
    # worker reserve memory to determine if the master has execution capability
    workerReservedMemory="1"
    
    # master port
    workerPort=7788
    

    特别注意

    • ds需要启用资源中心之后,才可以创建租户,因此资源中心的配置一定要正确

    • ds老版本部署需要配置JDK的问题已经解决

    • installPath不要和当前要一键安装的install.sh是同一目录,installPath不要部署在home目录下!!!

    • ds的task运行都依赖env目录下的环境变量文件,需要正确配置

    • HDFS高可用,需要把core-site.xml和hdfs-site.xml文件拷贝到conf目录下

    • 邮件配置中mailUser和mailSender的区别

    欢迎试用Dolphin Scheduler!!!

    展开全文
  • 本文章经授权转载,原文链接:https://blog.csdn.net/MiaoSO/article/details/104770720目录7. 参数7.1 系统参数7.2 时间自定义参...
  • 公司有个需求,dolphinscheduler任务失败需要发送预警消息到外网,目前写了个接口可以打通外网,但是要dolphinscheduler发送http请求并带上参数到对应接口才可以实现,请问dolphinscheduler有相关的请求方式吗?
  • DolphinScheduler是具有功能强大的DAG可视界面的分布式可扩展工作流调度程序平台,专用于解决数据管道中的复杂作业依赖性,并提供out of the box各种类型的作业。 其主要目标如下: 根据DAG图形中任务的依赖关系来...
  • 大数据调度系统为什么选型Apache DolphinScheduler ?

    千次阅读 多人点赞 2021-02-24 12:34:35
    Apache DolphinScheduler 于 17 年在易观数科立项, 19 年 3 月开源,8 月进入 Apache 孵化器, 已累计有 400+ 公司在生产上使用。DolphinScheduler 致力于“解决大数据任务之间错综复杂的依赖关系,使整个数据处理...
  • 本文章经授权转载,原文链接:https://blog.csdn.net/MiaoSO/article/details/104770720目录6. 任务节点类型和参数设置6.1 Shell...
  • Apache DolphinScheduler 单机部署方案

    千次阅读 2020-02-25 12:32:21
    DolphinScheduler单机部署分为后端部署和前端部署两部分: 1、后端部署 1.1 : 基础软件安装(必装项请自行安装) PostgreSQL (8.2.15+) or Mysql (5.6或者5.7系列) : 两者任选其一即可 JDK (1.8+) : 必装,请安装好后...
  • DolphinScheduler 安装及使用它可以做什么?安装准备安装配置修改参数一键部署 Apache DolphinScheduler 介绍 它可以做什么? 相信使用过 CDH 中 oozie 的朋友一定不会对它陌生,它是一个工作流调度框架,可以通过 ...
  • 在2019年进行数仓建设时,选择一款易用、方便、高效的调度系统被摆在非常突出的位置,感谢前同事马振洋同学和杨孟霏同学的付出,最终有缘选择了DolphinScheduler的前身EasyScheduler (后面使用ES代替),版本为1.1...
  • DolphinScheduler单机环境安装部署1、基础软件安装(必装项请自行安装)2、下载二进制tar.gz包3、创建部署用户并赋予目录操作权限4、ssh免密配置5、数据库初始化6、修改运行参数7、一键部署8、登录系统9、启停服务9、...
  • Apache DolphinScheduler集群部署方案

    千次阅读 2020-02-25 12:35:52
    DolphinScheduler集群部署分为后端部署和前端部署两部分: 1、后端部署 1.1 : 基础软件安装(必装项请自行安装) PostgreSQL (8.2.15+) or Mysql (5.6或者5.7系列) : 两者任选其一即可 JDK (1.8+) : 必装,请安装好后...
  • DolphinScheduler集群部署

    2021-09-03 11:37:34
    下载 wgnt https://dlcdn.apache.org/dolphinscheduler/1.3.6/apache-dolphinscheduler-1.3.6-bin.tar.gz 前置环境 jdk1.8+ zookeeper3.4.6+ PostgreSQL (8.2.15+) ...useradd dolphinscheduler # 设置用户密码 echo
  • 自行下载DS二进制安装包 以下步骤只需在一台节点上执行,一键部署后,会... tar -zxvf /root/dolphinscheduler-1.3.8-bin.tar.gz -C /opt/dolphinscheduler \ && cd /opt/dolphinscheduler \ && mv
  • 一、环境 平台:HDP(Ambari) ...dolphinscheduler版本:1.3.6 mysql驱动:mysql-connector-java-8.0.22.jar DS官网:Apache DolphinScheduler | 首页 二、集群搭建 1、在x03节点新建安装目录 mkdir -p /
  • DolphinScheduler 单机版部署 官网: https://dolphinscheduler.apache.org/ 1.基础软件环境 PostgreSQL (8.2.15+) or MySQL (5.7系列):两者任选其一即可,如 MySQL 则需要 JDBC Driver 5.1.47+ JDK (1.8+):必装,...
  • 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...
  • 使用 DolphinScheduler 调度 Kylin 构建

    千次阅读 2020-03-08 17:48:00
    集成 Apache DolphinScheduler 后,Kylin 可以方便地将大数据平台各组件串联起来,让各个任务通过 DAG 统一调度。 01背景 Apache Kylin 是一个支持海量大数据的在线分析引擎,需要离线或流式地从 Apache Hive...
  • 大数据任务调度作为大数据建设中的核心基础设施,在经过社区用户们长期的使用中,不少用户对调度也提出了很多新的要求,为此,Apache DolphinScheduler(Incubating)经过长达 5 个多月的辛苦努力, 终于发布了 1.3.2 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 466
精华内容 186
关键字:

dolphinscheduler参数