Installation et déploiement d'Apache DolphinSchedule

Installation et déploiement d'Apache DS

@Auteur : Michealkz

Adresse de téléchargement du miroir

Adresse officielle de téléchargement: https://dolphinscheduler.apache.org/zh-cn/download/download.html

Adresse de téléchargement du miroir domestique:

# 清华源下载地址
https://mirrors.tuna.tsinghua.edu.cn/apache/incubator/dolphinscheduler/1.3.5/apache-dolphinscheduler-incubating-1.3.5-dolphinscheduler-bin.tar.gz

# 北理工源下载地址
https://mirrors.bfsu.edu.cn/apache/incubator/dolphinscheduler/1.3.5/apache-dolphinscheduler-incubating-1.3.5-dolphinscheduler-bin.tar.gz

Mode de déploiement: déploiement autonome / déploiement en cluster

Pour un déploiement autonome, reportez-vous au document officiel: https://dolphinscheduler.apache.org/zh-cn/docs/1.3.5/user_doc/quick-start.html

Voici la méthode de déploiement du cluster


Déploiement de cluster (cluster)

1. Planification des hôtes:

Choisissez trois nœuds pour installer DolphinSchedule, le choix des nœuds peut être libre, il est recommandé de rester sur la même machine que le nœud gardien de zoo

192.168.5.72 Surveiller DolphinScheduler
192.168.5.19 hdnamenode DolphinScheduler
192.168.5.61 hddatanode01 DolphinScheduler

2. Installation du logiciel de base

  • PostgreSQL (8.2.15+) ou MySQL (série 5.7): vous pouvez choisir l'un des deux, tel que MySQL nécessite le pilote JDBC 5.1.47+
  • JDK (1.8+): obligatoire, veuillez configurer les variables JAVA_HOME et PATH sous / etc / profile après l'installation
  • ZooKeeper (3.4.6+): requis
  • Hadoop (2.6+) ou MinIO: facultatif, si vous devez utiliser la fonction de téléchargement de ressources, vous pouvez choisir de télécharger sur Hadoop ou MinIO
 注意:DolphinScheduler本身不依赖Hadoop、Hive、Spark,仅是会调用他们的Client,用于对应任务的提交。

3. Téléchargez le package binaire tar.gz

  • Veuillez télécharger la dernière version du package d'installation back-end dans le répertoire de déploiement du serveur, par exemple, créez / opt / dolphinscheduler comme répertoire de déploiement d'installation, téléchargez l'adresse: téléchargez , téléchargez le package tar dans ce répertoire après le téléchargement et décompressez
# 创建部署目录,部署目录请不要创建在/root、/home等高权限目录 
mkdir -p /opt/dolphinscheduler;
cd /opt/dolphinscheduler;

# 解压缩
tar -zxvf apache-dolphinscheduler-incubating-1.3.4-dolphinscheduler-bin.tar.gz -C /opt/dolphinscheduler;
mv apache-dolphinscheduler-incubating-1.3.4-dolphinscheduler-bin  dolphinscheduler-bin

4. Créer le mappage des utilisateurs et des hôtes de déploiement

  • Créez des utilisateurs de déploiement sur toutes les machines de planification de déploiement et assurez-vous de configurer sudo pour éviter les mots de passe. Si nous prévoyons de déployer la planification sur 4 machines, ds1, ds2, ds3 et ds4, nous devons d'abord créer des utilisateurs de déploiement sur chaque machine
# 创建用户需使用root登录,设置部署用户名,请自行修改,后面以dolphinscheduler为例
useradd dolphinscheduler;

