ビッグデータ - Offline Data Warehouse - Workflow Scheduling - Tools: DolphinScheduler [Visual DAG Workflow Task Scheduling Platform] [万能、軽量、強力、美しい、フロースクリプトを自分で書く必要がない、Webページで直接操作、国内、中国語ドキュメント]

第1章 DolphinSchedulerの紹介

1.1 DolphinSchedulerの概要

Apache DolphinScheduler は、分散型で簡単にスケーラブルなビジュアル DAG ワークフロー タスク スケジューリング プラットフォームです。データ処理プロセスの複雑な依存関係を解決することを約束し、データ処理プロセスでスケジューリング システムをすぐに使用できるようにします。

1.2 DolphinScheduler コア アーキテクチャ

DolphinScheduler の主な役割は次のとおりです。

MasterServer は分散型および非中央型の設計コンセプトを採用しており、MasterServer は主に DAG タスクの分割、タスクの送信、およびタスクの監視を担当し、同時に他の MasterServer および WorkerServer の状態を監視します。

また、 WorkerServer は分散型および非中央型の設計コンセプトを採用しており、WorkerServer は主にタスクの実行とログ サービスの提供を担当します。

システム内のZooKeeperサービス、MasterServer、および WorkerServer ノードは、クラスタ管理とフォールト トレランスのために ZooKeeper を使用します。

アラートサービス。アラーム関連のサービスを提供します。

APIインターフェイス レイヤーは、主にフロントエンド UI レイヤーからのリクエストの処理を担当します。

システムのフロントエンド ページであるUI は、システムのさまざまな視覚的な操作インターフェイスを提供します。

第 2 章 DolphinScheduler の導入手順

2.1 ソフトウェアおよびハードウェアの環境要件

2.1.1 オペレーティング システムのバージョン要件

オペレーティング·システム

バージョン

レッドハット エンタープライズ リナックス

7.0以上

CentOS

7.0以上

オラクル エンタープライズ Linux

7.0以上

Ubuntu LTS

16.04 以降

2.1.2 サーバーのハードウェア要件

CPU

メモリー

通信網

4コア+

8GB以上

ギガビット イーサネット

2.2 展開モード

DolphinScheduler は、スタンドアロン モード (スタンドアロン)、疑似クラスター モード (疑似クラスター)、クラスター モード (クラスター) など、複数の展開モードをサポートしています。

2.2.1 スタンドアロンモード                 

スタンドアロン モードでは、すべてのサービスが 1 つの StandaloneServer プロセスに集中し、登録センターの Zookeeper とデータベース H2 がその中に組み込まれています。JDK 環境を設定するだけで、ワンクリックで DolphinScheduler を起動して、その機能をすぐに体験できます。

2.2.2 疑似クラスタモード

Pseudo-Cluster モード (Pseudo-Cluster) は、DolphinScheduler のさまざまなサービスを単一のマシンにデプロイするモードです. このモードでは、マスター、ワーカー、API サーバー、ロガー サーバーなどのサービスがすべて同じマシン上にあります. Zookeeper とデータベースは個別にインストールし、それに応じて構成する必要があります。

2.2.3 クラスターモード

クラスター モード (Cluster) と疑似クラスター モードの違いは、DolphinScheduler サービスが複数のマシンにデプロイされ、複数のマスターと複数のワーカーを構成できることです。

第 3 章 DolphinScheduler クラスター モードの展開

3.1 クラスター計画

クラスター モードでは、複数のマスターと複数のワーカーを構成できます。通常、2 ~ 3 個のマスターと複数のワーカーを構成できます。クラスター リソースが限られているため、ここでは 1 つのマスターと 3 つのワーカーを構成します。クラスター プランは次のようになります。

hadoop102

マスター、ワーカー

hadoop103

ワーカー

hadoop104

ワーカー

3.2 準備作業

1) 3 つのノードすべてで JDK (1.8+) をデプロイし、関連する環境変数を構成する必要があります。

2) MySQL (5.7 以降) または PostgreSQL (8.2.15 以降) をサポートするデータベースをデプロイする必要があります。

3) Zookeeper (3.4.6+) をデプロイする必要があります。

