一、简述

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

高可靠性

去中心化的多Master和多Worker, 自身支持HA功能, 采用任务队列来避免过载,不会造成机器卡死

简单易用

DAG监控界面,所有流程定义都是可视化,通过拖拽任务定制DAG,通过API方式与第三方系统对接, 一键部署

丰富的使用场景

支持暂停恢复操作. 支持多租户,更好的应对大数据的使用场景. 支持更多的任务类型,如 spark, hive, mr, python, sub_process, shell

高扩展性

支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master和Worker支持动态上下线

二、搭建过程

1.环境配置

 集群服务划分:

192.168.30.141 s141 (master)
192.168.30.142 s142 (master)
192.168.30.143 s143 (api)
192.168.30.144 s144 (worker)
192.168.30.145 s145 (worker)
192.168.30.146 s146 (worker)
192.168.30.147 s147 (worker)

1>安装软件

PostgreSQL (8.2.15+) or MySQL (5.7系列) : 两者任选其一即可, 如MySQL则需要JDBC Driver 5.1.47+

JDK (1.8+) : 必装,请安装好后在/etc/profile下配置 JAVA_HOME 及 PATH 变量

ZooKeeper (3.4.6+) :必装

Hadoop (2.6+) or MinIO :选装,如果需要用到资源上传功能,可以选择上传到Hadoop or MinIO上

 注意:DolphinScheduler本身不依赖Hadoop、Hive、Spark,仅是会调用他们的Client,用于对应任务的提交。

2>创建部署用户
# 创建用户需使用root登录,设置部署用户名,请自行修改,后面以dolphinscheduler为例
useradd dolphinscheduler; # 设置用户密码,请自行修改,后面以111111为例
echo "111111" | passwd --stdin dolphinscheduler # 配置sudo免密
echo 'dolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' >> /etc/sudoers
sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers

注意: - 因为是以 sudo -u {linux-user} 切换不同linux用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。 - 如果发现/etc/sudoers文件中有"Default requiretty"这行,也请注释掉 - 如果用到资源上传的话,还需要在`HDFS或者MinIO`上给该部署用户分配读写的权限

3>配置host映射和ssh打通

vim /etc/hosts

192.168.30.141 s141
192.168.30.142 s142
192.168.30.143 s143
192.168.30.144 s144
192.168.30.145 s145
192.168.30.146 s146
192.168.30.147 s147

在s141上,切换到部署用户并配置ssh本机免密登录(其他机器同理)

su dolphinscheduler;

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

注意:正常设置后,dolphinscheduler用户在执行命令ssh localhost 是不需要再输入密码的

在s141上,配置部署用户dolphinscheduler ssh打通到其他待部署的机器(其他机器同理)

su dolphinscheduler;
for ip in s142 s143 s144 s145 s146 s147; #请将此处s142 s143等替换为自己要部署的机器的hostname
do
ssh-copy-id $ip #该操作执行过程中需要手动输入dolphinscheduler用户的密码
done
# 当然 通过 sshpass -p xxx ssh-copy-id $ip 就可以省去输入密码了

在s141上,修改目录权限,创建并使得部署用户对/opt/dolphinscheduler目录有操作权限(其他机器同理)

cd /opt
mkdir dolphinscheduler
sudo chown -R dolphinscheduler:dolphinscheduler dolphinscheduler

2.安装包获取

可以下载最新版本的后端安装包,也可以从github上clone源代码自己打包,推荐后者,可以先把datasource.properties中数据库连接修改为对应的,把dolphinscheduler_env.sh中环境变量修改自己对应的位置,将代码包上传至服务器 /opt/dolphinscheduler 下

3.安装脚本

该脚本只启动了worker,如果要启动其他服务,可以解开注释或添加对应服务的命令即可,划分好集群中各机器部署的服务,对应相应的脚本