# 设置用户密码,请自行修改,后面以dolphinscheduler123为例
echo "dolphinscheduler123" | 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`上给该部署用户分配读写的权限

5. Configurer le mappage des hôtes et ssh pour obtenir et modifier les autorisations de répertoire

  • Utilisez la première machine (le nom d'hôte est ds1) comme machine de déploiement, configurez les hôtes de toutes les machines à déployer sur ds1 et connectez-vous en tant que root sur ds1
vi /etc/hosts

#add ip hostname
192.168.xxx.xxx ds1
192.168.xxx.xxx ds2
192.168.xxx.xxx ds3
192.168.xxx.xxx ds4

Remarque: veuillez supprimer ou commenter la ligne 127.0.0.1

Sur DS1, basculez vers l'utilisateur de déploiement et configurez la connexion SSH locale sans mot de passe

su dolphinscheduler;

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

Remarque: après le réglage normal, l'utilisateur de dolphinscheduler ssh localhostn'a pas besoin de saisir le mot de passe lors de l'exécution de la commande

Sur ds1, configurez l'utilisateur de déploiement dolphinscheduler ssh pour qu'il se connecte à d'autres machines à déployer

Sur ds1, modifiez les autorisations du répertoire afin que l'utilisateur de déploiement dispose des autorisations d'exploitation sur le répertoire dolphinscheduler-bin

sudo chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-bin

6. Initialisation de la base de données

  • Entrez dans la base de données, la base de données par défaut est PostgreSQL, si vous choisissez MySQL, vous devez ajouter le package de pilote mysql-connector-java au répertoire lib de DolphinScheduler, voici MySQL à titre d'exemple
  mysql -h192.168.xx.xx -P3306 -uroot -p
  • Après être entré dans la fenêtre de ligne de commande de la base de données, exécutez la commande d'initialisation de la base de données et définissez le compte d'accès et le mot de passe. Remarque: {user} et {password} doivent être remplacés par un nom d'utilisateur et un mot de passe de base de données spécifiques
  CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{root}'@'%' IDENTIFIED BY '{CDPmonitor123456*}';
  GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{root}'@'localhost' IDENTIFIED BY '{CDPmonitor123456*}';
  flush privileges;
  • Créer une table et importer des données de base
    Modifier la configuration suivante dans datasource.properties dans le répertoire conf
  vi conf/datasource.properties

Si vous choisissez MySQL, veuillez commenter la configuration liée à PostgreSQL (la même chose est vraie pour l'inverse), et vous devez également ajouter manuellement le package [ mysql-connector-java driver jar ] au répertoire lib. Le téléchargement ici est mysql -connector-java-5.1.47.jar, puis configurez correctement les informations relatives à la connexion à la base de données

  	#postgre
    #spring.datasource.driver-class-name=org.postgresql.Driver
    #spring.datasource.url=jdbc:postgresql://localhost:5432/dolphinscheduler
    # mysql
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true     需要修改ip
    spring.datasource.username=xxx						需要修改为上面的{
    
    user}值
    spring.datasource.password=xxx						需要修改为上面的{
    
    password}# 修改之后
  
  spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  spring.datasource.url=jdbc:mysql://192.168.5.72:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
  spring.datasource.username=root
  spring.datasource.password=CDPmonitor123456*

Après la modification et l'enregistrement, exécutez le script de création de table et importez le script de données de base dans le répertoire de script

  sh script/create-dolphinscheduler.sh

Remarque: Si vous exécutez le script ci-dessus et signalez l'erreur "/ bin / java: No such file or directory", veuillez configurer les variables JAVA_HOME et PATH sous / etc / profile

7. Modifier les paramètres de fonctionnement

Sous la dolphinscheduler_env.shvariable d'environnement du répertoire conf / env modifiée (liée à l'utilisation du logiciel est installée dans / opt / soft, par exemple)

export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop
export HADOOP_CONF_DIR=/etc/hadoop/conf
#export SPARK_HOME1=/opt/soft/spark1
export SPARK_HOME2=/opt/cloudera/parcels/CDH/lib/spark
export PYTHON_HOME=/bin/python
export JAVA_HOME=/usr/java/jdk1.8.0_45/
export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive
export FLINK_HOME=/opt/soft/flink
export  PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$PATH

注: 这一步非常重要,例如 JAVA_HOME 和 PATH 是必须要配置的,没有用到的可以忽略或者注释掉

Lien souple jdk vers / usr / bin / java (prenez toujours JAVA_HOME = / opt / soft / java comme exemple)

sudo ln -s /usr/java/jdk1.8.0_45/bin/java /usr/bin/java

Modifiez un fichier de configuration de déploiement de clé conf/config/install_config.confpour chaque paramètre, faites particulièrement attention aux paramètres de configuration suivants

# 这里填 mysql or postgresql
dbtype="mysql"

# 数据库连接地址
dbhost="192.168.xx.xx:3306"

# 数据库名
dbname="dolphinscheduler"

# 数据库用户名,此处需要修改为上面设置的{user}具体值
username="xxx"

# 数据库密码, 如果有特殊字符,请使用\转义,需要修改为上面设置的{password}具体值
password="xxx"

#Zookeeper地址
zkQuorum="192.168.5.61:2181,192.168.5.65:2181,192.168.5.67:2181"

#将DS安装到哪个目录,如: /opt/dolphinscheduler/app,不同于现在的目录
installPath="/opt/dolphinscheduler/dolphinscheduler"

#使用哪个用户部署,使用第3节创建的用户
deployUser="dolphinscheduler"

# 邮件配置,以qq邮箱为例
# 邮件协议
mailProtocol="SMTP"

# 邮件服务地址
mailServerHost="smtp.qq.com"

# 邮件服务端口
mailServerPort="25"

# mailSender和mailUser配置成一样即可
# 发送者
mailSender="[email protected]"

# 发送用户
mailUser="[email protected]"

# 邮箱密码
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"

#如果上传资源保存想保存在hadoop上,hadoop集群的NameNode启用了HA的话,需要将hadoop的配置文件core-site.xml和hdfs-site.xml放到安装路径的conf目录下,本例即是放到/opt/soft/dolphinscheduler/conf下面,并配置namenode cluster名称;如果NameNode不是HA,则只需要将mycluster修改为具体的ip或者主机名即可
defaultFS="hdfs://192.168.5.19:8020"


# 如果没有使用到Yarn,保持以下默认值即可;如果ResourceManager是HA,则配置为ResourceManager节点的主备ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";如果是单ResourceManager请配置yarnHaIps=""即可
yarnHaIps=""

# 如果ResourceManager是HA或者没有使用到Yarn保持默认值即可;如果是单ResourceManager,请配置真实的ResourceManager主机名或者ip
singleYarnIp="yarnIp1"

# 资源上传根路径,主持HDFS和S3,由于hdfs支持本地文件系统,需要确保本地文件夹存在且有读写权限
resourceUploadPath="/data/dolphinscheduler"

# 具备权限创建resourceUploadPath的用户
hdfsRootUser="hdfs"



#在哪些机器上部署DS服务,本机选localhost
ips="192.168.5.72,192.168.5.19,192.168.5.61"

#ssh端口,默认22
sshPort="22"

#master服务部署在哪台机器上
masters="192.168.5.72,192.168.5.19"

#worker服务部署在哪台机器上,并指定此worker属于哪一个worker组,下面示例的default即为组名
workers="192.168.5.72:default,192.168.5.19:default,192.168.5.61:default"

#报警服务部署在哪台机器上
alertServer="192.168.5.72"

#后端api服务部署在在哪台机器上
apiServers="192.168.5.72"

Faites attention:

  • Si vous devez télécharger des ressources vers la fonction de cluster Hadoop et que le NameNode du cluster Hadoop est configuré avec HA, vous devez activer le téléchargement de ressources de type HDFS et vous devez copier le core-site.xml et hdfs-site.xml sous le cluster Hadoop vers / opt / dolphinscheduler / conf, ignorez la deuxième étape pour non-NameNode HA

8. Déploiement en un clic

Basculez vers l'utilisateur de déploiement dolphinscheduler, puis exécutez le script de déploiement en un clic

sh install.sh

Remarque: pour
le premier déploiement, les 3,stop serverinformations suivantes apparaissent 5 fois à l' étape 3 pendant le fonctionnement , ces informations peuvent être ignorées

sh: bin/dolphinscheduler-daemon.sh: No such file or directory

Une fois le script terminé, les 5 services suivants seront démarrés, utilisez la jpscommande pour vérifier si le service est démarré ( jpsil java JDKest livré avec)

MasterServer         ----- master服务
WorkerServer         ----- worker服务
LoggerServer         ----- logger服务
ApiApplicationServer ----- api服务
AlertServer          ----- alert服务

Si les services ci-dessus sont démarrés normalement, le déploiement automatique est réussi

Une fois le déploiement réussi, vous pouvez afficher les journaux et les journaux sont stockés dans le dossier des journaux.

 logs/
    ├── dolphinscheduler-alert-server.log
    ├── dolphinscheduler-master-server.log
    |—— dolphinscheduler-worker-server.log
    |—— dolphinscheduler-api-server.log
    |—— dolphinscheduler-logger-server.log

9. Connectez-vous au système

Visitez l'adresse de la page frontale, interface ip (modifiez vous-même) http: //192.168.5.xx: 12345 / dolphinscheduler

Nom d'utilisateur / mot de passe: admin / dolphinscheduler123

10. Démarrer et arrêter le service

  • Arrêtez tous les services du cluster en un seul clic

    sh ./bin/stop-all.sh

  • Ouvrez tous les services du cluster en un seul clic

    sh ./bin/start-all.sh

  • Démarrer et arrêter Master

sh ./bin/dolphinscheduler-daemon.sh start master-server
sh ./bin/dolphinscheduler-daemon.sh stop master-server
  • Démarrer et arrêter le travailleur
sh ./bin/dolphinscheduler-daemon.sh start worker-server
sh ./bin/dolphinscheduler-daemon.sh stop worker-server
  • Démarrer et arrêter l'API
sh ./bin/dolphinscheduler-daemon.sh start api-server
sh ./bin/dolphinscheduler-daemon.sh stop api-server
  • Démarrer et arrêter l'enregistreur
sh ./bin/dolphinscheduler-daemon.sh start logger-server
sh ./bin/dolphinscheduler-daemon.sh stop logger-server
  • Démarrer et arrêter l'alerte
sh ./bin/dolphinscheduler-daemon.sh start alert-server
sh ./bin/dolphinscheduler-daemon.sh stop alert-server
注:服务用途请具体参见《系统架构设计》小节

11. Désinstaller et réinstaller

  • Arrêtez tous les services du programmateur Dolphin
sh bin/stop-all.sh
  • Effacer la base de données de dolphinscheduler créée dans Mysql ou GP
  • Supprimez le répertoire dans lequel dolphinscheduler était installé auparavant
  • Modifiez les fichiers de configuration appropriés et démarrez l'installation à partir de [6. Initialisation de la base de données]

FAQ

  1. Lors de la soumission du programme spark, le problème du locataire dag, le problème de la file d'attente Le
    locataire est équivalent à l'utilisateur lors de la soumission de la tâche Spark, et n'a rien à voir avec l'utilisateur du dolphinscheduler, mais le locataire correspondant à l'utilisateur dolphinscheduler doit être configuré

  2. Pour activer le centre de ressources, vous devez configurer HDFS et vous devez faire attention à l'adresse de configuration HADOOP_HOME de la version CDH

optimisation

File d'attente: la
file d'attente DolphinSchedule est actuellement liée aux utilisateurs. Différentes files d'attente sont définies pour différents utilisateurs. La file d'attente de liaison utilisateur sur le client ne prend pas effet.

Sous-nœuds:
seul le flux de travail du projet en cours peut être sélectionné, et d'autres flux de travail peuvent être introduits en tant que sous-nœuds dans un flux de travail. Les sous-nœuds peuvent également s'exécuter pendant l'exécution et peuvent être planifiés de manière centralisée ou en un seul point.
Seul le flux de travail du projet en cours peut être introduit. Il n'est pas possible d'introduire le flux de travail d'autres projets (vous pouvez le soumettre à la communauté). Une approche de compromis consiste à exporter le flux de travail d'autres projets, puis à importer le flux de travail actuel. Cependant , s'il y a des problèmes, d'autres flux de travail doivent être réexportés et importés après les modifications.

Noeuds dépendants:
vous pouvez créer des noeuds dépendants et vous pouvez avoir plusieurs noeuds dépendants. Ce n'est qu'une fois l'exécution du noeud dépendant terminée que d'autres noeuds peuvent être exécutés. Une fois que les autres noeuds peuvent s'exécuter correctement, les opérations suivantes peuvent être exécutées

Mécanisme de relance d'échec: l'
état d'exécution de la tâche shell. L'
état d'identification de fin: la sortie 0 est réussie. En cas d'échec, vous pouvez spécifier exit 1
pour définir le nombre d'échecs et l'intervalle de relance des échecs, avec une granularité de minutes.

Mécanisme de numérotation complémentaire:
avec dépendance: chaîne
Aucune dépendance: fosse: 27 instances de workflow, la charge de la machine est extrêmement élevée, bourrage,

Complément: Un jour derrière, par exemple, le nombre 2-4 doit choisir le nombre 1-3

Optimisation: la date de sélection des données ne suit pas vraiment la date, ce qui est très gênant

Je suppose que tu aimes

Origine blog.csdn.net/qq_43081842/article/details/114208264
conseillé
Classement