Direct I/O CLI ユーザーガイド

この文書では、Direct I/O CLI ( directio コマンド ) の利用方法について説明します。

Experimental

Asakusa Framework バージョン 0.10.2 では、Direct I/O CLIは試験的機能として提供しています。

セットアップ

Direct I/O CLIは開発環境と運用環境の両方で利用することができます。

開発環境のセットアップ

開発環境では、開発環境用のAsakusa Frameworkがインストールされた状態であればDirect I/O CLIを利用することができます。 開発環境上でAsakusa Frameworkをインストールする手順については、 Asakusa Framework スタートガイドAsakusa Gradle Plugin ユーザーガイド などを参照してください。

運用環境のセットアップ

運用環境では、Asakusa Frameworkのデプロイメントアーカイブを配備した状態であればDirect I/O CLIを利用することができます。 運用環境上でデプロイメントアーカイブを配置する手順については、 Asakusa Framework デプロイメントガイド などを参照してください。

directio コマンド

Direct I/O CLIの各機能は directio コマンドを通して利用します。 セットアップが完了した環境であれば、 directio コマンドは $ASAKUSA_HOME/tools/bin 配下に配置されています。 コマンドラインから directio コマンドを利用する場合、 $ASAKUSA_HOME/tools/bin 配下に環境変数 PATH を通しておくと便利です。

以降本書で directio コマンドを実行する例を示す際には、上記の PATH 環境変数が設定済であるものとします。

正しくセットアップが行われている環境でコマンドラインから directio コマンドを実行すると、以下のように表示されます。

$ directio
Usage: directio <command> <command options>

The available commands are:
    configuration - Displays Direct I/O configuration.
    copy - Copies files on Direct I/O data source.
    delete - Removes Direct I/O resources.
    get - Copies Direct I/O resources onto local file system.
    list - Displays list of Direct I/O resources.
    mkdir - Creates directories on Direct I/O data source.
    move - Renames files on Direct I/O data source.
    put - Copies local files onto Direct I/O data source.
    transaction - Manipulates Direct I/O transactions.

See 'directio <command> --help' for more information on a specific command.

上記が表示されず、エラーメッセージが表示されてしまう場合には、セットアップ環境を確認してください。

Hadoop環境の設定

Direct I/O CLIを利用するにはHadoop環境がセットアップされている必要があります。

まず、 Asakusa on M3BPユーザーガイド - Hadoopとの連携 に示す手順などにより hadoop.embed true を指定してAsakusa Frameworkに組み込みのHadoopライブラリーを含めた場合、Direct I/O CLIはこれを使用します。

上記の設定を行わず、実行環境にインストール済みのHadoopと連携する場合、以下の環境変数のいずれかによって利用するHadoop環境を特定します。

HADOOP_CMD
hadoop コマンドのパス
HADOOP_HOME
Hadoopのインストール先
PATH
hadoop コマンドが通っているパス

上記の方法で利用可能なHadoopを解決できない場合、 directio コマンドは実行時にエラーとなります。

Asakusa Frameworkが利用するHadoop環境(Hadoopライブラリーや hadoop コマンドのパス)は、 asakusa コマンド [1] で確認することができます。

$ asakusa version -v
0.10.0
ASAKUSA_HOME: /home/asakusa/asakusa
Hadoop: /usr/local/lib/hadoop/bin/hadoop
java.version: 1.8.0_121
java.vendor: Oracle Corporation

asakusa version -v コマンドを実行した結果、 Hadoop: に表示されるHadoopライブラリーや hadoop コマンドをDirect I/O CLIは利用します。 この値に N/A と表示される場合は利用可能なHadoopを解決できていない状態です。

[1]asakusa コマンドについて詳しくは、 コマンドラインインターフェース - Asakusa CLI を参照してください。

コマンド体系

サブコマンド

directio コマンドはサブコマンドを指定することで様々な機能を呼び出します。 サブコマンドには configurationlistput といったものがあります。 サブコマンドの中には、さらにサブコマンドを要求するものもあります。

コマンドラインから実行する際には、サブコマンド間をスペースで区切って指定します。

