1. DolphinScheduler简介2. DolphinScheduler特点3. DolphinScheduler安装
3.1 依赖软件3.2 下载二进制tar.gz包3.3 数据库初始化3.4 修改运行参数3.5 启动Zookeeper集群3.6 一键部署3.7 集群服务的启停 4. DolphinScheduler基础操作
4.1 登录系统4.2 创建队列4.3 创建租户4.4 创建普通用户4.5 创建告警组4.6 创建Worker分组4.7 使用普通用户登录4.8 创建项目4.9 创建工作流4.10 运行工作流 5. 在DolphinScheduler调度Sqoop脚本任务
5.1 定义工作流5.2 工作流上线5.3 结果验证
最近在学习大数据的相关知识,将其中用到的工具记录下来。
1. DolphinScheduler简介 DolphinScheduler官方地址
Apache DolphinScheduler 是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
DolphinScheduler是2019年中国易观公司开源的一个调度系统,在美国时间2019年8月29号,易观开源的分布式任务调度引擎DolphinScheduler(原EasyScheduler)正式通过顶级开源组织Apache基金会的投票决议,根据Apache基金会邮件列表显示,在包含11个约束性投票(binding votes)和2个无约束性投票(non-binding votes)的投票全部持赞同意见,无弃权票和反对票,投票顺利通过,这样便以全票通过的优秀表现正式成为了Apache孵化器项目!
DolphinScheduler提供了许多易于使用的功能,可加快数据ETL工作开发流程的效率。其主要特点如下:
通过拖拽以DAG 图的方式将 Task 按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态;支持丰富的任务类型;支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill 任务等操作;支持工作流全局参数及节点自定义参数设置;支持集群HA,通过 Zookeeper实现 Master 集群和 Worker 集群去中心化;支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计;支持补数,并行或串行回填数据。 3. DolphinScheduler安装
单机版部署文档
3.1 依赖软件MySQL (5.7系列) :需要JDBC Driver 5.1+;JDK (1.8+) : 必装,请安装好后在/etc/profile下配置 JAVA_HOME 及 PATH 变量;ZooKeeper (3.4.6+) :必装;Hadoop (2.6+):选装, 如果需要用到资源上传功能,针对单机可以选择本地文件目录作为上传文件夹(此操作不需要部署Hadoop);当然也可以选择上传到Hadoop集群上。
注意: DolphinScheduler本身不依赖Hadoop、Hive、Spark,仅是会调用他们的Client,用于对应任务的运行。
3.2 下载二进制tar.gz包
下载最新版本的后端安装包至服务器部署目录,比如创建 /export/server 做为安装部署目录,下载地址:选择相应版本下载后上传tar包到该目录中,并进行解压。
# 创建部署目录,部署目录不要创建在/root、/home等高权限目录,如创建目录/export/server/ mkdir -p /export/server/; mkdir -p /export/software/; # 将dolphinscheduler的.bin.tar.gz上传到目录/export/software/ 后解压 # 解压 tar -zxvf /export/software/apache-dolphinscheduler-incubating-1.3.5-dolphinscheduler-bin.tar.gz -C /export/server/; cd /export/server/ mv apache-dolphinscheduler-incubating-1.3.5-dolphinscheduler-bin dolphinscheduler;3.3 数据库初始化
进入数据库,默认数据库是PostgreSQL,如选择MySQL的话,后续需要添加mysql-connector-java驱动包到DolphinScheduler的lib目录下。
mysql -uroot -p # 执行数据库初始化命令,设置访问账号和密码。 mysql> CREATE DATAbase dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'root'@'%' IDENTIFIED BY 'XXXXXX'; mysql> flush privileges;
修改 conf 目录下 datasource.properties 中的下列配置
vim conf/datasource.properties
如果选择 MySQL,请注释掉 PostgreSQL 相关配置(反之同理), 还需要手动添加 [ mysql-connector-java 驱动 jar ] 包到 lib 目录下,这里添加的是mysql-connector-java-5.1.38.jar,然后正确配置数据库连接相关信息
# postgresql #spring.datasource.driver-class-name=com.mysql.jdbc.Driver #spring.datasource.url=jdbc:mysql://XXX.XXX.XXX.XXX:3306/dolphinscheduler?characterEncoding=UTF-8&allowMultiQueries=true #spring.datasource.username=root #spring.datasource.password=XXXXXX # mysql spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://XXX.XXX.XXX.XXX/dolphinscheduler?characterEncoding=UTF-8&allowMultiQueries=true spring.datasource.username=root spring.datasource.password=XXXXXX
修改保存后,执行script目录下的创建表及导入基础数据脚本
sh script/create-dolphinscheduler.sh
注意: 如果执行上述脚本报 ”/bin/java: No such file or directory“ 错误,请在/etc/profile下配置 JAVA_HOME 及 PATH 变量。
3.4 修改运行参数修改 conf/env/dolphinscheduler_env.sh 环境变量:
export HADOOP_HOME=/export/server/hadoop export HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop #export SPARK_HOME1=/opt/soft/spark1 #export SPARK_HOME2=/opt/soft/spark2 export PYTHON_HOME=/usr/bin/python export JAVA_HOME=/export/server/jdk export HIVE_HOME=/export/server/hive #export Flink_HOME=/opt/soft/flink #export DATAX_HOME=/opt/soft/datax/bin/datax.py export SQOOP_HOME=/export/server/sqoop export PATH=$HADOOP_HOME/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$SQOOP_HOME/bin:$PATH
注: 这一步非常重要,例如 JAVA_HOME 和 PATH 是必须要配置的,没有用到的可以忽略或者注释掉;
将jdk软链到/usr/bin/java下
ln -s /export/server/jdk1.8.0_241/bin/java /usr/bin/java
修改一件部署配置文件:
conf/config/install_config.conf中的各参数,特别注意以下参数的配置:
# 这里填 mysql or postgresql
dbtype="mysql"
# 数据库连接地址
dbhost="XXX.XXX.XX.XXX:3306"
# 数据库名
dbname="dolphinscheduler"
# 数据库用户名,此处需要修改为上面设置的{user}具体值
username=" root"
# 数据库密码, 如果有特殊字符,请使用转义,需要修改为上面设置的{password}具体值
password="XXXXXX"
#Zookeeper地址,单机本机是localhost:2181,记得把2181端口带上
zkQuorum="node1:2181,node2:2181,node3:2181"
#将DS安装到哪个目录,如: /opt/soft/dolphinscheduler,不同于现在的目录
installPath="/export/server/dolphinscheduler_install"
#使用哪个用户部署
deployUser="root"
# 邮件配置,以qq邮箱为例
# 邮件协议
#mailProtocol="SMTP"
# 邮件服务地址
#mailServerHost="smtp.qq.com"
# 邮件服务端口
#mailServerPort="25"
# mailSender和mailUser配置成一样即可
# 发送者
#mailSender="xxx@qq.com"
# 发送用户
#mailUser="xxx@qq.com"
# 邮箱密码
#mailPassword="xxx"
# TLS协议的邮箱设置为true,否则设置为false
#starttlsEnable="true"
# 开启SSL协议的邮箱配置为true,否则为false。注意: starttlsEnable和sslEnable不能同时为true
#sslEnable="false"
# 邮件服务地址值,参考上面 mailServerHost
#sslTrust="smtp.qq.com"
# 业务用到的比如sql等资源文件上传到哪里,可以设置:HDFS,S3,NONE,单机如果想使用本地文件系统,请配置为HDFS,因为HDFS支持本地文件系统;如果不需要资源上传功能请选择NONE。强调一点:使用本地文件系统不需要部署hadoop
resourceStorageType="HDFS"
# 这里以保存到本地文件系统为例
#注:但是如果你想上传到HDFS的话,NameNode启用了HA,则需要将hadoop的配置文件core-site.xml和hdfs-site.xml放到conf目录下,本例即是放到/opt/dolphinscheduler/conf下面,并配置namenode cluster名称;如果NameNode不是HA,则修改为具体的ip或者主机名即可
defaultFS="hdfs://node1:8020" #hdfs://{具体的ip/主机名}:8020
# 如果没有使用到Yarn,保持以下默认值即可;如果ResourceManager是HA,则配置为ResourceManager节点的主备ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";如果是单ResourceManager请配置yarnHaIps=""即可
#yarnHaIps="192.168.xx.xx,192.168.xx.xx"
# 如果ResourceManager是HA或者没有使用到Yarn保持默认值即可;如果是单ResourceManager,请配置真实的ResourceManager主机名或者ip
singleYarnIp="node1"
# 资源上传根路径,支持HDFS和S3,由于hdfs支持本地文件系统,需要确保本地文件夹存在且有读写权限
resourceUploadPath="/dolphinscheduler"
# 具备权限创建resourceUploadPath的用户
#hdfsRootUser="hdfs"
#在哪些机器上部署DS服务,本机选localhost
ips="node1,node2,node3"
#ssh端口,默认22
sshPort="22"
#master服务部署在哪台机器上
masters="node1,node2"
#worker服务部署在哪台机器上,并指定此worker属于哪一个worker组,下面示例的default即为组名
workers="node3"
#报警服务部署在哪台机器上
alertServer="node3"
#后端api服务部署在在哪台机器上
apiServers="node1"
修改dolphinscheduler/conf/application-api.properties,指定web前端的端口和域名目录。
# server.port=12345 server.port=12345 # session config server.servlet.session.timeout=7200 server.servlet.context-path=/dolphinscheduler/ # file size limit for upload spring.servlet.multipart.max-file-size=1024MB spring.servlet.multipart.max-request-size=1024MB # enable response compression server.compression.enabled=true server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml # post content server.jetty.max-http-post-size=5000000 spring.messages.encoding=UTF-8 #i18n classpath folder , file prefix messages, if have many files, use "," seperator spring.messages.basename=i18n/messages # Authentication types (supported types: PASSWORD) security.authentication.type=PASSWORD3.5 启动Zookeeper集群
在node1,node2,node3上分别执行:
zkServer.sh start3.6 一键部署
注意:
第一次部署的话,在运行中3.3的3,stop server出现5次以下信息,此信息可以忽略
sh: bin/dolphinscheduler-daemon.sh: No such file or directory。
脚本完成后,在对应的机器上会启动以下5个服务,使用jps命令查看服务是否启动(jps为java JDK自带)
MasterServer ----- master服务 WorkerServer ----- worker服务 LoggerServer ----- logger服务 ApiApplicationServer ----- api服务 alertServer ----- alert服务
如果以上服务都正常启动,说明自动部署成功;部署成功后,可以进行日志查看,日志统一存放于logs文件夹内:
logs/ ├── dolphinscheduler-alert-server.log ├── dolphinscheduler-master-server.log |—— dolphinscheduler-worker-server.log |—— dolphinscheduler-api-server.log |—— dolphinscheduler-logger-server.log3.7 集群服务的启停
一键停止集群所有服务
sh ./bin/stop-all.sh
一键启动居群所有服务
sh ./bin/start-all.sh
启停各子服务
sh ./bin/dolphinscheduler-daemon.sh start master-server sh ./bin/dolphinscheduler-daemon.sh stop master-server sh ./bin/dolphinscheduler-daemon.sh start worker-server sh ./bin/dolphinscheduler-daemon.sh stop worker-server sh ./bin/dolphinscheduler-daemon.sh start api-server sh ./bin/dolphinscheduler-daemon.sh stop api-server sh ./bin/dolphinscheduler-daemon.sh start logger-server sh ./bin/dolphinscheduler-daemon.sh stop logger-server sh ./bin/dolphinscheduler-daemon.sh start alert-server sh ./bin/dolphinscheduler-daemon.sh stop alert-server4. DolphinScheduler基础操作
官方操作部署及操作手册(1.3.5版本)
4.1 登录系统访问前端页面地址,接口ip(自行修改) http://XXX.XXX.XXX.XXX:12345/dolphinscheduler
用户名admin
密码dolphinscheduler123
创建任务对列,如下:
如下图所示:
点击队列提交:
提交后,在Linux中给租户授予最大权限。修改文件/etc/passwd在最后一行,中间改为0:0,如下图。
使用默认或者参考官方文档(1.3.5)-快速上手
4.7 使用普通用户登录点击右上角用户名“退出”,重新使用普通用户登录。
4.8 创建项目 项目管理->创建项目->点击项目名称
点击工作流定义->创建工作流定义->上线工作流定义
定义工作流如下:
注意在脚本栏中,为了确保脚本能解析成功,最好添加了一句dos2unix命令。并且使用Linux绝对路径不容易出错。如环境中无dos2unix,则需先在服务器用yum命令先安装:
yum -y install dos2unix
dos2unix /sqoop_shell_path/sqoop/sqoop_import_XXX.sh /sqoop_shell_path/sqoop/sqoop_import_XXX.sh5.2 工作流上线
注意:如果后期要修改工作流,需要先点击红色按钮下线,修改完再上线.。运行后会产生一个工作流实例。
工作流可以运行很多次,每次都在下面的任务实例中有日志。任务示例如下:
- 任务实例状态显示成功,并且点击日志按钮,没有见到异常。在hive中查询表结果是否存在。



