Apache DolphinScheduler是一个分布式易扩展的可视化DAG工作流任务调度开源系统。解决数据研发ETL 错综复杂的依赖关系,不能直观监控任务健康状态等问题。DolphinScheduler以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作。具有如下特性:
简单易用
DAG监控界面,所有流程定义都是可视化,通过拖拽任务定制DAG,通过API方式与第三方系统对接, 一键部署
高可靠性
去中心化的多Master和多Worker, 自身支持HA功能, 采用任务队列来避免过载,不会造成机器卡死
丰富的使用场景
支持暂停恢复操作.支持多租户,更好的应对大数据的使用场景. 支持更多的任务类型,如 spark, hive, mr, python, sub_process, shell
高扩展性
支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master和Worker支持动态上下线
本文讲解的是单机安装,并且使用,通过以下目录展开:
1、基础软件的安装
1.1 系统最小化安装系统基础设置
1.2 安装配置java
1.3 安装zookeeper
1.4 安装编译python3环境
1.5 安装mysql
1.6 安装datax
2、安装海豚dolphinscheduler系统调度
3、系统调度快速上手
4、项目案例
4.1 shell案例
4.2 python案例
1、基础软件的安装
主机名 | 系统 | CPU | 内存 | 磁盘 | 应用 |
Dolphinschedulerpro | Centos7.6 | 8 | 32 | 50G+500G | dolphinscheduler |
需要安装的软件有: java,zookeeper,python3及相关依赖包,mysql ,datzx ,dolphinscheduler
1.1 系统安装最小化安装,可以看我之前的文章系统基础设置
编辑配置文件/etc/selinux/config,关闭selinux
SELINUX=disabled编辑配置文件/etc/security/limits.conf,末尾添加:
* soft noproc 10240
* hard noproc 10240
* soft nofile 10240
* hard nofile 10240
防火墙策略设置
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" port port=12345 protocol=tcp accept' --permanent
firewall-cmd --reload
1.2 安装配置java
下载JDK并解压到/usr/local
vi /etc/profile
###for jdk1.8 ###
JAVA_HOME=/usr/local/jdk1.8.0_241
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME JRE_HOME CLASSPATHsource /etc/profile //使配置文件生效
java –version //查看是否安装正确
1.3 安装zookeeper
编辑配置文件
将安装包解压到/usr/local/src/目录下
cd /usr/local/src/apache-zookeeper-3.6.2-bin/bin
./zkServer.sh start // 启动服务
netstat –natp | grep 2181
1.4 安装编译python3环境
yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
./configure --prefix=/usr/local/python3613 && make && make install
mv /usr/bin/python /usr/bin/python27
mv /usr/bin/pip /usr/bin/pip27
ln -sf /usr/local/python3613/bin/python3 /usr/bin/python
ln -sf /usr/local/python3613/bin/pip3 /usr/bin/pip
ln -sf /usr/local/python3613/bin/python3 /usr/bin/python3
ln -sf /usr/local/python3613/bin/pip3 /usr/bin/pip3
vi /usr/bin/yum //编辑,更改python2的运行环境
vi /usr/libexec/urlgrabber-ext-down //编辑,更改python2的运行环境
安装cx_oracle模块,连接oracle驱动
pip install cx_oracle -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
unzip instantclient-basic-linux.x64-11.2.0.4.0.zip //安装相关依赖库
mv instantclient_11_2 /usr/local/src/
echo /usr/local/src/instantclient_11_2 > /etc/ld.so.conf.d/oracle-instantclient.conf
ldconfig1.5 安装mysql
将安装包解压到安装目录
./mysql_install_db --basedir=/usr/local/src/mysql --datadir=/home/mysqldata --user=mysql
编辑配置文件vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
[mysqld]
character-set-server=utf8
lower_case_table_names=1
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
skip-name-resolve
max_allowed_packet=256M
#skip-grant-tables
datadir=/home/mysqldata
socket=/tmp/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
/etc/init.d/mysql restart //启动服务 ,密码默认在安装用户主目录下的文件.mysql_secret
用root用户登陆后,alter user 'root'@'localhost' identified by ‘passwd’
1.6 安装datax
tar xvf datax.tar.gz
mv datax /usr/local/src/
2、安装海豚dolphinscheduler系统调度
2.1 下载解压安装包
mkdir -p /opt/dolphinscheduler
cd /opt/dolphinscheduler
tar -zxvf apache-dolphinscheduler-1.3.6-bin.tar.gz -C /opt/dolphinscheduler
mv apache-dolphinscheduler-1.3.6-bin dolphinscheduler-bin
2.2 创建应用运行系统用户
useradd dolphinscheduler
echo "passwd" | passwd --stdin dolphinscheduler
sed -i '$adolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' /etc/sudoers
sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers
chown -R dolphinscheduler:dolphinscheduler /opt/dolphinscheduler/dolphinscheduler-bin2.3 创建免密登陆
su - dolphinscheduler
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys2.4 数据库初始化
mysql -uroot -p
mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';
mysql> flush privileges;创建表和导入基础数据,编辑配置文件vi conf/datasource.properties
sh script/create-dolphinscheduler.sh //执行数据库导入脚本
2.5修改运行参数
sudo ln -s /opt/soft/java/bin/java /usr/bin/java
2.6 修改一键部署配置文件 conf/config/install_config.conf中的各参数,特别注意以下参数的配置
cat config/install_config.conf | grep -v '#'
dbtype="mysql"
dbhost="127.0.0.1:3306"
username="dolphinscheduler"
dbname="dolphinscheduler"
password="passwd"
zkQuorum="127.0.0.1:2181"
installPath="/usr/local/src/dolphinscheduler"
deployUser="dolphinscheduler"
mailServerHost="smtp.qq.com"
mailServerPort="587"
mailSender="969113439@qq.com"
mailUser="969113439@qq.com"
mailPassword="xxxxxxxxxx"
starttlsEnable="true"
sslEnable="false"
sslTrust="smtp.qq.com"
resourceStorageType="HDFS"
defaultFS="file:///home/dolphinschedulerdata"
yarnHaIps=""
singleYarnIp="yarnIp1"
resourceUploadPath="/home/dolphinschedulerdata"
hdfsRootUser="hdfs"
kerberosStartUp="false"
krb5ConfPath="$installPath/conf/krb5.conf"
keytabUserName="hdfs-mycluster@ESZ.COM"
keytabPath="$installPath/conf/hdfs.headless.keytab"
apiServerPort="12345"
ips="localhost"
sshPort="22"
masters="localhost"
workers="localhost:default"
alertServer="localhost"
apiServers="localhost"创建安装目录
sudo mkdir –p /usr/local/src/dolphinscheduler
sudo chown -R dolphinscheduler:dolphinscheduler /usr/local/src/dolphinscheduler2.7 一键部署
注意切换到部署部署用户dolphinscheduler,执行一键部署脚本
sh install.sh
使用命令jps ,如果正常,则会显示相关启动的服务
2.8 浏览器访问
http://IP:12345/dolphinscheduler/ui/view/login/index.html
user/passwd
3、系统调度快速上手
3.1管理员用户登录
http://ip:12345/dolphinscheduler
admin/passwd,默认账户密码(admin/ dolphinscheduler123)
3.2创建队列
3.3创建租户
3.4创建普通用户
3.5创建告警组实例
3.6 使用创建用户登陆:
http://ip:12345/dolphinscheduler/ui/view/login/index.html
xiangmuyonghu01/passwd
3.7使用用户创建项目:命名项目名称
3.7点击进入项目
3.8创建2个脚本:
脚本内容shell01.sh
脚本内容shell02.sh
服务器查看脚本内容:
3.9点击工作流定义->创建工作流定义->上线工作流定义
Shell01
Shell02
3.9.1 运行工作流定义->点击工作流实例->点击工作流实例名称->双击任务节点->查看任务执行日志
系统时间如果不准确,修改,对应的系统调度日志时间也会取相应的时间。
运行实例的时候,可以实时查看下 输出的日志:
4、项目案例
4.1 shell案例
假设有4个脚本是顺序执行的:
运行结果:
4.2 python案例
【创建属于python的工作流】
创建一个pythonlog文件夹用来存放运行日志:
创建一个python项目:
创建属于该项目的工作流:
创建3个python脚本:
# -*- coding: utf-8 -*-
import os
logfile="/home/dolphinschedulerdata/xiangmuzuhu01/resources/pythonlog/python.log"
print(logfile)
with open(logfile,"a") as f:
f.write("python001 .。。。。。。。。。。。。。
")# -*- coding: utf-8 -*-
import os
logfile="/home/dolphinschedulerdata/xiangmuzuhu01/resources/pythonlog/python.log"
print(logfile)
with open(logfile,"a") as f:
f.write("python02 .。。。。。。。。。。。。。
")
# -*- coding: utf-8 -*-
import os
logfile="/home/dolphinschedulerdata/xiangmuzuhu01/resources/pythonlog/python.log"
print(logfile)
with open(logfile,"a") as f:
f.write("python03 .。。。。。。。。。。。。。
")
工作流上线运行,实时查看是否执行:
数据源:
数据源的创建可以通过admin创建统一的,然后进行授权给其他用户。当然一般不同项目单独创建数据源可能是比较好管理和区分。
普通用户可以查看自己创建的和通过授权的数据源
| 留言与评论(共有 0 条评论) “” |