例えば、directio configuration list のように実行すると、環境上に設定されたDirect I/Oのデータソースをリストとして表示します。

$ directio configuration list
root

パラメータ

多くのサブコマンドでは、サブコマンドに続けて処理の対象を指定するパラメータを指定します。

コマンドラインから実行する際には、サブコマンドの後にパラメータをスペースで区切って指定します。

例えば、directio get は1つ目のパラメータに指定したDirect I/O上のパス上のファイルを、2つ目のオプションで指定したローカルパス上に保存します。

$ directio get result/category/result.csv /tmp

オプション

各サブコマンドにはサブコマンド共通、または固有のオプションが存在します。

コマンドラインから実行する際には、サブコマンドの後、またはパラメータ後にスペースで区切って指定します。 多くのLinuxコマンドと同様に、いくつかのオプションでは -- から始まる記法の他、 - から始まる短縮記法を利用できます。

オプションによっては、オプション固有のパラメータを指定するものもあります。 通常、オプションとそのパラメータはスペースで区切って指定しますが、 一部のオプションでは -Akey=value のようにスペースで区切らずに指定することも可能です。

以下はサブコマンドの主なオプションです。 サブコマンドによって使用できるオプションは異なるので、詳しくは各サブコマンドのヘルプを参照してください。

--conf, --configuration file

Direct I/O CLIが利用するDirect I/O設定ファイルのファイルパスを指定する。

既定値: $ASAKUSA_HOME/core/conf/asakusa-resources.xml

-s, --data-source

データソースIDを指定し、対応するデータソースに対する操作を行う

-e, --encoding encoding

コマンドの出力内容の文字セットエンコーディングを指定する。

デフォルトでは環境の標準エンコーディングを使用する。

-o, --output file

コマンドの出力内容を指定したファイルパスに保存する。 デフォルトでは標準出力に出力する。

-v, --verbose

コマンド実行結果の出力に詳細な情報を含める。

-h, --help

ヘルプメッセージを表示する。 サブコマンドが要求するオプションや追加のサブコマンドを確認する。

$ directio list --help
Usage: directio list [options] [directio-path..]
  Options:
    --conf, --configuration
      Hadoop custom configuration file path.
      Default: /home/asakusa/asakusa/core/conf/asakusa-resources.xml
    -s, --data-source
      Data source ID instead of inferring from path.
    ...

コマンドリファレンス

directio コマンドのサブコマンド一覧を以下に示します。

directio サブコマンド
サブコマンド カテゴリ 説明
directio list ファイル操作 Direct I/Oのデータソースに含まれるファイルの一覧を表示する
directio mkdir ファイル操作 Direct I/Oのデータソース上にディレクトリを作成する
directio get ファイル操作 Direct I/Oのデータソース上のファイルをローカルファイルシステムにコピーする
directio put ファイル操作 ローカルファイルシステム上のファイルをDirect I/Oのデータソース上にコピーする
directio delete ファイル操作 Direct I/Oのデータソース上のファイルを削除する
directio copy ファイル操作 Direct I/Oのデータソース間でファイルをコピーする
directio move ファイル操作 Direct I/Oのデータソース間でファイルを移動する
directio configuration 設定 Direct I/Oの設定を表示する
directio transaction トランザクション Direct I/Oのトランザクション操作を行う

ファイル操作について

ここではファイル操作系のサブコマンドに共通するオプションや動作について説明します。

directio-path

コマンドのオプションに directio-path.. (ファイル名のパターン)を指定する場合、ここにはファイル名だけでなくワイルドカードなどのパターン用の文字列も利用できます。

ここに利用できるパターンは以下の通りです。

利用できるパターン
文字列 名前 概要
名前文字 リテラル そのままファイル名として利用します。 対象のデータソースが利用できるファイル名のうち、 / , \ , $ , * , ? , # , | , { , } , [ , ] 以外の文字を利用できます。
/ 名前区切り パスに含まれる名前の区切り文字です。
* ワイルドカード 0個以上の任意の名前文字とマッチします。
{..|..|..} 選択 | で区切られたいずれかの名前にマッチします。 .. の部分には名前文字と名前区切りの組み合わせのみを指定できます。