4) 3 つのノードすべてに、プロセス管理ツールキット psmisc をインストールする必要があります。

[wir@hadoop102 ~]$ sudo yum install -y psmisc

[wir@hadoop103 ~]$ sudo yum install -y psmisc

[wyr@hadoop104~]$sudo yum install -and psmisc

3.3 DolphinScheduler インストールパッケージの解凍

1) DolphinScheduler インストール パッケージをhadoop102 ノードの/opt/softwareディレクトリにアップロードします。

2) インストール パッケージを現在のディレクトリに解凍します。

注: 解凍ディレクトリは、最終的なインストール ディレクトリではありません

[wyr@hadoop102 ソフトウェア]$ tar -zxvf apache-dolphinscheduler-1.3.9-bin.tar.gz

3.4 データベースの初期化

DolphinScheduler メタデータはリレーショナル データベースに格納されるため、対応するデータベースとユーザーを作成する必要があります。

1) データベースを作成する

mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

2) ユーザーを作成する

mysql> CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler';

ノート:

次のエラー メッセージが表示された場合は、新しく作成したユーザーのパスワードが単純すぎることを意味します。

エラー 1819 (HY000): パスワードが現在のポリシー要件を満たしていません

パスワードの複雑さを上げるか、次のコマンドを実行して MySQL パスワードの強度レベルを下げることができます。

mysql> グローバルな validate_password_length=4 を設定します。

mysql> グローバルな validate_password_policy=0 を設定します。

3) ユーザーに対応する権限を付与する

mysql> dolphinscheduler.* TO 'dolphinscheduler'@'%' にすべての特権を付与します。

mysql> 権限をフラッシュします。

4) データ ソース構成ファイルを変更する

DolphinScheduler 解凍ディレクトリに入る

[wyr@hadoop102 apache-dolphinscheduler-1.3.9-bin]$ cd /opt/software/apache-dolphinscheduler-1.3.9-bin/

conf ディレクトリの datasource.properties ファイルを変更します。

[wyr@hadoop102 apache-dolphinscheduler-1.3.9-bin]$ vim conf/datasource.properties

変更内容は以下の通り

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql:// hadoop102 :3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8

spring.datasource.username= dolphinscheduler

spring.datasource.password= dolphinscheduler

5) DolphinScheduler の解凍ディレクトリにある lib に MySQL ドライバーをコピーします。

[wyr@hadoop102 apache-dolphinscheduler-1.3.9-bin]$ cp /opt/software/mysql-connector-java-5.1.27-bin.jar lib/

6) データベース初期化スクリプトを実行する

データベース初期化スクリプトは、DolphinScheduler 解凍ディレクトリの下のスクリプト ディレクトリ、つまり /opt/software/ds/apache-dolphinscheduler-1.3.9-bin/script/ にあります。

[wyr@hadoop102 apache-dolphinscheduler-1.3.9-bin]$ script/create-dolphinscheduler.sh

3.5 ワンクリック展開スクリプトを構成する

解凍ディレクトリの下の conf/config ディレクトリにある install_config.conf ファイルを変更します。

[wyr@hadoop102 apache-dolphinscheduler-1.3.9-bin]$ vim conf/config/install_config.conf

変更内容は以下の通り

# postgresql または mysql

dbtype="mysql"

# データベース構成

# データベースのアドレスとポート

dbhost="hadoop102:3306"

# データベースのユーザー名

ユーザー名="イルカスケジューラー"

# データベース名

dbname="イルカスケジューラー"

# データベースパスワード

# 注意: 特殊文字がある場合は、\ を使用してエスケープしてください。たとえば、`[` は `\[` にエスケープします。

password="イルカスケジューラー"

# zk クラスター

zkQuorum="hadoop102:2181,hadoop103:2181,hadoop104:2181"

# 注: dolphinscheduler のターゲット インストール パスは、現在のパス (pwd) と同じように構成しないでください。

installPath="/opt/module/dolphinscheduler"

# 導入ユーザー

# 注: デプロイメント ユーザーは、hdfs を操作するための sudo 権限とパーミッションを持っている必要があります。hdfs が有効になっている場合は、ルート ディレクトリを独自に作成する必要があります。

deployUser="ユーザー"

