JobSchedulerを使ったAsakusaのジョブ管理

2,744 views
2,520 views

Published on

Asakusa Framework 勉強会 2014春

Published in: Technology

JobSchedulerを使ったAsakusaのジョブ管理

  1. 1. Asakusa Framework 勉強会2014春 「JobSchedulerを使ったAsakusaのジョブ管理」 2014/4/7 Open Programmable Infrastructure Environment
  2. 2. 2    とは l  OSSのJob管理製品(GNU Public License V.2) l  ドイツのSoftware- und Organisations-Service (SOS社)製 l  2003年に商用版・2005年にOSS版をリリース l  Webブラウザ(JOC)・JOE(デスクトップ)といったGUI ツールでJobの監視や管理を実施 l  Windows, Linux, Solaris(商用版のみ), AIX(商用版の み), HP-UX(商用版のみ)に対応 l  リモートジョブ実行、冗長化機能、ロードバランス、外部 認証等、エンタープライズ向け大規模システム対応 l  商用版にはSOS社のサポートが含まれる 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved
  3. 3. 3 JobSchedulerの導入実績 ドイツ eBankやカード決済サービス会社 イギリス 財務アプリケーションのプロバイダ オーストリア (イタリアの)大手金融グループ アメリカノースカロライナ州 保健福祉サービス機関 ヨーロッパを中心に金融・産業・政府・大学 などの様々な機関で使用されている ドイツ 大学図書館 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved
  4. 4. 4 JobSchedulerの概要 - 機能 - l  ジョブ定義 l  ジョブ実行(時間指定/繰り返し) l  スケジュール l  多重実行・排他制御 l  先行・後続制御 l  優先度設定 l  イベント監視 l  メール通知 l  外部パラメータ設定 l  開始/終了遅延検知 •  クライアント / サーバ •  バックアップクラスタ •  負荷分散クラスタ •  SOAP/RESTの外部API •  独自の内部API •  Javascript / Perl / Java / Shell Script / Powershell / VBScript / javax.scriptでのジョ ブ定義 高度なジョブ管理機能 Devの使い慣れた言語でのJob定義 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved
  5. 5. SOS JobSchedulerの特長 l  オープンソース(GNU Public License) l  Linux/Windows版は、全ての機能が無料で使用可能。 l  サポートライセンスを購入すれば、HP-UX/Solaris/AIX版の利用に加えて、障害対応、バグ フィックス/ワークアラウンドの提供、新機能の早期提供、チケットシステム(OTRS)、JIRAの 利用が提供される。 l  プログラマブル l  ジョブの中で、Java, Perl, JavaScript, VBScript, Powershell, javax.scriptのAPIを使ったロ ジックを記述可能 l  外部API(XML形式)によりRESTまたはコマンドラインからジョブの実行制御、実行状況の取 得が可能 l  エンタープライズ・グレード l  ファイル転送やログローテンション等豊富なテンプレート機能 l  リモートジョブ実行、冗長化機能、ロードバランス、外部認証等、エンタープライズ向け大規模 システム対応 l  JasperReport(ジョブ実行レポート)やNagios(ジョブ実行監視)との連携機能 l  MySQLの他、Oracle, DB2, MS SQL Server, PostgreSQL, Firebirdに対応 l  豊富な実績 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 5
  6. 6. JobSchedulerの構成 l  JobScheduler Engine l  ジョブの制御と管理を司るサービス。以下の機能を 包含する。 l  バックアップフェイルオーバー機能 l  RDBMSを使用したジョブ履歴、ログ管理機能 (JDBC接続) l  JobScheduler Agent l  ジョブのリモート実行エージェント l  JOC (Job Operation Center) l  WEB UIのジョブ管理画面 l  JOE (JobScheduler Object Editor) l  ジョブ定義を作成するための、Javaで稼働するスタ ンドアロンアプリケーション。 l  JID (JobScheduler Information Dashboard) l  待機中、実行中、完了したジョブの状態、ログを一 覧できるJavaで稼働するスタンドアロンアプリケー ション。 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 6 JobScheduler Engine JobScheduler Agent JobScheduler Agent JobScheduler Agent JID JOE JOC RDB JobScheduler Engine JOC JobScheduler Engine JOC RDB RDB Agentless hosts ssh GUIクライアント 管理サーバ 管理対象サーバ
  7. 7. 主要機能 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 7 JobScheduler Engine JobScheduler Engine JID/JOE JOC JobScheduler Agent JobScheduler Agent ジョブ制御、監視 ジョブ定義、監視 バックアップ クラスタ 共有DB ファイルサーバ 負荷分散 SSH リモートジョブ実行 ファイル送受信 整合性確認、再送 リネーム、ローテーション等 DMZ Internet JobScheduler Engine Webサービス(SOAP)による 外部連携 Job Job Job Job メール通知 Nagiosアラート
  8. 8. ジョブの定義 l  JOE (Job ObjectEditor)による定義例 l  XMLファイルによる定義例 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 8 <?xml version="1.0" encoding="ISO-8859-1"?> <job > <params /> <script language="shell"> <![CDATA[ #!/bin/sh echo “$SCHEDULER_JOB_NSME is running” echo “Current Timestamp `date`” exit $? ]]> </script> </job>
  9. 9. ジョブの実行 l  イベントによる実行 l  ホットフォルダに作成/更新されたファイルを監視し、自動的にジョブ起動、ファイルを移動/リネー ム/削除/処理対象外に指定できる。また、メールの受信や、任意のプログラムやスクリプトでジョ ブを制御する事も可能である。 l  カレンダによる計画実行 l  平日、休日、特定の休業日、毎週/毎月の特定日、など柔軟に指定でき、実行日が休業日や特定 日の場合、実行日時を翌営業日、前の営業日、または実行中止を指定できる。 l  ジョブ実行時間を制限するタイムスロット機能 l  実行優先順位を制御するプライオリティ機能 l  ジョブの排他制御のためのロック機能 l  複数ジョブの同時並行実行を制御するシンクロナイズ機能 l  ジョブ実行エラー時の再実行を制御するセットバック機能等、柔軟なジョブ実行 制御機能を備えている。 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 9
  10. 10. ジョブの監視 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 10 l  JOC (Job Operation Center)画面例 l  ジョブチェーンの表示例
  11. 11. JITL (JobScheduler Integrated Template Library) JobSchedulerは、以下のジョブテンプレートが標準で提供されて いる。 l  Logging and Cleanup l  ログファイルのローテーション、リネーム、削除 l  Sanity Checking l  JobSchedulerが稼働するサーバの環境チェック(ディスク容量、メモ リ容量等) l  Mail Forwarding l  JobSchedulerからの通知メール送信失敗時のエラー制御 l  File Transfer l  ファイル送受信の容量チェック、リネーム、並列転送、proxy経由転 送、重複確認、転送失敗時の迂回配送、自動圧縮、等 l  File Operations (rename, copy, remove, check existence, ...) 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 11
  12. 12. API l  JobSchedulerは、外部プログラムからのジョブ制御を可能に するため、以下の2種類のAPIを備えている。 l  内部API l  Java, JavaScript, Perl, JScript, VBScript, Powershell, javax.scriptのプログラムからJobScheduler Engineの機能を呼び 出し、実行できる。 l  外部API l  XML形式によりRESTまたはコマンドラインからジョブの実行制御、 実行状況の取得が可能である。 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 12
  13. 13. AsakusaとJobScheduler連携 l  やりたかった事 l  Asakusaで作成したバッチのデプロイ l  Asakusaで作成したバッチ実行のスケジューリングと 監視 l  Abortしたバッチ処理の再実行 l  中断したバッチ処理の再開 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 13
  14. 14. YAESSのスケジューリング 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 14 Batch Job Flow Job Flow Job Flow setup initialize import prologue main epilogue export finalize cleanup Job Job Job Job Job Job ジョブフロー フェーズ ジョブ •  バッチは複数のジョブフローで構成され、 Batch DSL の定義にしたがった実行順序の依存関係を持つ •  各ジョブフローは各フェーズを上から順に実行する (DSLの定義内容によっては、フェーズの一部がス キップされる) 。 •  各フェーズは複数のジョブで構成され、 Flow DSL の定義などにしたがった実行順序の依存関係を持 つ •  ジョブが実行する各処理は、 Flow DSL や Operator DSL の定義などによって決定される。
  15. 15. Job Schedulerへの登録 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 15 Job Chain Job Chain Job Chain Job Chain Job Node Job Node Nested Job Chain Order Job •  Yaess-explain.shを実行し、JSON形式のバッチ構造ファイルを作成する。 •  JSON形式のファイルを読み込み、JobSchedulerのJob定義ファイル(XML)とイベントハン ドラを作成する。 setup initialize import prologue main epilogue export finalize cleanup Job Job Job Job Job Job YAESS フェーズ YAESSジョブ Job Scheduler Job定義
  16. 16. 実行イメージ 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 16 Hadoopマスター NameNode/JobTracker Hadoopクライアント DayaNode/TaskTracker Hadoopクライアント DayaNode/TaskTracker Hadoopノード DataNode/TaskTracker データソース バッチサーバ Job Scheduler Agent YAESS/WindGate etc. AsakusaFW Hadoop client hdfs hdfs hdfs ①バッチ起動 ③実行結果監視 ジョブ管理サーバ Job Scheduler Engine ②YAESS実行
  17. 17. デモ シナリオ l  AsakusaFWサンプルプログラム l  サンプルプログラムのJobSchedulerへの登録 l  プログラムのデプロイ l  バッチ起動 l  結果確認 l  途中停止/再開 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 17
  18. 18. example.summarizeSales 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 18
  19. 19. Job Schedulerへの登録 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 19 Job Chain Start_batch byCategory Job Chain End_batch Nested Job Chain Order Job setup prologue main epilogue cleanup Job Scheduler Job定義
  20. 20. Job定義 ジョブ: /example.summarizeSales/byCategory_main ファイル更新日付: 2014-04-02 18:39:09 <job order="yes" stop_on_error="no"> <script language="shell"><![CDATA[ #!/bin/bash LANG=C export JAVA_HOME=/usr/java/default export ASAKUSA_DEVELOP_HOME=/home/asakusa/asakusa-develop export ASAKUSA_HOME=${ASAKUSA_DEVELOP_HOME}/asakusa export HADOOP_CMD=${ASAKUSA_DEVELOP_HOME}/hadoop/bin/hadoop export HADOOP_CLIENT_OPTS=-Xmx512m export PATH=$JAVA_HOME/bin:${ASAKUSA_DEVELOP_HOME}/hadoop/bin:$ASAKUSA_DEVELOP_HOME/eclipse: $ASAKUSA_HOME/yaess/bin:$PATH export ASAKUSA_HOME=/home/asakusa/asakusa-develop/asakusa /home/asakusa/asakusa-develop/asakusa/yaess/bin/yaess-phase.sh example.summarizeSales byCategory main 100 -A date=2011-04-01 ]]></script> <run_time/> </job> 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 20
  21. 21. 実行中画面(JOC) 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 21
  22. 22. 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 22 各ジョブ実行履歴 各ジョブ実行ログ ログ表示(JID)
  23. 23. 運用管理自動化基盤とは l  構築 実装 サービス稼働までプログラム化 l  コスト低減、ミスの削減、期間短縮 l  運用管理の集中化 l  人に依存しない標準化、品質向上 l  広域分散環境に対応 l  AWS等のパブリッククラウドサービスから、オンプレミスの既存 物理サーバまで一元管理 l  リソースの最適化 l  目的に応じて最適なプラットフォームにアプリケーションを移動 l  DR/BCPへ対応 l  DR/BCPの自動化 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 23
  24. 24. 運用管理自動化基盤イメージ Asakusa JobScheduler Talend その他 Jarファイル Jsonジョブ定義 Deploy定義 Libcloud openQRM fabric Cobbler LinuxCOE etc. Ansible Puppet AWS OpenStack vSphere BearMetal ESXi KVM/xen LXC他 Jarファイル Zabbix/ Nagios Job監視 JasperReport Job予実 レポート provisioning provisioning JP1/AJS3 ジョブ連携 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 24 Open Programmable Infrastructure Environment
  25. 25. 日本JobSchedulerユーザーグループ l  2013/4発足 l  JobSchedulerいけるやん、という人の集まり l  独SOSサイトにも掲載 “Company News : Japanese language JobScheduler user group on Facebook” http://www.sos-berlin.com/modules/news/article.php?storyid=42 l  会則/会費ありません l  会員資格ありません、Google Groupsに参加して下さい https://groups.google.com/forum/?fromgroups#!forum/jobscheduler-ja l  JobSchedulerを使う上での疑問やノウハウの共有 l  勉強会と言う名の飲み会 2014/4/7 Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved 25
  26. 26. 活動内容 l  グループサイトの運営 https://sites.google.com/site/jobschedulerja/home l  Wiki, tips, ドキュメントを掲載 l  Facebookページ http://ja-jp.facebook.com/pages/Jobscheduler-Japan-ユーザーグループ/ 594469610565511 l  各種告知 l  いいね!をお願いします!! l  普及活動 l  定期勉強会 l  OSC東京? 2014/4/7 26Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved
  27. 27. 最後に l  Please join us!! https://groups.google.com/forum/? fromgroups#!forum/jobscheduler-ja 2014/4/7 27Copyright 2014(C) OSS Laboratories Inc. All Rights Reserved
  28. 28. ご清聴ありがとうございました

×