上記のほかに、特別なディレクトリやファイル名として ** を利用できます。 これは、検索対象以下のすべてのサブディレクトリ(自身のディレクトリも含む)とそれに含まれるファイルにマッチします。

ただし、 ** はディレクトリやファイル名の一部としては利用できません。 たとえば、 **.csv というパターンは利用できず、代わりに **/*.csv と書きます。

Attention

利用しているシェルによっては、 directio-path* 文字が含まれていた場合に自動的に展開されてしまいます。 展開を回避するには、 "*" のようにダブルクウォート文字で囲むなどの指定を行なってください。

directio コマンドでは、上記の文法で指定したパスから、自動的にDirect I/Oのベースパスとリソースパターンを抽出します。

具体的には、パスの先頭から「名前区切り」ごとに「名前文字」のみで構成された部分をベースパスとして取り扱い、残りをリソースパターンとして取り扱います。 なお、パスの末尾の名前は常にリソースパターンとして扱い、ベースパスが空になった場合には / として扱います。

以下は例です。

  • a/b/*.csv -> a/b + *.csv
  • a/b.csv -> a + b.csv
  • **/*.csv -> / + **/*.csv

このパスは、以下のコマンドで利用します。

  • directio list の引数
  • directio mkdir の引数
  • directio get の先頭の引数 (コピー元)
  • directio put の末尾の引数 (コピー先)
  • directio copy の引数
  • directio move の引数

Hint

Direct I/Oはベースパスの最長一致でデータソースを特定しています。 上記とは異なる方法でデータソースを指定する場合、 --datasource オプションに対象のデータソースIDを指定してください。

ファイルの移動・コピーの動作

directio コマンドにおいて、下記のファイルの移動やコピーを行うコマンドは、移動・コピー先(宛先)に関する共通の動作があります。

  • directio get
  • directio put
  • directio copy
  • directio move
  1. 宛先にディレクトリすでが存在する場合、そのディレクトリ配下に移動・コピーを行う
  • 複数のファイルやディレクトリを移動・コピー可能
  1. 宛先にファイルが存在する場合、そのファイルに上書き操作を行う
  • 移動・コピー元は単一のファイルやディレクトリでなければならない
  • --overwrite オプションを指定する必要がある
  1. 宛先にファイルやディレクトリが 存在せず 、その親ディレクトリが存在する場合、宛先に単一のファイルを作成する
  • 移動・コピー元は単一のファイルやディレクトリでなければならない
  1. 宛先にファイルやディレクトリが 存在せず 、その親ディレクトリも 存在しない 場合、エラーとなる

また、それぞれ下記の共通オプションを利用可能です。

-r, --recursive

ファイルだけでなく、ディレクトリーもコピーする。

このオプションを指定しない場合、ディレクトリーのコピーを行わずスキップする。

directio move においては常にディレクトリーの移動を行うため、このオプションは利用できない。

ディレクトリーを移動・コピーする際に宛先にすでにディレクトリーが存在する場合、コピー元のディレクトリーの内容を宛先にマージする。

-w, --overwrite

宛先にすでにファイルが存在した場合、そのファイルを上書きする。

このオプションを指定せずに、ファイルを上書きしようとした場合エラーとなる。

-p, --parallel

複数ファイルの操作を並列に実行する。

directio list

list はDirect I/Oのデータソースに含まれるファイルの一覧を表示します。

書式

directio list [options] [directio-path..]

使用例

list を標準のオプションで実行すると、Direct I/Oのすべてのデータソースに含まれるファイルやディレクトリーのパス一覧を表示します。

$ directio list
file:/home/asakusa/target/testing/directio/master
file:/home/asakusa/target/testing/directio/master/item_info.csv
file:/home/asakusa/target/testing/directio/master/store_info.csv
file:/home/asakusa/target/testing/directio/result
file:/home/asakusa/target/testing/directio/result/category
file:/home/asakusa/target/testing/directio/result/category/result.csv
file:/home/asakusa/target/testing/directio/result/error
file:/home/asakusa/target/testing/directio/result/error/2011-04-01.csv
file:/home/asakusa/target/testing/directio/sales
file:/home/asakusa/target/testing/directio/sales/2011-04-01.csv

list のオプションには表示するファイル名のパターンを指定することができます。

$ directio list "result/**/*"
file:/home/asakusa/target/testing/directio/result/category
file:/home/asakusa/target/testing/directio/result/category/result.csv
file:/home/asakusa/target/testing/directio/result/error
file:/home/asakusa/target/testing/directio/result/error/2011-04-01.csv

