DolphinScheduler案例实战

1. 案例说明

案例:每分钟统计一次用户的个数

在MySQL中有一张用户表users:

mysql> select * from users;
+----------+
| username |
+----------+
| Tony     |
| Tom      |
| Jack     |
+----------+

需求是,使用spark程序读用户表,统计用户个数,保存到结果表user_count:

mysql> select * from user_count;
+------------+------------+
| tp         | user_count |
+------------+------------+
| 2021-01-29 |          3 |
+------------+------------+

然后用DolphinScheduler进行调度,每分钟调度一次

2. 代码

import org.apache.spark.sql.{SaveMode, SparkSession}

object SparkDemo {

  def main(args: Array[String]): Unit = {

    if (args.length != 5) {
      System.err.println("Please input 5 args: ")
      System.err.println("1. JDBC URL")
      System.err.println("2. JDBC driver name")
      System.err.println("3. MySQL table name")
      System.err.println("4. Username")
      System.err.println("5. Password")
    }

    // 1、SparkSession
    val spark = SparkSession.builder()
      // .master("local[1]")
      .master("yarn")
      .appName("SparkDemo")
      .getOrCreate()

    // 2、从MySQL表读取数据到DataFrame
    val userDF = spark.read
      .format("jdbc")
      .option("url", args(0)) // jdbc连接的地址
      .option("driver", args(1)) // 驱动
      .option("dbtable", args(2)) // 用户信息表
      .option("user", args(3)) // 用户名
      .option("password", args(4)) // 密码
      .load()

    // userDF.show

    // 3、基于DataFrame创建临时视图(临时表)
    userDF.createOrReplaceTempView("users")

    // 4、执行SQL查询
    val resultDF = spark.sql("select current_date as tp , count(*) as user_count from users")

    // 5、打印结果
    resultDF.show

    // 6、保存结果到结果表
    resultDF.write
      .format("jdbc")
      .option("url", args(0)) // jdbc连接的地址
      .option("driver", args(1)) // 驱动
      .option("dbtable", "user_count") // 指标表
      .option("user", args(3)) // 用户名
      .option("password", args(4)) // 密码
      .mode(SaveMode.Append)
      .save

    // 7、关闭session
    spark.close

  }
}

代码测试后打成jar包。

3. 环境准备

大数据平台:

启动DolphinScheduler并登陆

4. DolphinScheduler操作

参考官网:https://dolphinscheduler.apache.org/zh-cn/docs/1.3.4/user_doc/system-manual.html

创建队列

  • 队列是在执行spark、mapreduce等程序,需要用到“队列”参数时使用的。

  • 管理员进入安全中心->队列管理页面,点击“创建队列”按钮,创建队列。

注意:这里的队列就是Yarn中的队列,Yarn中的队列默认叫做default,在DS中要提交一个任务到Yarn的队列中,在这里要创建与Yarn队列同名的队列,并且Yarn上的队列要提前创建好

添加租户

  • 租户对应的是Linux的用户,用于worker提交作业所使用的用户。如果linux没有这个用户,worker会在执行脚本的时候创建这个用户。
  • 租户编码:租户编码是Linux上的用户,唯一,不能重复
  • 管理员进入安全中心->租户管理页面,点击“创建租户”按钮,创建租户。
  • 我们的案例是提交任务到yarn,所以需要使用hdfs用户来提交,所以创建的租户就是hdfs

创建告警组

  • 告警组是在启动时设置的参数,在流程结束以后会将流程的状态和其他信息以邮件形式发送给告警组。

  • 管理员进入安全中心->告警组管理页面,点击“创建告警组”按钮,创建告警组。

创建Worker分组

  • 每个worker节点都会归属于自己的Worker分组,默认分组为default.

  • 在任务执行时,可以将任务分配给指定worker分组,最终由该组中的worker节点执行该任务.

默认的default Worker分组中包括全部的Worker节点,是在安装DS的时候在配置文件中指定的:

# dolphinscheduler-1.3.3/conf/config/install_config.conf
workers="hdp01:default,hdp02:default,hdp03:default,hdp04:default"

使用此分组,代表提交的任务可以由这些节点来执行。

页面上没有提供创建Worker分组的操作,需要修改worker.properties配置文件,例如,我要让hdp02和hdp03这两个节点组成一个分组test来执行特定的任务,那么应该分别编辑hdp02和hdp03这两个节点下dolphinscheduler/conf/worker.properties:

worker.groups=default,test

然后重启DS,我们这里就使用默认分组来执行任务。

创建普通用户

  • 用户是指登录、管理DS系统的用户,注意与租户区分,租户是Linux用户,用来执行任务

  • 用户分为管理员用户普通用户

  • 管理员有授权和用户管理等权限,没有创建项目和工作流定义的操作的权限。

  • 普通用户可以创建项目和对工作流定义的创建,编辑,执行等操作。 注意:如果该用户切换了租户,则该用户所在租户下所有资源将复制到切换的新租户下

  • 创建之后,使用普通用户登录到DS

创建项目

点击"项目管理"进入项目管理页面,点击“创建项目”按钮,输入项目名称,项目描述,点击“提交”,创建新的项目。

上传Jar包

资源中心->文件管理->上传文件

创建工作流

点击项目,进入项目,工作流->工作流定义->创建工作流

运行工作流

调度工作流

可以看到任务已经开始调度执行了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容