#!/bin/sh
workDir=`dirname $0`
workDir=`cd ${workDir};pwd` files=$(ls -l /opt/dolphinscheduler/ |awk '/^-/ {print $NF}' | grep 'apache-dolphinscheduler-incubating')
file=''
for i in $files
do
file=$i
done
tar -zxvf $workDir/$file -C $workDir
ds_dir=${file%%.tar.gz*} #sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop master-server
sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop worker-server
#sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop api-server rm -rf $workDir/dolphinscheduler
echo "mv $workDir/$ds_dir to $workDir/dolphinscheduler"
mv $workDir/$ds_dir $workDir/dolphinscheduler chmod 755 $workDir/dolphinscheduler/bin/*
sed -i 's/\r$//' $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh
sed -i 's/\r$//' $workDir/dolphinscheduler/conf/env/dolphinscheduler_env.sh #sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh start master-server
sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh start worker-server
#sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh start api-server

4.部署

这里使用Alibaba Cloud Toolkit插件,可以很方便部署到多台机器上

查看服务:

集群服务启动成功

访问页面:http://192.168.30.143:12345/dolphinscheduler

部署成功

centos7搭建dolphinscheduler集群的更多相关文章

  1. centos7搭建kafka集群-第二篇

    好了,本篇开始部署kafka集群 Zookeeper集群搭建 注:Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群(也可以用kafka自带的ZK,但不推荐) 1.软 ...

  2. centos7搭建kafka集群

    一.安装jdk 1.下载jdk压缩包并移动到/usr/local目录 mv jdk-8u162-linux-x64.tar.gz /usr/local 2.解压 tar -zxvf jdk-8u162 ...

  3. 【转】centos7 搭建etcd集群

    转自http://www.cnblogs.com/zhenyuyaodidiao/p/6237019.html 一.简介 “A highly-available key value store for ...

  4. 初学Hadoop:利用VMWare+CentOS7搭建Hadoop集群

     一.前言 开始学习数据处理相关的知识了,第一步是搭建一个Hadoop集群.搭建一个分布式集群需要多台电脑,在此我选择采用VMWare+CentOS7搭建一个三台虚拟机组成的Hadoop集群. 注:1 ...

  5. Centos7搭建zookeeper集群

    centos7与之前的版本都不一样,修改主机名在/ect/hostname 和/ect/hosts 这两个文件控制 首先修改/ect/hostname vi /ect/hostname 打开之后的内容 ...

  6. CentOS7 搭建RabbitMQ集群 后台管理 历史消费记录查看

    简介 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接 ...

  7. CentOS7 搭建 Consul 集群

    环境准备: ssh shell工具: 远程连接 三个CentOS示例: 部署集群 配置好各个实例之间的网络访问,以及ssh免密登录. 下载&上传: 1.下载 Consul: Download ...

  8. CentOS7 搭建 Redis 集群

    一.手动搭建 1. 准备节点 节点数量至少为 6 个才能保证组成完整高可用的集群 (1) 目录结构 cluster ├── 9001 │   ├── data │   │   ├── appendon ...

  9. Centos7搭建k8s集群

    一.部署环境 操作系统:CentOS Linux release 7.6.1810 (Core) 安装软件: docker:18.06.3-ce kubernetes:v1.15.4 二.部署架构: ...

随机推荐

  1. JQuery ajax request及Java服务端乱码问题及设置

    今天花了半天功夫才搞定2个乱码问题 1. 原先一直用form提交,现在改作JQuery ajax 提交,发现乱码. 2. window.location url中含有中文提交后,乱码. 第一个问题: ...

  2. Application Data in Docker 笔记

    Application Data in Docker By default all files created inside a container are stored on a writable ...

  3. 5、Mycat安全

    1.权限配置 [1].user标签 目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制.是通过 server.xml 的 user 标签进行配置. # ...

  4. C#中的深度学习(三):理解神经网络结构

    在这篇文章中,我们将回顾监督机器学习的基础知识,以及训练和验证阶段包括哪些内容. 在这里,我们将为不了解AI的读者介绍机器学习(ML)的基础知识,并且我们将描述在监督机器学习模型中的训练和验证步骤. ...

  5. Python-其他-round()保留小数位时遇到的问题

    最近有一个需求,原有整数计算,改成小数计算,保留一位小数. 于是按照需求,将数据结构由 int 改为 float ,计算时采用round()方法来保留小数位. 第一版代码如下: a = 0.10000 ...

  6. 蒲公英 · JELLY技术周刊 Vol.36: 你好 Hooks,再见 2020

    蒲公英 · JELLY技术周刊 Vol.36 不知不觉,蒲公英已经伴随我们走过了一年时光,在这一年我们从基础技术.前端框架.图形编程.人工智能等诸多领域为大家推介了三百余篇文章,尽管这一年来风雨不断, ...

  7. ServletContext的作用

    一个项目只有一个ServletContext对象,一个tomcat有多个项目 作用:在多核Servlet中来获取这个唯一的对象,使用ta给多个Servlet传递数据. 在Tomcat启动时创建,在To ...

  8. vue的绑定属性v-bind

    v-bind的简略介绍 v-bind用于绑定一个或多个属性值,或者向另一个组件传递props值.目前,个人所用之中,更多的是使用于图片的链接src,a标签中的链接href,还有样式以及类的一些绑定,以 ...

  9. APP逆向案例---x会app

    步骤一 抓个包 其中m_d,m_e为加密参数 步骤二(已经看了是360加固我们脱壳一下) # Author: hluwa <hluwa888@gmail.com> # HomePage: ...

  10. ES6参数默认值,剩余参数及展开数组

    一.函数的参数默认值 在ES6之前,想要给参数设置默认值得话,只能在函数体内部加判断设置,比如如果传递参数为undefined时为true, 否则为false,如下图example1,ES6出现语法可 ...