# リソース ストレージ タイプ: HDFS、S3、NONE

resourceStorageType="HDFS"

# リソース ストアは HDFS/S3 パスにあり、リソース ファイルはこの Hadoop hdfs パスに保存されます。自己構成です。ディレクトリが hdfs に存在し、読み取り/書き込み権限があることを確認してください。「/dolphinscheduler」がおすすめ

resourceUploadPath="/dolphscheduler"

# resourceStorageType が HDFS の場合defaultFS write namenode address HA conf ディレクトリに core-site.xml と hdfs-site.xml を配置する必要があります。

# S3 の場合S3 アドレスHAを書き込むs3a://dolphinscheduler

# 注s3 は必ずルート ディレクトリ /dolphinscheduler を作成してください

defaultFS="hdfs://hadoop102:8020"

# resourcemanager ポート、指定されていない場合のデフォルト値は 8088 です

resourceManagerHttpAddressPort="8088"

# resourcemanager HA が有効になっている場合は、HA IP を設定してください。resourcemanager が単一の場合、この値を空のままにします

ヤーンHaIps=

# resourcemanager HA が有効になっている場合、または resourcemanager を使用しない場合は、デフォルト値のままにしてください。resourcemanager が単一の場合、ds1 を実際の resourcemanager ホスト名に置き換えるだけで済みます

singleYarnIp="hadoop103"

# HDFS/S3 ルート パスの下にディレクトリを作成する権限を持つユーザー

# 注: kerberos が有効になっている場合は、hdfsRootUser= を設定してください

hdfsRootUser="wyr"

# API サーバーポート

apiServerPort="12345"

# インストールホスト

# 注: スケジュールされたホスト名リストをインストールします。疑似分散されている場合は、疑似分散されたホスト名を記述するだけです

ips="hadoop102,hadoop103,hadoop104"

# ssh ポート、デフォルトは 22

# 注: ssh ポートがデフォルトでない場合は、ここで変更します

sshPort="22"

# マスターマシンを実行

# 注: マスターをデプロイするためのホストのホスト名のリスト

masters="hadoop102"

# ワーカーマシンを実行

# 注: 各ワーカーのワーカー グループ名を記述する必要があります。デフォルト値は「default」です。

worker="hadoop102:default,hadoop103:default,hadoop104:default"

# アラートマシンを実行

# 注: アラート サーバーを展開するためのマシンのホスト名のリスト

alertServer="hadoop102"

# API マシンを実行

# 注: API サーバーをデプロイするためのマシンのホスト名のリスト

apiServers="hadoop102"

3.6 DolphinScheduler のワンクリック展開

1) Zookeeper クラスターを開始します。

[wyr@hadoop102 apache-dolphinscheduler-1.3.9-bin]$ zk.sh start

2) ワンクリックでデプロイして DolphinScheduler を起動

[wyr@hadoop102 apache-dolphinScheduler-1.3.9-bin]$ ./install.sh

3) DolphinScheduler プロセスを表示する

--------- hadoop102 ----------

29139 ApiApplicationServer

28963ワーカーサーバー

3332クォーラムピアメイン

2100 データノード

28902マスターサーバー

29081アラートサーバー

1978年 ネームノード

29018ロガーサーバー

2493ノードマネージャー

29551 円

--------- hadoop103 ----------

29568円

29315ワーカーサーバー

2149ノードマネージャー

1977年 リソースマネージャー

2969クォーラムピアメイン

29372ロガーサーバー

1903 データノード

--------- hadoop104 ----------

1905 セカンダリネームノード

27074ワーカーサーバー

2050 ノードマネージャー

2630クォーラムピアメイン

1817 データノード

27354 円

27133ロガーサーバー

4) DolphinScheduler UI にアクセスする

DolphinScheduler の UI アドレスはhttp://hadoop102:12345/dolphinschedulerです。

初期ユーザーのユーザー名は admin で、パスワードは dolphinscheduler123 です。

3.7 DolphinScheduler の開始および停止コマンド

DolphinScheduler の開始スクリプトと停止スクリプトは、インストール ディレクトリの bin ディレクトリにあります。

1) すべてのサービスのワンクリック開始と停止

./bin/start-all.sh

