在 AWS 平台搭建 DolphinScheduler
AWS平台搭建 DolphinScheduler
DolphinScheduler 是当前热门的调度器,提供了完善的可视化、拖拉拽式的调度。在 AWS 平台上提供了 airflow 与 step function 这两种调度工具,但两者在可视化操作上的支持较为有限,无法满足所有AWS用户场景。有部分用户、场景对 DolphinSchduler 有需求,所以本文提供了详细的在 AWS 上搭建 DolphinScheduler 的步骤。
本文目标:指导创建一个Dolphin 集群,包含1个MasterServer 与 1个WorkerServer。可以直接与 EMR 环境进行集成,Hive、Spark 等 job 可以直接提交到后端 EMR 集群。
1. 规划
1.1. 节点选型
2台EC2节点,分别为 :
l MasterServer:包含MasterServer、Zookeeper、ApiServer、AlertServer
l WorkerServer:包含WokerServer
配置均为c5.xlarge(4 vCPU,8GB), Amazon Linux 2,50GB EBS卷存储。
1台RDS MySQL8。配置为db.m6g.large,存储为20g。与Dolphinscheduler 节点同一个子网。
2. 部署
前置条件
- EMR集群已就绪(测试EMR版本为5.30.1)
- RDS MySQL 8 已就绪
2.1. 制作Hadoop环境
参考文档在实例内配置与目标EMR集群同样配置的环境:
https://laurence.blog.csdn.net/article/details/108529087
https://github.com/bluishglc/emr-edgenode-maker
按1.1.中介绍的节点选型启动EC2实例。建议将实例启动在与EMR集群同一个子网,并在安全组中允许所有来自EMR安全组的流量。
上传pem文件到实例:
|
scp -i keys/xx.pem keys/xx.pem ec2-user@xxx: |
ssh登录到实例,执行:
|
sudo yum install -y git git clone https://github.com/bluishglc/emr-edgenode-maker.git cd emr-edgenode-maker/ chmod a+x make-emr-edge-node.sh # 其中10.0.0.193 为 EMR Master 节点私网ip sudo ./make-emr-edge-node.sh init /home/ec2-user/xx.pem 10.0.0.193 # 重启实例 sudo reboot # 再次ssh登陆实例 # 制作hadoop客户端 sudo ./emr-edgenode-maker/make-emr-edge-node.sh make-hadoop-client /home/ec2-user/xx.pem 10.0.0.193 # 制作spark客户端 sudo ./emr-edgenode-maker/make-emr-edge-node.sh make-spark-client /home/ec2-user/xx.pem 10.0.0.193 # 制作 hive 客户端 sudo ./emr-edgenode-maker/make-emr-edge-node.sh make-hive-client /home/ec2-user/xx.pem 10.0.0.193 # 制作hbase 客户端 sudo ./emr-edgenode-maker/make-emr-edge-node.sh make-hbase-client /home/ec2-user/xx.pem 10.0.0.193 # 为hadoop用户配置ssh公钥 sudo cp ~/.ssh/authorized_keys /home/hadoop/.ssh/authorized_keys sudo chown hadoop:hadoop /home/hadoop/.ssh/authorized_keys # 测试 hdfs 与 hive ssh -i xx.pem hadoop@localhost hdfs dfs -ls / hive -e "select version()" |
2.2. 安装dolphinscheduler
安装最新版 3.0.0-beta-1
官方下载地址:https://dolphinscheduler.apache.org/zh-cn/download/download.html
参考官方安装文档:
https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/installation/cluster.html
以 hadoop 用户登陆实例,配置用户免密以及权限:
|
# 创建用户需使用 root 登录 sudo useradd dolphinscheduler # 添加密码 sudo su echo "dolphinscheduler" | passwd --stdin dolphinscheduler exit # 配置 sudo 免密 sudo sed -i '$adolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' /etc/sudoers sudo sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers # 下载dolphinschduler bin格式安装包 tar -zxvf apache-dolphinscheduler-3.0.0-beta-1-bin.tar.gz # 修改目录权限,使得部署用户对二进制包解压后的 apache-dolphinscheduler-*-bin 目录有操作权限 sudo chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-3.0.0-beta-1-bin |
配置机器ssh免密登陆
|
sudo su dolphinscheduler cd ~ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys 注意: 配置完成后,可以通过运行命令 ssh localhost 判断是否成功,如果不需要输入密码就能ssh登陆则证明成功 |
2.3. 配置dolphinscheduler
使用当前实例创建一个AMI,然后通过AMI启动一个新实例。
当前实例为MasterServer(10.0.0.41),新实例为WorkerServer(10.0.0.244)。
2.3.1. 配置MasterServer
启动zookeeper:
|
sudo zookeeper-server start |
修改DS相关配置。修改apache-dolphinscheduler-3.0.0-beta-1-bin/bin/env/install_env.sh
sudo vi apache-dolphinscheduler-3.0.0-beta-1-bin/bin/env/install_env.sh
|
修改内容: # A comma separated list of machine hostname or IP would be installed DolphinScheduler, # including master, worker, api, alert. If you want to deploy in pseudo-distributed # mode, just write a pseudo-distributed hostname # Example for hostnames: ips="ds1,ds2,ds3,ds4,ds5", Example for IPs: ips="192.168.8.1,192.168.8.2,192.168.8.3,192.168.8.4,192.168.8.5" ips=${ips:-"10.0.0.41,10.0.0.244"} # A comma separated list of machine hostname or IP would be installed Master server, it # must be a subset of configuration `ips`. # Example for hostnames: masters="ds1,ds2", Example for IPs: masters="192.168.8.1,192.168.8.2" masters=${masters:-"10.0.0.41"} # A comma separated list of machine <hostname>:<workerGroup> or <IP>:<workerGroup>.All hostname or IP must be a # subset of configuration `ips`, And workerGroup have default value as `default`, but we recommend you declare behind the hosts # Example for hostnames: workers="ds1:default,ds2:default,ds3:default", Example for IPs: workers="192.168.8.1:default,192.168.8.2:default,192.168.8.3:default" workers=${workers:-"10.0.0.244:default"} # A comma separated list of machine hostname or IP would be installed Alert server, it # must be a subset of configuration `ips`. # Example for hostname: alertServer="ds3", Example for IP: alertServer="192.168.8.3" alertServer=${alertServer:-"10.0.0.41"} # A comma separated list of machine hostname or IP would be installed API server, it # must be a subset of configuration `ips`. # Example for hostname: apiServers="ds1", Example for IP: apiServers="192.168.8.1" apiServers=${apiServers:-"10.0.0.41"} # The directory to install DolphinScheduler for all machine we config above. It will automatically be created by `install.sh` script if not exists. # Do not set this configuration same as the current path (pwd) installPath=${installPath:-"~/dolphinscheduler"} # The user to deploy DolphinScheduler for all machine we config above. For now user must create by yourself before running `install.sh` # script. The user needs to have sudo privileges and permissions to operate hdfs. If hdfs is enabled than the root directory needs # to be created by this user deployUser=${deployUser:-"dolphinscheduler"} |
修改dolphinscheduler_env.sh文件
sudo vi apache-dolphinscheduler-3.0.0-beta-1-bin/bin/env/dolphinscheduler_env.sh
|
# 修改内容 export HADOOP_HOME=${HADOOP_HOME:-/usr/lib/hadoop} export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/etc/hadoop/conf} export SPARK_HOME1=${SPARK_HOME1:-/usr/lib/spark} export PYTHON_HOME=${PYTHON_HOME:-/usr/lib64/python3.7} export JAVA_HOME=${JAVA_HOME:-/etc/alternatives/jre} export HIVE_HOME=${HIVE_HOME:-/usr/lib/hive} #export FLINK_HOME=${FLINK_HOME:-/opt/soft/flink} #export DATAX_HOME=${DATAX_HOME:-/opt/soft/datax} export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$PATH export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-UTC} export DATABASE=${DATABASE:-mysql} export SPRING_PROFILES_ACTIVE=${DATABASE} export SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver export SPRING_DATASOURCE_URL=jdbc:mysql://xxxx:3306/dolphinscheduler export SPRING_DATASOURCE_USERNAME=tang export SPRING_DATASOURCE_PASSWORD=password export SPRING_CACHE_TYPE=${SPRING_CACHE_TYPE:-none} export MASTER_FETCH_COMMAND_NUM=${MASTER_FETCH_COMMAND_NUM:-10} export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper} export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-10.0.0.41:2181} |
2.3.2. 初始化数据库
使用RDS MySQL 8 作为DS的数据库。
下载mysql connector,放入DS 的lib目录下的tools/libs/
在MasterServer节点执行:
|
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar sudo cp mysql-connector-java-8.0.28.jar apache-dolphinscheduler-3.0.0-beta-1-bin/tools/libs/ sudo cp mysql-connector-java-8.0.28.jar apache-dolphinscheduler-3.0.0-beta-1-bin/master-server/libs/ sudo cp mysql-connector-java-8.0.28.jar apache-dolphinscheduler-3.0.0-beta-1-bin/worker-server/libs/ sudo cp mysql-connector-java-8.0.28.jar apache-dolphinscheduler-3.0.0-beta-1-bin/api-server/libs/ sudo cp mysql-connector-java-8.0.28.jar apache-dolphinscheduler-3.0.0-beta-1-bin/alert-server/libs/ |
登陆mysql,创建用户与数据库:
|
sudo yum install -y mysql # 登陆rds mysql mysql -hxxx -utang -p # 创建dolphinscheduler 数据库 CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; |
初始化数据库:
|
bash apache-dolphinscheduler-3.0.0-beta-1-bin/tools/bin/upgrade-schema.sh |
2.3.3. 启动DolphineScheduler
|
su dolphinscheduler cd ~ sudo cp -r /home/hadoop/apache-dolphinscheduler-3.0.0-beta-1-bin ./ sudo chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-3.0.0-beta-1-bin # 加入zookeeper lib sudo cp /usr/lib/hadoop/lib/zookeeper-3.4.14.jar apache-dolphinscheduler-3.0.0-beta-1-bin/master-server/libs/ sudo cp /usr/lib/hadoop/lib/zookeeper-3.4.14.jar apache-dolphinscheduler-3.0.0-beta-1-bin/worker-server/libs/ sudo cp /usr/lib/hadoop/lib/zookeeper-3.4.14.jar apache-dolphinscheduler-3.0.0-beta-1-bin/api-server/libs/ sudo cp /usr/lib/hadoop/lib/zookeeper-3.4.14.jar apache-dolphinscheduler-3.0.0-beta-1-bin/alert-server/libs/ # 启动进程 apache-dolphinscheduler-3.0.0-beta-1-bin/bin/install.sh |
2.3.4. 登陆DolphinScheduler
浏览器访问地址 http://masterserver_ip:12345/dolphinscheduler/ui 即可登录系统UI。
默认的用户名和密码是 admin/dolphinscheduler123
在 AWS 平台搭建 DolphinScheduler的更多相关文章
- 【iOS】Jenkins Gitlab持续集成打包平台搭建
Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...
- Jenkins Gitlab持续集成打包平台搭建
http://www.cnblogs.com/skyseraph/p/5695021.html 1. 相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的 ...
- hadoop伪分布式平台搭建(centos 6.3)
最近要写一个数据量较大的程序,所以想搭建一个hbase平台试试.搭建hbase伪分布式平台,需要先搭建hadoop平台.本文主要介绍伪分布式平台搭建过程. 目录: 一.前言 二.环境搭建 三.命令测试 ...
- LNMP平台搭建---MySQL安装篇
在前两篇中,安装了一个基本的Web服务器,但是只能提供静态网页查看,要做成动态网站,就必须要数据库或其他编程语言支持了,这里先介绍MySQL数据库的安装. MySQL是一个开源的数据库,在互联网行业应 ...
- 基于Moodle的IT课程辅助教育平台搭建
基于Moodle的IT课程辅助教育平台搭建 Moodle是一个开源课程管理系统(CMS),也被称为学习管理系统(LMS)或虚拟学习环境(VLE).它已成为深受世界各地教育工作者喜爱的一种为学生建立网上 ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...
- LNMP平台搭建---Nginx安装篇
在上一篇博文<LNMP平台搭建---Linux系统安装篇>中,我们安装了CentOS版本的Linux操作系统,现在,我们来安装一个Web服务器,大标题写着LNMP,其中的N就是Nginx, ...
- LNMP平台搭建---Linux系统安装篇
在互联网网站开发领域,有一个名词,大家一定不陌生,那就是LAMP,经典的Web服务器环境,由Linux+Apache+MySQL+PHP组成,,后来,一个名叫Nginx的Web服务器开源出来了,因其更 ...
- Storm on Yarn :原理分析+平台搭建
Storm on YARN: Storm on YARN被视为大规模Web应用与传统企业应用之间的桥梁.它将Storm事件处理平台与YARN(Yet Another Resource Negotiat ...
- LAMP平台搭建菜鸟入门级实验
LAMP平台搭建(菜鸟入门级) mysql 安装: (1)二进制安装 二进制安装 ,执行解压配置即可.无须执行三布安装. (2)源码编译安装 安装准备工作: (1)查看系统配置:#uname -a/ ...
随机推荐
- 将Go开发的代码部署到k8s集群
一.在服务器上编译go程序 1.1 编译go语言程序 # 安装go yum install go -y mkdir /root/test && cd /root/test # 设置代理 ...
- HZ2023 远足游记
你说得对,但是我放假之前写的 P4689 代码没了 所以来摆 4.6(远足) 上午 走路,刚开始感觉没啥 走到园博园发现没预料中那么顺利 但是还感觉没啥 因为也没预料到 \(N·m\) 学校会让我们原 ...
- SpringBoot-EasyExcel导出数据(带图片)
前言 EasyExcel 是阿里巴巴开源的一个Java操作Excel的技术,和EasyPoi一样是封装Poi的工具类. 但是不同的地方在于,在EasyExcel中解决了Poi技术读取大批量数据耗费内存 ...
- python教程5:函数编程
函数编程 特性: 1.减少重复代码 2.让程序变的可扩展 3.使程序变得易维护 定义: 默认参数 要求:默认参数放在其他参数右侧 指定参数(调用的时候) 正常情况下,给函数传参数要按顺序,如果不想按 ...
- 计算机网络基础 — Linux 内核网络协议栈
目录 文章目录 目录 前文列表 前言 数据报文的封装与分用 Linux 内核网络协议栈 协议栈的分层结构 协议栈的数据结构 网络协议栈初始化流程 Socket 创建流程 协议栈收包流程概述 协议栈发包 ...
- centos7中输入ifconfig 没有IP地址
vmware安装的centos7中没有出现eth0网卡,也没有ip,不能上网,输入ifconfig后如下图 解决办法 1.编辑网卡的配置文件 vi /etc/sysconfig/network-scr ...
- PStorm 安装与破解
官方下载地址: https://www.jetbrains.com/zh-cn/phpstorm/promo/?utm_source=baidu&utm_medium=cpc&utm_ ...
- 做程序员这么久,你知道UTF-8和Unicode的关系吗?
UTF-8和Unicode到底有什么区别?是存储方式不同?编码方式不同?它们看起来似乎很相似,但是实际上他们并不是同一个层次的概念. 要想先讲清楚他们的区别,首先应该讲讲Unicode的来由: 众所周 ...
- 面试官:说一说如何优雅的关闭线程池,我:shutdownNow,面试官:粗鲁!
写在开头 面试官:"小伙子,线程池使用过吗,来聊一聊它吧!" 我:"好的,然后巴拉巴拉一顿输出之前看过的build哥线程池十八问..." 面试官满意的点了点头, ...
- uniapp 复选框全选(基于colorui组件)
说明:本案例的样式基于colorui组件库 感兴趣的小伙伴可以看下教程 colorui组件库开发文档或者csdn的文档,顺便再分享下 colorui的群资源 html <checkbox-gro ...