使用 DolphinScheduler 调度 Kylin 构建
本文章经授权转载
Apache Kylin 上游通常有复杂的数据 ETL 过程,如 Hive 入库、数据清洗等;下游有报表刷新,邮件分发等。集成 Apache DolphinScheduler 后,Kylin 可以方便地将大数据平台各组件串联起来,让各个任务通过 DAG 统一调度。
01
背景
Apache Kylin 是一个支持海量大数据的在线分析引擎,需要离线或流式地从 Apache Hive、Apache Kafka 加载数据。通常当上游数据准备好以后,用户需要使用 Kylin 的 Web 界面或 API 触发以生成数据加载的任务。为了让整个工作流自动化起来,通常要结合一些任务调度平台,如 Oozie,Linux crontab 等。本文将介绍如何使用 Apache DolphinScheduler 这个新的开源平台跟 Kylin 进行集成完成数据构建。
02
什么是 DolphinScheduler
Apache DolphinScheduler(incubating)(简称 DS) 是一个 Apache 孵化器项目,是由国内企业易观开源的大数据项目,是一个面向大数据应用的分布式工作流任务调度系统,之前叫 EasyScheduler。目前,DS 在国内已经有一定规模的用户基础,包括美团 、平安、雪球等。
官网:https://dolphinscheduler.apache.org/
这里我们引用一下 DS 刚开源时的介绍 [1]:相信做过数据处理的伙伴们对开源的调度系统如 Oozie、Azkaban、Airflow 应该都不陌生,在使用这些调度系统中可能会有这样的体验:比如配置工作流任务不能可视化、任务的运行状态不能实时在线查看、 任务运行时不能暂停、不能支持参数传递、不能补数、不能多租户使用、调度系统不高可用等等问题所烦扰过。Easy Scheduler 正是在这种背景下应运而生,其目标就是为使调度更加 easy,更可以从其中文名“易调度”看出我们的初衷。
下图是一个跟 Azkaban、Airflow 的多方面对比:
从这个图上可以看出,DS 设计之初就考虑了高可用、多租户、可视化等高级功能,也支持扩展任务类型等,相比于其它工具来说,更适合企业内的复杂场景,可视化的操作界面也非常适合作为平台交给各部门自助使用(注:Airflow 目前也有多租户的支持)。
03
DS 的安装
为了验证 DS 的功能,我们决定先在一个单机上进行安装。参考文档后,发现它的安装配置步骤稍多,于是先尝试 Docker 安装;可惜的是,它的 Dockerfile 跟当前代码有一点不匹配,加上国内的网络条件,Docker build 较慢屡次失败,于是就放弃了,尝试单机用二进制包安装。
从官网 [2] 下载 1.2.0 版本的安装包,分前端和后端两个包;前端是一些静态文件,不到 2MB;后端是主程序,较大 127MB;前后端需要分别安装和配置。(据了解从 1.2.1 后,前后端将不再分离。)
参考前端安装文档 [3],将资源放到某个目录,然后安装和配置 Nginx,让其 8888 端口的静态资源从 DS 的前端目录获取,如果是 API 的调用,转给后端服务 12345 端口;了解 Nginx 配置的话这块不难。小注意一下,它的安装脚本 install-dolphinscheduler-ui.sh 会自动安装 Nginx,如果你的系统中已经有 Nginx 服务的话,需要手动修改脚本以避免重新安装。
后端的安装相对比较复杂一些。首先你需要准备前置条件:
1. Linux 服务器一台,CentOS 6/7 或 Ubuntu;
2. 创建一个 DolphinScheduler 的 Linux 账户,有 sudo 权限,且开启免密码登录;因为要切换不同租户,所以单机安装也需要这个账户;
3. MySQL 5.5 或以上;起初我的 MySQL 版本较低(5.1),遇到 DB 初始化脚本失败的问题,切换高版本 MySQL 后解决;(注:目前 MySQL 8 也不支持);
4. Zookeeper,用于协调多个节点的状态。
安装的时候,需要仔细查看它的安装文档 [4];文档中介绍了多节点的自动部署(为有自动化一键安装脚本点赞????),但没有介绍单节点的手动部署。我先用了它的自动部署脚本 install.sh,发现略有点复杂,在 DS 开发者的指导下改用手动部署。下面是一些注意事项:
1. 安装和启动服务的时候,切换到 dolphinscheduler用户,建议不要用 root;使用 root 会让一些新创建的目录权主是 root,其它用户不可访问;
2. 安装目录不要放到 /root 等高权限目录,最好放到 /opt 或 dolphinscheduler 的 home 目录下;
3. MySQL JDBC 连接的配置,除了在 conf/application-dao.properties 以外,还需要在 conf/quartz.properties 也里配置一下;
4. DS 的安装目录,需要显式地在 conf/common/common.properties 里配置一下,默认的安装目录 /data1_1T/dolphinscheduler 很可能不是你的安装路径;
5. 在 conf/config/run_config.conf 中配置各个节点的机器名;如果单机的话,配置本机的机器名;
6. 在 conf/zookeeper.properties 中配置 zk 地址;
7. 启动使用 scripts/start-all.sh 和 scripts/stop-all.sh 来启动和停止;如果不正常,检查在 logs 目录下的日志;
8. 确保 Nginx 之前已经正常启动。
04
DS 创建项目和进程
如果一切正常的话,浏览器打开 http://<host_name>:8888 就会出现 DS 的登录界面,初始用户/密码为:admin/dolphinscheduler123。
按照使用操作手册,先创建项目,再创建一个租户(tenant);租户就是运行任务的 Linux 用户。
创建租户后,还要将 DS 的用户跟租户进行绑定,默认的 admin 用户初始是没有租户的,所以需要进行绑定后才可以执行任务,切记;
在这之后,你就可以进入项目,创建进程(process)了,DS 提供了可视化的界面,让你可以图形化拖拽地方式定义工作流 DAG:
这里看到,DS 内置了若干种任务,例如 Spark, Flink,MapReduce,Shell, HTTP,Python 等,基本足够普通调度需求了。
05
DS 触发 Kylin 构建任务
我们的测试场景是 Kylin 的流式构建,需要每五分钟触发一次任务;Kylin 提供 Rest API 供外部触发,但本身不提供调度器;通常用户使用外部调度器或 Linux crontab 等服务来执行;使用 Linux crontab 最简单,但是难以监控和修改,因此一些用户会觉得麻烦。所以我们可以集成 DS 和 Kylin 做到一站式调度和监控。这里触发Kylin的构建任务,可以用 shell(如 curl)命令,也可以用 HTTP(post、put 等)的方式进行;这里我选择用 shell 因为它非常简单,在输入之前,先确保这个 shell 命令是无误的,手动在 Linux 命令行中执行验证。
随后对这个进程指定定时器(cron),语法基本上跟 Linux crontab 相同,用户还可以指定生效范围,通知策略等:
06
运行
之后分别上线这个定时器,以及这个进程;过一会儿我们就会在平台上看到执行的任务:
执行的详细日志也是可以直接在线查看:
Kylin 这边,我们看到任务被正常触发执行:
继续一天,两边平台都很稳定,180 多次调度都成功执行:
07
总结
DolphinScheduler 是一款功能强大的大数据调度平台。一次配置好任务流,后续就可以靠 DS 自动定时调度了,任务成功或出错都可以得到邮件通知。如果任务较多,可以水平添加更多节点以扩展资源。Kylin 上游通常有复杂的数据 ETL 过程,如 Hive 入库,数据清洗等;下游有报表刷新,邮件分发等;有了它可以方便地将大数据平台各组件串联起来,让各个任务通过 DAG 统一调度。此次时间有限,没有进一步测试 DS 的高级功能,后续如果社区基于插件机制开发出 Kylin 的触发器,对用户会更加简单易用。
在此也非常感谢 DolphinScheduler 社区的代立冬等小伙伴们,非常热心地帮忙回答和解决问题!
参考资料:
[1]http://www.clickhouse.com.cn/topic/5cab67b369c415035e68d526
[2]https://dolphinscheduler.apache.org/en-us/docs/release/download.html
[3]https://dolphinscheduler.apache.org/en-us/docs/1.2.0/user_doc/frontend-deployment.html
[4]https://dolphinscheduler.apache.org/en-us/docs/1.2.0/user_doc/backend-deployment.html
[5]https://dolphinscheduler.apache.org/en-us/docs/1.2.0/user_doc/quick-start.html
使用 DolphinScheduler 调度 Kylin 构建的更多相关文章
- 《基于Apache Kylin构建大数据分析平台》
Kyligence联合创始人兼CEO,Apache Kylin项目管理委员会主席(PMC Chair)韩卿 武汉市云升科技发展有限公司董事长,<智慧城市-大数据.物联网和云计算之应用>作者 ...
- 【转】Kylin系列-使用Saiku+Kylin构建多维分析OLAP平台
关于Kylin的介绍和使用请参考之前的文章 <分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例> Kylin对外提供的是SQL查询接口,基于Kylin构建OL ...
- kylin构建cube优化
前言 下面通过对kylin构建cube流程的分析来介绍cube优化思路. 创建hive中间表 kylin会在cube构建的第一步先构建一张hive的中间表,该表关联了所有的事实表和维度表,也就是一张宽 ...
- 基于 Hudi 和 Kylin 构建准实时高性能数据仓库
在近期的 Apache Kylin × Apache Hudi Meetup直播上,Apache Kylin PMC Chair 史少锋和 Kyligence 解决方案工程师刘永恒就 Hudi + K ...
- 使用Kylin构建企业大数据分析平台的4种部署方式
本篇博客重点介绍如何使用Kylin来构建大数据分析平台.根据官网介绍,其实部署Kylin非常简单,称为非侵入式安装,也就是不需要去修改已有的 Hadoop大数据平台.你只需要根据的环境下载适合的Kyl ...
- Kylin构建Cube过程详解
1 前言 在使用Kylin的时候,最重要的一步就是创建cube的模型定义,即指定度量和维度以及一些附加信息,然后对cube进行build,当然我们也可以根据原始表中的某一个string字段(这个字段的 ...
- Kylin构建cube时状态一直处于pending
在安装好kylin之后我直接去访问web监控页面发现能够进去,也没有去看日志.然后在运行官方带的例子去bulid cube时去发现状态一直是pending而不是runing.这个时候才去查看日志: 2 ...
- Saiku_学习_03_Saiku+Kylin构建多维分析OLAP平台
一.技术选型 参见:Saiku+Kylin多维分析平台探索 1.saiku Saiku 作为分析平台,提供可视化的操作,能方便的对数据进行查询.分析,并提供图形化显示 2.kylin Kylin 作为 ...
- 8月Meetup | “数据调度+分析引擎”解锁企业数字化转型之路
编辑切换为居中 添加图片注释,不超过 140 字(可选) 大数据是一种规模大到在获取.存储.管理.分析方面大大超出了传统数据库软件工具能力范围的数据集合,而大数据作为企业运转的基础,只有经过提 ...
随机推荐
- python模块详情与开发规范
目录 循环导入 py文件类型 模块的查找顺序 相对导入与绝对导入 包 软件开发目录规范 循环导入 在初学模块时,我们有些时候会出现两个文件彼此导入,这时候可能会有报错. 比如有以下两个py文件 a.p ...
- 【SpringCloud原理】万字剖析OpenFeign之FeignClient动态代理生成源码
年前的时候我发布两篇关于nacos源码的文章,一篇是聊一聊nacos是如何进行服务注册的,另一篇是一文带你看懂nacos是如何整合springcloud -- 注册中心篇.今天就继续接着剖析Sprin ...
- C# 四舍五入中一处易错点
,你没看错,四舍五入的结果 和我们期待的不太一样 Why?? 进入源码看下,注释中解释的很清楚.. 默认情况下,Math.Round()方法返回的是最接近的整数,这个没问题,问题是当要转换的数据在 两 ...
- Linux namespace技术应用实践--调用宿主机命令(tcpdump/ip/ps/top)检查docker容器网络、进程状态
背景 最近偶然听了几堂极客时间的云原生免费公开课程,首次接触到了Linux namespace技术,并了解到这正是现在风头正劲的容器技术基石,引起了自己探究一二的兴趣,结合课程+网络搜索+实践操作,也 ...
- 低代码前景可期,JNPF灵活易用,用智能定义新型办公模式
JNPF是引迈信息从事多年软件研发和产品服务的一次时代性的技术革新产物,是集SaaS服务.工作流引擎.一站式低代码开发.支持多端使用于一体的快速开发平台. 强大易用 JNPF将 Excel. Acce ...
- 并发bug之源(一)-可见性
CPU三级缓存 要聊可见性,这事儿还得从计算机的组成开始说起,我们都知道,计算机由CPU.内存.磁盘.显卡.外设等几部分组成,对于我们程序员而言,写代码主要关注CPU和内存两部分.放几张马士兵老师的图 ...
- 一文澄清网上对 ConcurrentHashMap 的一个流传甚广的误解!
大家好,我是坤哥 上周我在极客时间某个课程看到某个讲师在讨论 ConcurrentHashMap(以下简称 CHM)是强一致性还是弱一致性时,提到这么一段话 这个解释网上也是流传甚广,那么到底对不对呢 ...
- 使用强大的DBPack处理分布式事务(PHP使用教程)
主流的分布式事务的处理方案 近些年,随着微服务的广泛使用,业务对系统的分布式事务处理能力的要求越来越高. 早期的基于XA协议的二阶段提交方案,将分布式事务的处理放在数据库驱动层,实现了对业务的无侵入, ...
- 把excel的数据导入到SQLSERVER里面,excel的字符串时间在导入sql库显示datetime 数据类型的转换产生一个超出范围的值
这是我Excel导入的数据,准备把这个varchar(50)时间导入我的userInfo表中的出生日期字段datatime,如果你的数据正常,是可以导入的, 但是有些日期可能超出datatime的最大 ...
- Unity3D学习笔记4——创建Mesh高级接口
目录 1. 概述 2. 详论 3. 其他 4. 参考 1. 概述 在文章Unity3D学习笔记2--绘制一个带纹理的面中使用代码的方式创建了一个Mesh,不过这套接口在Unity中被称为简单接口.与其 ...