./bin/stop-all.sh

Hadoop 起動停止スクリプトとは異なることに注意してください。

2) マスターの起動と停止

./bin/dolphinscheduler-daemon.sh start master-server

./bin/dolphinscheduler-daemon.sh stop master-server

3) Worker の起動と停止

./bin/dolphinscheduler-daemon.sh start ワーカーサーバー

./bin/dolphinscheduler-daemon.sh stop worker-server

4) APIの起動と停止

./bin/dolphinscheduler-daemon.sh start api-server

./bin/dolphinscheduler-daemon.sh stop api-server

5) ロガーの起動と停止

./bin/dolphinscheduler-daemon.sh start logger-server

./bin/dolphinscheduler-daemon.sh stop logger-server

6) アラートの開始と停止

./bin/dolphinscheduler-daemon.sh start アラートサーバー

./bin/dolphinscheduler-daemon.sh stop alert-server

第 4 章 DolphinScheduler を使い始める

4.1 セキュリティ センターの設定

セキュリティ センターには、主にテナント管理、ユーザー管理、アラーム グループ管理、ワーカー グループ管理、キュー管理、トークン管理などの機能があります。セキュリティセンターの管理者アカウントだけが操作権限を持っています。

4.1.1 キュー管理

ここでのキューは、Yarn スケジューラーのリソース キューに対応します。したがって、キューの概念は、Yarn で実行されるタスクのタイプに対してのみ有効です。ここで作成されたキューは、後続のタスクで選択できます。DolphinScheduler でキューを作成しても、Yarn スケジューラのキュー構成には影響しないことに注意してください。

ここではキューを作成できません。

 4.1.2 テナント管理

テナントは、Worker がタスクを実行するために使用する Linux システム ユーザーに対応します。ワーカーが配置されているノードにこのユーザーが存在しない場合、ワーカーはタスクの実行時にこのユーザーを作成します。

下の図に示すように、ここで wyr テナントを作成します。

ノート:

テナント コード: ワーカーがタスクを実行するために使用するユーザー名に対応します。

テナント名: DolphinScheduler での表示に使用されます。

キュー: テナントが Yarn タスクを送信するときの既定のキュー。

4.1.3 ユーザー管理

ユーザーは DolphinScheduler にログインする DolphinScheduler のユーザーに相当します。ユーザーは、管理者ユーザーと一般ユーザーに分けられます。デフォルトでは、管理者は承認やユーザー管理などの権限のみを持ち、一般ユーザーはプロジェクトの作成、ワークフローの定義、ワークフローの実行の権限のみを持っています。

以下の図に示すように、ここで共通ユーザー wyr を作成します。

ノート:

ユーザー名: DolphinScheduler ログイン アカウント

テナント: このユーザーに関連付けられたテナント

キュー: デフォルトは、テナントに関連付けられたキューです。

電子メール、携帯電話番号: 主にアラーム通知に使用されます。

4.1.4 アラームグループ管理

アラーム グループには、アラーム送信オブジェクトを指定するために使用される複数のユーザーを含めることができます。

1) アラームグループを作成する

2) ユーザーを追加する

4.1.5 ワーカーグループの管理

タスクが実行されると、指定されたワーカー グループにタスクを割り当てることができ、最終的にこのグループのワーカー ノードがタスクを実行します。デフォルトでは、すべてのワーカーがデフォルト グループに属します。

ここでの構成は必要ありません。

4.16 トークン管理

トークンは、インターフェイスを介して DolphinScheduler のさまざまなサービスにアクセスする際のユーザー認証に使用されます。通常のユーザーは、UI ページからさまざまなサービスにアクセスするときにトークンを使用する必要はありません。DolphinScheduler をサードパーティ サービスと統合する必要がある場合は、そのインターフェイスを呼び出す必要があり、この時点でトークンを使用する必要があります。

4.2 プロジェクト管理

4.2.1 ユーザーの切り替え

デフォルトでは、管理者ユーザーはプロジェクトやワークフローの操作に使用されていないため、最初に一般ユーザーに切り替える必要があります。

1) 管理者ユーザーが終了します

2) wyr ユーザーでログインします。

4.2.2 プロジェクトの作成