list を詳細オプション付きで実行すると、ファイルに付随する属性情報も表示します。

$ directio list -v "result/**/*"
total 4
file:/home/asakusa/target/testing/directio/result/category
    data source: root
      directory: true
file:/home/asakusa/target/testing/directio/result/category/result.csv
    data source: root
      directory: false
file:/home/asakusa/target/testing/directio/result/error
    data source: root
      directory: true
file:/home/asakusa/target/testing/directio/result/error/2011-04-01.csv
    data source: root
      directory: false

directio mkdir

mkdir はDirect I/Oのデータソース上にディレクトリを作成します。

書式

directio mkdir [options] directio-path..

使用例

$ directio mkdir /temp/foo

$ directio mkdir -v /temp/foo/bar
create directory: file:/home/asakusa/target/testing/directio/temp/foo/bar

directio get

get はDirect I/Oのデータソース上のファイルをローカルファイルシステムにコピーします。

書式

directio get [options] directio-path.. local-path

使用例

1つのファイルを取得する例です。

$ directio get /result/category/result.csv $HOME/work

ディレクトリ配下のすべてのファイルを取得する例です。 -r オプションを指定します。

$ directio get -r -v /result $HOME/work
copy directory: hdfs://<host>:8020/user/asakusa/target/testing/directio/result -> file:/home/asakusa/work/result
copy directory: hdfs://<host>:8020/user/asakusa/target/testing/directio/result/category -> file:/home/asakusa/work/result/category
copy file: hdfs://<host>:8020/user/asakusa/target/testing/directio/result/category/result.csv -> file:/home/asakusa/work/result/category/result.csv
copy directory: hdfs://<host>:8020/user/asakusa/target/testing/directio/result/error -> file:/home/asakusa/work/result/error
copy file: hdfs://<host>:8020/user/asakusa/target/testing/directio/result/error/2011-04-01.csv -> file:/home/asakusa/work/result/error/2011-04-01.csv

大量のファイルを取得する場合、 -p オプションを指定して並列にファイルを取得すると全体のファイル取得時間が短縮できる可能性があります。

$ directio get -r -p "/data/*" /mnt/data

directio put

put はローカルファイルシステム上のファイルをDirect I/Oのデータソース上にコピーします。

書式

directio put [options] local-path.. directio-path

使用例

1つのファイルをコピーする例です。 -w オプションを指定すると、すでに存在する同名のファイルを上書きします。

$ directio put -w example-dataset/sales/2011-04-01.csv /sales

ディレクトリ配下のすべてのファイルをコピーする例です。 -r オプションを指定します。

