DolphinScheduler集群的部署
基础环境:
Mysql(5.7.25)
JDK(1.8.0_144)
Zookeeper(3.4.10)
节点部署安排
集群部署步骤
将下载的二进制tar.gz包解压到部署目录。
mkdir -p /opt/module/dolphinscheduler; cd /opt/module/dolphinscheduler; tar -zxvf apache-dolphinscheduler-1.3.6-bin.tar.gz -C /opt/module/dolphinscheduler; mv apache-dolphinscheduler-1.3.6-bin dolphinscheduler;
创建用户:在所有部署调度的机器上创建部署用户,并且一定要配置sudo免密。假如我们计划在hadoop01,hadoop02,hadoop03这3台机器上部署调度,首先需要在每台机器上都创建部署用户。
useradd dolphinscheduler; echo "密码" | passwd --stdin dolphinscheduler; sudo echo 'dolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' >> /etc/sudoers; sudo sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers;
配置hosts和ssh,为后续的一键部署做准备。
vi /etc/hosts #127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.32.10 hadoop01 192.168.32.11 hadoop02 192.168.32.12 hadoop03
在hadoop01上,切换到部署用户并配置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 ssh-copy-id hadoop02 ssh-copy-id hadoop03
修改目录权限,使得部署用户对dolphinscheduler目录有操作权限
sudo chown -R dolphinscheduler:dolphinscheduler dolphinschedule
数据库初始化
mysql -h192.168.xx.xx -P3306 -uroot -p; mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%' IDENTIFIED BY '1qaz2wsx'; mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost' IDENTIFIED BY '1qaz2wsx'; mysql> flush privileges;
修改 conf 目录下 datasource.properties ,配置存储元数据的数据库配置,这里主要是注释默认的postgresql,配置成mysql
vi conf/datasource.properties # postgresql #spring.datasource.driver-class-name=com.mysql.jdbc.Driver #spring.datasource.url=jdbc:mysql://hadoop01:3306/dolphinscheduler?characterEncoding=UTF-8&allowMultiQueries=true #spring.datasource.username=root #spring.datasource.password=945100 # mysql spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://hadoop01:3306/dolphinscheduler?characterEncoding=UTF-8&allowMultiQueries=true spring.datasource.username=** spring.datasource.password=***
添加jar包,手动添加 [ mysql-connector-java 驱动 jar ] 包到 lib 目录下
执行创建元数据表及导入基础数据脚本
sh script/create-dolphinscheduler.sh
修改 conf/env 目录下的 dolphinscheduler_env.sh 环境变量(以dataX任务为例,其他的配置先注销)
#export HADOOP_HOME=/opt/soft/hadoop #export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop #export SPARK_HOME1=/opt/soft/spark1 #export SPARK_HOME2=/opt/soft/spark2 export PYTHON_HOME=/opt/module/python export JAVA_HOME=/opt/module/jdk1.8.0_144 #export HIVE_HOME=/opt/soft/hive #export FLINK_HOME=/opt/soft/flink export DATAX_HOME=/opt/module/dataX/datax #export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME:$PATH export PATH=$PYTHON_HOME/bin:$JAVA_HOME/bin:$DATAX_HOME:$PATH
这里有几个坑,首先 DATAX_HOME的路径需要指定到datax.py所在路径,在PATH变量处不需要添加/bin,此外,dataX的同步依赖Python,因此需要配置Python的安装路径,并且Python的版本不能低于2.7!!!,我本来使用的Centos6自带的Python是2.6.5版本,导致后续启动dataX任务一直报错!!!
将jdk软链到/usr/bin/java下
sudo ln -s /usr/java/jdk1.8.0_181-cloudera/bin/java /usr/bin/java
修改一键部署配置文件 conf/config/install_config.conf中的各参数(以dataX任务为例,其他的配置先注销)
[dolphinscheduler@test1 dolphinscheduler-bin]$vi conf/config/install_config.conf # 这里填 mysql or postgresql dbtype="mysql" # 数据库连接地址 dbhost="hadoop01:3306" # 数据库名 dbname="dolphinscheduler" # 数据库用户名,此处需要修改为上面设置的{user}具体值 username="root" # 数据库密码, 如果有特殊字符,请使用\转义,需要修改为上面设置的{passowrd}具体值 passowrd="xxxx" #Zookeeper地址,单机本机是localhost:2181,记得把2181端口带上 zkQuorum="hadoop01:2181,hadoop02:2181,hadoop03:2181" #将DS安装到哪个目录,如: /usr/local/src/dolphinscheduler,不同于现在的目录 installPath="/opt/module/dolphinscheduler" #使用哪个用户部署,使用之前创建的用户 deployUser="dolphinscheduler" # 邮件配置,以qq邮箱为例 # 邮件协议 mailProtocol="SMTP" # 邮件服务地址,这是是qq邮箱 mailServerHost="smtp.qq.com" # 邮件服务端口 mailServerPort="587" # mailSender和mailUser配置成一样即可 # 发送者 mailSender="1009XXXXXX@qq.com" # 发送用户 mailUser="1009XXXXXX@qq.com" # 邮箱密码,这里是开启协议后服务商提供的密码 mailPassword="asdfrewgbvct" # 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为例 #注:但是如果你想上传到HDFS的话,NameNode启用了HA,则需要将hadoop的配置文件core-site.xml和hdfs-site.xml放到conf目录下,并配置namenode cluster名称;如果NameNode不是HA,则修改为具体的ip或者主机名即可 # 本地文件系统:"file:///data/dolphinscheduler" 或 HDFS集群: hdfs://{具体的ip/主机名}:8020 defaultFS="hdfs://192.168.110.100:8020" # 如resourcemanager HA启用,则配置为ResourceManager节点的主备ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";如果是单ResourceManager请配置yarnHaIps=""即可 yarnHaIps="" # 如果ResourceManager是HA或者没有使用到Yarn保持默认值"yarnIp1"即可;如果是单ResourceManager,请配置真实的ResourceManager主机名或者ip singleYarnIp="192.168.xxx.xxx" # 资源上传根路径,支持HDFS和S3,由于hdfs支持本地文件系统,需要确保本地文件夹存在且有读写权限 resourceUploadPath="/data/dolphinscheduler" # 具备权限创建resourceUploadPath的用户 hdfsRootUser="hdfs" #在哪些机器上部署DS服务,本机选localhost(如下配置为单机配置,需要集群配置,直接参考默认值即可) ips="hadoop01,hadoop02,hadoop03" #ssh端口,默认22 sshPort="22" #master服务部署在哪台机器上 masters="hadoop01" #worker服务部署在哪台机器上,并指定此worker属于哪一个worker组,下面示例的default即为组名 workers="hadoop02:default,hadoop03:default" #报警服务部署在哪台机器上 alertServer="hadoop01" #后端api服务部署在在哪台机器上 apiServers="hadoop01"
开始一键部署
切换到部署用户dolphinscheduler,然后执行一键部署脚本
sh install.sh
脚本完成后,以下5个服务会分布启动在各个节点上
MasterServer ----- master服务 WorkerServer ----- worker服务 LoggerServer ----- logger服务 ApiApplicationServer ----- api服务 AlertServer ----- alert服务
如果以上服务都正常启动,说明自动部署成功部署成功后,可以进行日志查看,日志统一存放于logs文件夹内,dolphinscheduler的log日志目录: /opt/dolphinscheduler/logs
此时就可以登录Web UI界面(启动DolphinScheduler之前需要启动zookeeper和元数据库)
地址: http://hadoop01:12345/dolphinscheduler 用户名: admin 密 码: dolphinscheduler123
集群启动命令
1.一键停止集群所有服务 sh ./bin/stop-all.sh 2.一键开启集群所有服务 sh ./bin/start-all.sh 3.启停Master sh ./bin/dolphinscheduler-daemon.sh start master-server sh ./bin/dolphinscheduler-daemon.sh stop master-server 4.启停Worker sh ./bin/dolphinscheduler-daemon.sh start worker-server sh ./bin/dolphinscheduler-daemon.sh stop worker-server 5.启停Api sh ./bin/dolphinscheduler-daemon.sh start api-server sh ./bin/dolphinscheduler-daemon.sh stop api-server 6.启停Logger sh ./bin/dolphinscheduler-daemon.sh start logger-server sh ./bin/dolphinscheduler-daemon.sh stop logger-server 7.启停Alert sh ./bin/dolphinscheduler-daemon.sh start alert-server sh ./bin/dolphinscheduler-daemon.sh stop alert-server
登录DolphinScheduler Web进行任务部署
1.创建租户,租户是DS Job在集群中运行时使用的用户身份,如果配置的用户不存在,会自动创建该用户.
2.创建用户,用户是登录客户端的账户,第一次使用admin,创建用户后既可以使用创建的用户登录Web客户端
7. 上线工作流,并手动运行.可在工作流实例中查看工作流,待运行结束,可在任务实例中查看运行日志.
这里dataX同步任务执行成功,并查看了dataX运行日志.
至此,使用DS调度DataX完成mysql到mysql的数据同步任务完成.
Tips:
1. 集群启动时要启动zookeeper集群和元数据库服务 2. 注意Python的版本,要保证是2.7以上 3. 配置dataX的路径时要指定到datax.py的所在路径,PATH中要注意不要bin 4. 如果涉及到文件权限问题, 要注意设置文件访问权限,保证dolphinScheduler的操作权限.