4.2.3 プロジェクトの表示

4.3 ワークフローの基本構成

次の図は、ワークフロー定義、ワークフロー インスタンス、およびタスク インスタンスの 3 つのモジュールを含むワークフロー構成ページを示しています。

ワークフロー定義: ワークフローの各ノードのタスクの詳細や各ノードの依存関係など、ワークフローを定義するために使用されます。

ワークフロー インスタンス: ワークフローが実行されるたびに、ワークフロー インスタンスが生成されます。ここでは、実行中のワークフローと完了したワークフローを確認できます。

タスク インスタンス: ワークフロー内のノード タスクで、実行ごとにタスク インスタンスが生成されます。これを使用して、実行中のノード タスクと完了したノード タスクを表示できます。

4.3.1 ワークフロー定義

ワークフローの要件: ワークフローには、A、B、および C という 3 つのシェル タイプのタスク ノードが含まれている必要があります。3 つのタスクの依存関係を次の図に示します。

1 ) ワークフローを作成する

2 ) タスク ノードを構成する

(1 ) ノード A

(2 ) ノード B

(3 ) ノード C

3 ) タスク ノードの依存関係を構成する

4 ) ワークフロー定義を保存する

4.3.2 実行ワークフローの送信

1 ) オンラインワークフロー

ワークフローは、実行する前にライブにする必要があります。オンライン状態のワークフロー定義は変更できません。変更する必要がある場合は、まずオフラインにする必要があります。

2 ) シングルランワークフロー

3 ) タイミング実行ワークフロー

(1 ) クリックタイミング

(2 ) タイミングルールの設定

ここの例は毎分実行されます

(3 ) タイミング管理

(4 )オンライン開催予定

4.3.2 ワークフロー インスタンスの表示

1 ) すべてのワークフロー インスタンスを表示する

2 ) ワークフローの実行ステータスを表示する

4.3.3 タスクインスタンスの表示

1 ) すべてのタスク インスタンスを表示する

2 ) タスク インスタンス ログを表示する

第 5 章 DolphinScheduler の高度な機能

5.1 ワークフロー パラメータ

DolphinScheduler は柔軟なパラメーターのタスク ノードへの受け渡しをサポートしており、タスク ノードは${ parameter name }を介してパラメーター値を参照できます。

5.1.1 ローカルパラメータ

ローカル パラメーターは、1 つのタスク ノードに対してのみ有効なパラメーターを指します。

1) helloworld ワークフロー Node-A ノードを次のように変更します。

2) ワークフローを保存して実行し、Node-A の出力ログを確認します。

5.1.2 グローバルパラメータ

グローバル パラメーターは、ワークフロー全体のすべてのタスク ノードに有効なパラメーターを指します。

1) helloworld ワークフローの各タスク ノードを次のように変更します。

(1) ノード A の構成

(2) ノード B の構成

(3) ノード C の構成

2) ワークフローを保存し、グローバル パラメータを設定する

3) ワークフローを実行し、3 つのタスク ノードの出力ログを表示します。

5.1.3 システム組み込みパラメータ

DolphinScheduler は、タイミング スケジューリングを容易にするために、いくつかの時間関連のシステム パラメータを提供します。

1 ) システムパラメータ

パラメータ

例証する

${system.biz.date}

予定時刻の前日、形式はyyyyMMdd

${system.biz.curdate}  

タイミング時間、形式は yyyyMMdd

${system.datetime}       

タイミング時間、形式はyyyyMMddHHmmss

2 ) 時間カスタム パラメータ

パラメータを時間ごとにカスタマイズして、任意の形式でいつでも日付を設定できます。

(1 ) カスタム日付フォーマット

$[yyyyMMdd]、$[HHmmss]、$[yyyy-MM-dd]

(2 ) カスタムタイム

パラメータ

例証する

$[add_months(yyyyMMdd,12*N)]

N

$[add_months(yyyyMMdd,-12*N)]

N年前

$[add_months(yyyyMMdd,N)]

Nか月

$[add_months(yyyyMMdd,-N)]

N か月前

$[yyyyMMdd+7*N]

N週間

$[yyyyMMdd-7*N]

N 週間前

$[yyyyMMdd+N]