$ directio put -r -v $ASAKUSA_HOME/example-dataset/* /
copy directory: file:/home/asakusa/asakusa/example-dataset/master -> hdfs://<host>:8020/user/asakusa/target/testing/directio/master
copy file: file:/home/asakusa/asakusa/example-dataset/master/item_info.csv -> hdfs://<host>:8020/user/asakusa/target/testing/directio/master/item_info.csv
copy file: file:/home/asakusa/asakusa/example-dataset/master/store_info.csv -> hdfs://<host>:8020/user/asakusa/target/testing/directio/master/store_info.csv
copy directory: file:/home/asakusa/asakusa/example-dataset/sales -> hdfs://<host>:8020/user/asakusa/target/testing/directio/sales
copy file: file:/home/asakusa/asakusa/example-dataset/sales/2011-04-01.csv -> hdfs://<host>:8020/user/asakusa/target/testing/directio/sales/2011-04-01.csv

大量のファイルをコピーする場合、 -p オプションを指定して並列にファイルをコピーすると全体のファイル取得時間が短縮できる可能性があります。

$ directio put -r -p /mnt/data/* /data

directio delete

delete はDirect I/Oのデータソース上のファイルを削除します。

書式

directio delete [options] directio-path..

使用例

1つのファイルを削除する例です。

$ directio delete result/error/2011-04-01.csv

ディレクトリとその配下のすべてのファイルを削除する例です。 -r オプションを指定します。

$ directio delete -r -v result
delete: hdfs://<host>:8020/user/asakusa/target/testing/directio/result

データソース上のファイルをすべて削除する例です。

$ directio delete -r "/*"

Attention

先述の directio-path にも記載していますが、ファイル名にワイルドカードを含むパターンを指定する場合、 利用するシェルによって意図せず展開されないよう "/*" のようにダブルクウォート文字で囲むなどの指定を行なってください。

directio copy

copy はDirect I/Oのデータソース間でファイルをコピーします。

書式

$ directio copy [options] source-directio-path.. destination-directio-path

使用例

1つのファイルをコピーする例です。

$ directio copy /result/category/result.csv /temp/result_bak.csv

ディレクトリとその配下のすべてのファイルをコピーする例です。 -r オプションを指定します。

$ directio copy -r -v /result /result_bak
copy directory: hdfs://<host>:8020/user/asakusa/target/testing/directio/result -> hdfs://<host>:8020/user/asakusa/target/testing/directio/result_bak
copy directory: hdfs://<host>:8020/user/asakusa/target/testing/directio/result/category -> hdfs://<host>:8020/user/asakusa/target/testing/directio/result_bak/category
copy file: hdfs://<host>:8020/user/asakusa/target/testing/directio/result/category/result.csv -> hdfs://<host>:8020/user/asakusa/target/testing/directio/result_bak/category/result.csv
copy directory: hdfs://<host>:8020/user/asakusa/target/testing/directio/result/error -> hdfs://<host>:8020/user/asakusa/target/testing/directio/result_bak/error
copy file: hdfs://<host>:8020/user/asakusa/target/testing/directio/result/error/2011-04-01.csv -> hdfs://<host>:8020/user/asakusa/target/testing/directio/result_bak/error/2011-04-01.csv

大量のファイルをコピーする場合、 -p オプションを指定して並列にファイルをコピーすると全体のファイル取得時間が短縮できる可能性があります。

$ directio put -r -p /data /work

directio move

move はDirect I/Oのデータソース間でファイルを移動します。

書式

$ directio move [options] source-directio-path.. destination-directio-path

使用例

1つのファイルを別ディレクトリに移動する例です。

$ directio move /result/category/result.csv /temp

ディレクトリとその配下のすべてのファイルを移動する例です。

$ directio move -v /result /result_bak
copy directory: hdfs://<host>:8020/user/asakusa/target/testing/directio/result -> hdfs://<host>:8020/user/asakusa/target/testing/directio/result_bak
copy directory: hdfs://<host>:8020/user/asakusa/target/testing/directio/result/category -> hdfs://<host>:8020/user/asakusa/target/testing/directio/result_bak/category
copy directory: hdfs://<host>:8020/user/asakusa/target/testing/directio/result/error -> hdfs://<host>:8020/user/asakusa/target/testing/directio/result_bak/error
copy file: hdfs://<host>:8020/user/asakusa/target/testing/directio/result/error/2011-04-01.csv -> hdfs://<host>:8020/user/asakusa/target/testing/directio/result_bak/error/2011-04-01.csv

directio configuration

configuration は、環境上のDirect I/Oの設定に関する情報を表示します。 configuration のサブコマンド一覧を以下に示します。

configuration サブコマンド
サブコマンド 説明
directio configuration list データソースの一覧を表示する
directio configuration system システム設定の一覧を表示する。

directio configuration list

list は環境上のDirect I/Oに定義されているデータソースの一覧を表示します。

書式

directio configuration list [options] [data-source-ID]

使用例

list を標準のオプションで実行すると、Direct I/OのデータソースID一覧を表示します。

$ directio configuration list
root
s3

list を詳細オプション付きで実行すると、各データソースの設定情報 [2] も表示します。

$ directio configuration list -v
total 2
root
    ID: root
    base-path: /
    class: com.asakusafw.runtime.directio.hadoop.HadoopDataSource
    attributes:
    - fs.path: target/testing/directio
s3
    ID: s3
    base-path: s3/spool
    class: com.asakusafw.runtime.directio.hadoop.HadoopDataSource
    attributes:
    - fs.path: s3://example/var/spool
    - output.staging: false
[2]Direct I/Oのデータソース設定については、 Direct I/O ユーザーガイド - データソースの設定 を参照してください。

directio configuration system

system は環境上のDirect I/Oのシステム設定 [3] に関する情報を表示します。

書式

directio configuration system [options]

使用例

$ directio configuration system
configuration: /home/asakusa/asakusa/core/conf/asakusa-resources.xml
system directory: file:/home/asakusa/_directio
local temporary: N/A
[3]Direct I/Oのシステム設定については、 Direct I/O ユーザーガイド - その他の設定 を参照してください。

directio transaction

transaction は、Direct I/Oのトランザクション操作 [4] を行います。 transaction のサブコマンド一覧を以下に示します。

transaction サブコマンド
サブコマンド 説明
directio transaction list Direct I/Oのトランザクションの一覧を表示する
directio transaction show Direct I/Oのトランザクションの詳細情報を表示する
directio transaction apply Direct I/Oでコミットに成功した未適用のトランザクションを適用する
directio transaction abort Direct I/Oのトランザクションを破棄する
[4]Direct I/Oのトランザクション制御については Direct I/O ユーザーガイド を参照してください。

directio transaction list

list はDirect I/Oのトランザクションの一覧を表示します。

書式

$ directio transaction list [options]

使用例

実行中のDirect I/Oトランザクションが存在しない場合は、以下のように表示されます。

$ directio transaction list
17/11/07 17:11:29 INFO hadoop.DirectIoTransactionEditor: Start listing Direct I/O transactions
17/11/07 17:11:29 INFO hadoop.DirectIoTransactionEditor: There are no Direct I/O transactions

実行中のDirect I/Oトランザクションが存在する場合は、以下のように表示されます。 詳細オプション付きで実行すると、トランザクションに関する詳細な情報が表示されます。

$ directio transaction list -v
17/11/07 17:19:01 INFO hadoop.DirectIoTransactionEditor: Start listing Direct I/O transactions
17/11/07 17:19:02 INFO hadoop.DirectIoTransactionEditor: Start extracting 1 Direct I/O commit information
17/11/07 17:19:02 INFO hadoop.DirectIoTransactionEditor: Finish listing Direct I/O transactions
c09f4137-5d0b-4c9c-8bee-69eb05c13bc8
    ID: c09f4137-5d0b-4c9c-8bee-69eb05c13bc8
    status: Committed
    date: 2017-11-07T08:18:33Z
    comment:
    > User Name: asakusa
    > Batch ID: m3bp.perf.average.cogsort.once
    > Flow ID: cogsort_once
    > Execution ID: c09f4137-5d0b-4c9c-8bee-69eb05c13bc8
    > Batch Arguments: {input=10G/input, output=10G/output}

directio transaction show

show はDirect I/Oのトランザクションの詳細情報を表示します。

コマンドのパラメータには list で表示した実行IDを指定します。

書式

$ directio transaction show [options] execution-ID

使用例

$ directio transaction show c09f4137-5d0b-4c9c-8bee-69eb05c13bc8
ID: c09f4137-5d0b-4c9c-8bee-69eb05c13bc8
status: Committed
date: 2017-11-07T08:18:33Z
comment:
> User Name: asakusa
> Batch ID: m3bp.perf.average.cogsort.once
> Flow ID: cogsort_once
> Execution ID: c09f4137-5d0b-4c9c-8bee-69eb05c13bc8
> Batch Arguments: {input=10G/input, output=10G/output}

directio transaction apply

apply はDirect I/Oでコミットに成功した未適用のトランザクションを、最後まで適用します。 この操作によって、in-doubt状態になっているトランザクションを適切に終了させることができます。

コマンドのパラメータには list で表示した実行IDを指定します。 listshow で表示される status の項目が Committed となっているもののみを、このコマンドで処理できます。 status の項目が Committed でない場合、このコマンドを実行するとエラーとなります。

書式

$ directio transaction apply [options] execution-ID

使用例

$ directio transaction apply -v 3819e025-4472-447f-9cf5-bd2df2507337
apply transaction
ID: 3819e025-4472-447f-9cf5-bd2df2507337
status: Committed
date: 2017-11-08T07:42:15Z
comment:
> User Name: asakusa
> Batch ID: m3bp.perf.average.cogsort.once
> Flow ID: cogsort_once
> Execution ID: 3819e025-4472-447f-9cf5-bd2df2507337
> Batch Arguments: {input=1G/input, output=1G/output}
17/11/08 16:46:28 INFO hadoop.DirectIoTransactionEditor: Start applying Direct I/O transaction (executionId=3819e025-4472-447f-9cf5-bd2df2507337)
17/11/08 16:46:28 INFO hadoop.DirectIoTransactionEditor: Start initializing Direct I/O data stores
17/11/08 16:46:28 INFO hadoop.DirectIoTransactionEditor: Finish initializing Direct I/O data stores
17/11/08 16:46:28 INFO hadoop.DirectIoTransactionEditor: Deleting commit mark (executionId=3819e025-4472-447f-9cf5-bd2df2507337, path=file:/home/asakusa/_directio/transactions/commit-3819e025-4472-447f-9cf5-bd2df2507337)
17/11/08 16:46:28 INFO hadoop.DirectIoTransactionEditor: Finish applying Direct I/O transaction (executionId=3819e025-4472-447f-9cf5-bd2df2507337)

directio transaction abort

abort はDirect I/Oで行われた任意のトランザクションを破棄します。

コマンドのパラメータには list で表示した実行IDを指定します。

status の項が Committed , Uncommitted のいずれの場合でも途中結果を強制的に破棄することができます。 status の項が Committed のトランザクションを破棄する場合、 --force ( -f ) オプションを指定します。

Warning

status の項目が Committed になってるトランザクションに対してこのコマンドを実行すると、処理結果が中途半端にデータソース上に反映されたまま復元できなくなる場合があります。

そのようなトランザクションには通常 apply によってコミットの適用を行うべきですが、コミットの内容が不要になった場合や、コミットの内容がエラーによりどうやっても適用できない場合などには、上記のコマンドも利用できます。

Hint

status の項目が Uncommitted である場合、コミットの破棄はほぼロールバック操作と同様になります。 ただし、Direct I/Oの出力時に「ステージ領域の省略」を行っていた場合には、途中結果が出力先に一部反映されている可能性があります。

書式

$ directio transaction abort [options] execution-ID

使用例

$ directio transaction abort -v a1b4286f-b316-4cc4-b6e6-9c49a8b723a1
abort transaction
ID: a1b4286f-b316-4cc4-b6e6-9c49a8b723a1
status: Uncommitted
date: 2017-11-08T07:47:55Z
comment:
> User Name: asakusa
> Batch ID: m3bp.perf.average.cogsort.once
> Flow ID: cogsort_once
> Execution ID: a1b4286f-b316-4cc4-b6e6-9c49a8b723a1
> Batch Arguments: {input=1G/input, output=1G/output}
17/11/08 16:49:09 INFO hadoop.DirectIoTransactionEditor: Start aborting Direct I/O transaction (executionId=a1b4286f-b316-4cc4-b6e6-9c49a8b723a1)
17/11/08 16:49:09 INFO hadoop.DirectIoTransactionEditor: Start initializing Direct I/O data stores
17/11/08 16:49:09 INFO hadoop.DirectIoTransactionEditor: Finish initializing Direct I/O data stores
17/11/08 16:49:09 INFO hadoop.DirectIoTransactionEditor: Deleting transaction info (executionId=a1b4286f-b316-4cc4-b6e6-9c49a8b723a1, path=file:/home/asakusa/_directio/transactions/commit-a1b4286f-b316-4cc4-b6e6-9c49a8b723a1)
17/11/08 16:49:09 INFO hadoop.DirectIoTransactionEditor: Finish aborting Direct I/O transaction (executionId=a1b4286f-b316-4cc4-b6e6-9c49a8b723a1)