ホーム » 未分類 » ARK コマンド徹底解説:エラー対処から応用テクニックまで完全マニュアル

ARK コマンド徹底解説:エラー対処から応用テクニックまで完全マニュアル

by

in

ARK コマンドとは?

ARK(Advanced Resource Keeper)とは、Linux・Unix 系統で使われる高性能なジョブスケジューラです。
多くのサーバーやクラスター環境で、CPU・メモリ・ストレージなどのリソースを効率的に割り当てるために利用され、ジョブが正常に完了するまでリソースを確保し続ける点が特徴です。
本記事では、ARK のインストールから基本・応用コマンド、エラー対処、トラブルシューティングまでを網羅し、日々の運用で直面する課題を一挙に解決します。


ARK のインストール・初期設定

1. 依存パッケージの確認

sudo apt-get update
sudo apt-get install -y build-essential libboost-all-dev

Boost ライブラリは ARK が多くの機能を実装する際に不可欠です。
OS によっては yumzypper など適宜使ってください。

2. ソースコードのダウンロード

git clone https://github.com/ark-project/ark.git
cd ark

3. コンパイル & インストール

make
sudo make install

正常に完了したら、/usr/local/bin/ark が作成されているはずです。

4. 初期設定ファイル

sudo cp /etc/ark/example.conf /etc/ark/ark.conf

この ark.conf ファイルに以下のような基本設定を書き込みます。

設定項目 説明
SCHEDULER_PORT コマンドが接続するポート番号 (例: 8080)
MAX_JOBS 同時に実行できるジョブ数
LOG_DIR ログファイルの保存場所

設定ファイルを編集したら、ARK サービスを再起動します。

sudo systemctl restart ark

基本コマンド一覧

コマンド 概要 典型的な使い方
ark create 新しいジョブを作成 ark create --name "data-collector" --script collect.sh
ark run ジョブをキューに投入し実行 ark run data-collector
ark stop 実行中のジョブを停止 ark stop data-collector
ark status ジョブの状態を確認 ark status data-collector
ark log ジョブのログを表示 ark log data-collector
ark list キューにある全ジョブ一覧 ark list
ark delete キューからジョブを削除 ark delete data-collector

コマンド詳細+実用オプション

ark create

ark create \
  --name "web-scrape" \
  --script /usr/local/bin/scrape.py \
  --env "PYTHONPATH=/opt/lib" \
  --resources cpu=4,memory=8GiB,disk=10GiB
  • --env:環境変数を渡すことができ、複数指定はカンマで区切ります。
  • --resources:必要なリソースを明示。欠如があるとジョブがキューから除外されます。

ark run

  • --delay=10:ジョブを 10 秒後に開始。
  • --priority=10:優先度を10(高いほど先に実行)。

ark stop

  • --force:ジョブが応答しない場合に強制停止。

エラー対処ガイド

1. ARK ERROR: Unable to acquire resource

  • 原因:指定リソースが不足。
  • 対策

    1. ark status で現在のリソース使用状況を確認。
    2. 複数ジョブを同時に走らせる場合は --resources を緩めるか、不要なジョブを停止。
    3. サーバーのリソースを上げる(CPU・メモリ増設)。

2. ARK ERROR: Job script not found

  • 原因:指定したスクリプトパスが存在しない。
  • 対策

    • -v オプションでスクリプト実行前にエラーログを取得し、パスを再確認。
    • ファイル権限が不足している場合は chmod +x して実行権限を与える。

3. ARK WARNING: Duplicate job name

  • 原因:同名ジョブが既にキュー内に存在。
  • 対策

    • ark list で同名ジョブを検索。
    • 必要に応じて ark delete で削除、または --force で上書き実行。

4. パーミッション関連

  • Permission denied (public key)

    • SSH キーが設定されていない、またはリモートサーバーに登録されていない。
    • ~/.ssh/authorized_keys へ公開鍵を登録し、 ssh-agent で管理。

5. ネットワーク接続がタイムアウト

  • 原因SCHEDULER_PORT がファイアウォールで遮断。
  • 対策

    • iptables やクラウドセキュリティグループでポート開放。
    • ark start -p 8080 で別ポートを試す。

トラブルシューティング:よくあるケース

ケース 具体例 解決策
ジョブが「stuck」状態 ark statusSTALLED になる。 ark stop --force で強制終了してから再度 ark run
ログが古すぎて情報がない /var/log/ark/*.log が 7 日前にローテート。 ark log -c でローテーション済みログを読み取る。
大量ジョブでフリーズ ark list で 10,000 件以上表示。 ark list --limit 2000 でページ分割。
データベースの接続エラー ARK DB ERROR: connection lost. DB サービスが稼働中か確認し、再起動。

応用テクニック

1. マルチノードジョブの分散

ark run \
  --node "node01,node02,node03" \
  --name "data-processor" \
  --script /opt/bin/process.sh
  • --node:指定したノードでジョブをスケジュール。
  • 必要に応じて負荷を分散し、スループットを最大化。

2. 動的リソース割当

ジョブ開始時に実際に必要とするリソースを算出し、動的に要求。

ark run \
  --script dyn_alloc.py \
  --dynamic-resources

dyn_alloc.py 内で ARK_REQ_CPU=4 などを設定し、ジョブ実行直前にリソース情報を出力。

3. 環境変数とシークレット管理

ark create \
  --name "db-backup" \
  --script backup.sh \
  --env "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}" \
  --env "AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}"

環境変数を安全に管理する方法として、HashiCorp Vault などと連携。

4. カスタムヘルスチェック

ジョブの完了検知に ARK_HEALTH_CHECK を設定。

ark create \
  --script ./pipeline.sh \
  --health-check "curl -f http://localhost:8000/health"

成功したらリソースを解放し、失敗したらロールバック処理へ。


ログとメトリックの収集

ARK は標準出力に加え、Prometheus のエンドポイント http://localhost:9100/metrics を提供しています。

メトリック名 意味
ark_jobs_total 総ジョブ数
ark_jobs_running 実行中ジョブ数
ark_resource_usage_cpu CPU 使用率
ark_resource_usage_memory メモリ使用率

Grafana などと組み合わせることで、運用監視ダッシュボードを構築できます。


まとめ

  • インストール:依存パッケージを整備し、公式リポジトリからコンパイル。
  • 基本操作create/ run/ stop/ status/ log でジョブを管理。
  • エラー対処:リソース不足・パスエラー・重複ジョブを中心にチェック。
  • 応用:マルチノード配列、動的リソース、環境変数管理、自動ヘルスチェック。
  • 監視:ログ・メトリックを活用し、Grafana で可視化。

AR​K は、ジョブの実行とリソース管理を一元化できる便利なツールです。
記事を参考に、環境に合わせて設定をチューニングし、安定した運用を実現してください。

投稿者