N

$[yyyyMMdd-N]

N日前

$[HHmmss+N/24]

N時間

$[HHmmss-N/24]

N時間前

$[HHmmss+N/24/60]

N

$[HHmmss-N/24/60]

N分前

3 ) 構成例

実行するスクリプトが、yyyy-MM-dd 形式の前日の日付のパラメータを必要とする場合は、次のように設定します。

5.2 依存リソースの参照

Some tasks need to reference some additional resources. たとえば、MR や Spark などのタスクは jar パッケージを参照する必要があり、シェル タスクは他のスクリプトを参照する必要があります。DolphinScheduler は、これらのリソースを一元的に管理するためのリソース センターを提供します。

以下では、例としてシェル タスクを使用して、リソース センターで他のスクリプトを参照する方法を示します。

1) リソース センターでスクリプトを作成する

2) シェル タスク参照スクリプトを構成する

上記のスクリプトを参照するようにワークフローを変更します

3) ワークフローを保存して実行し、該当するノードの出力ログを確認します。

5.3 アラーム通知

5.3.1 メールアカウントの準備

DolphinSchedulerのメールアラーム通知機能を利用する場合は、メールアカウントを用意し、SMTPサービスを有効にする必要があります。

1) メールアカウント設定をクリック

2) SMTP サービスを開く

3) 認証コードは、サードパーティ クライアントでの電子メール アカウントのログインの資格情報であり、注意が必要です。

5.3.2 アラートサーバーの構成

1) AlertServer 構成ファイル /opt/module/dolphinscheduler/conf/alert.properties を変更します。

[wyr@hadoop102 ~]$ vim /opt/module/dolphinscheduler/conf/alert.properties

2) 以下のパラメータを設定します

(1) 暗号化プロトコルを使用しない

#アラートタイプはメール/SMS

alert.type=電子メール

# メールサーバーの設定

mail.protocol=SMTP

mail.server.host=smtp.qq.com

mail.server.port=25

mail.sender=*********@qq.com

mail.user=*********@qq.com

mail.passwd=****************

# TLS

mail.smtp.starttls.enable=false

# SSL

mail.smtp.ssl.enable=false

mail.smtp.ssl.trust=smtp.exmail.qq.com

(2) STARTTLS 暗号化プロトコルを使用する

#アラートタイプはメール/SMS

alert.type=電子メール

# メールサーバーの設定

mail.protocol=SMTP

mail.server.host=smtp.qq.com

mail.server.port=587

mail.sender=*********@qq.com

mail.user=*********@qq.com

mail.passwd=****************

# TLS

mail.smtp.starttls.enable=真

# SSL

mail.smtp.ssl.enable=false

mail.smtp.ssl.trust=smtp.qq.com

(3) SSL暗号化プロトコルを利用する

#アラートタイプはメール/SMS

alert.type=電子メール

# メールサーバーの設定

mail.protocol=SMTP

mail.server.host=smtp.qq.com

mail.server.port=465

mail.sender=*********@qq.com

mail.user=*********@qq.com

mail.passwd=****************

# TLS

mail.smtp.starttls.enable=false

# SSL

mail.smtp.ssl.enable=真

mail.smtp.ssl.trust=smtp.qq.com

注: 各メールボックスでサポートされている暗号化プロトコル:各メールボックスの smtp サーバーとサポートされているプロトコル

5.3.3 テスト

1 ) ワークフローを実行する

2 ) 通知ポリシーの選択

3 ) 通知機能を選択

通知機能は、メールボックスで実行するか、通知グループで指定できます。

5.4 ワークフロー失敗の再実行

実行中にワークフローが失敗した場合、ワークフローを再起動する必要があります。再起動するときは、開始点から実行を開始するか、ブレークポイントから実行を開始するかを選択できます。

1) 障害シナリオのシミュレーション

(1) 以下のように Node-A の構成を変更します。

(2) リソースセンターのtest.shファイルを以下のように修正

2) ワークフローを実行する

3) ワークフロー インスタンスを表示する

4) ジョブの失敗と再実行

(1)スタート地点からスタート

(2) ブレークポイントから開始

おすすめ

転載: blog.csdn.net/u013250861/article/details/130093159