2015/03/02 Version 1.0.0
コマンドラインツール¶
IIJ GIOストレージ&アナリシスサービスではRuby製のコマンドラインツールが用意されています。
インストール¶
- バージョン2.1.0以降のRubyが導入されている必要があります。
- Gemパッケージは、Rubygems.orgにて公開されています。
$ gem install iij-dag
また、以下のURLからGemファイルをダウンロードし、Gemファイル名を指定してインストールすることも可能です。
$ gem install iij-dag-1.0.0.gem
共通項目¶
アカウント設定¶
{
"access_key_id" : "XXXXXXXXXXXXXXXXXXXX",
"secret_access_key" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
パラメータ名 | 必須 | 型 | デフォルト値 | 概要 |
---|---|---|---|---|
access_key_id | yes | String | アクセスキーID | |
secret_access_key | yes | String | シークレットアクセスキー | |
analysis_api | no | String | https://analysis-dag.iijgio.com/ | アナリシスAPIのエンドポイント |
storage_api | no | String | https://storage-dag.iijgio.com/ | ストレージAPIのエンドポイント |
force_path_style | no | Boolean | false |
|
debug | no | Boolean | false | デバッグモードON/ OFFフラグ |
グローバルオプション¶
- -v, [–version]
- コマンドラインツール及びRuby版ユーザライブラリのバージョン情報が表示されます。
- -C, [–config=/path/to/file]
- 設定ファイルのパスを指定します。
- デフォルトでは設定ファイルとして $HOME/.dag/credential.json を読み込みます。
- また設定ファイルのフォーマットはjson形式です。
- [–debug], [–no-debug]
- リクエストのやりとりを表示します。
- 設定ファイルに、”debug”: trueを指定した場合と同じ動作になります。
以下に示すように、サブコマンドの前に ‘help’ を入力することで各サブコマンドの使用方法を表示しますまた以下に解説するサブコマンドの各々に於いて、サブコマンドの左に ‘help’ とすることでサブコマンドの使用方法その他を表示します。
$ dag help job
Commands:
dag job help [COMMAND] # Describe subcommands or one specific subcommand
dag job info [JOB_ID] # Job info
dag job kill! [JOB_ID] # Stop job
dag job list # Jobs list
dag job log [JOB_ID] # show job log
dag job progress [JOB_ID] # Show Progress Bar
dag job result [JOB_ID] # Create download url
dag job reuse [JOB_ID] # reuse job
dag job wait [JOB_ID] # wait job
Type 'dag help [COMMAND]' for more information on a specific command
機能一覧¶
クラスタ管理¶
機能名 | 概要 |
---|---|
クラスタ指定 | 操作対象とするクラスタを紐付けます。 |
クラスタ解除 | クラスタ紐付けを解除します。 |
クラスタ一覧表示 | クラスタの一覧を表示します。 |
クラスタ詳細情報表示 | クラスタの詳細情報を表示します。 |
クラスタ再起動 | クラスタを再起動します。 |
クラスタ起動待機 | クラスタが利用可能になるまで待機します。 |
クラスタログ出力 | クラスタのログをストレージに出力します。 |
データベース管理¶
機能名 | 概要 |
---|---|
データベース一覧表示 | データベースの一覧を表示します。 |
データベース作成 | データベースを作成します。 |
データベース削除 | データベースを削除します。 |
テーブル管理¶
機能名 | 概要 |
---|---|
テーブル一覧表示 | テーブルの一覧を表示します。 |
テーブル詳細情報表示 | テーブルの詳細情報を表示します。 |
テーブルデータサイズ表示 | テーブル内のデータサイズを表示します。 |
テーブル作成 | テーブルを作成します。 |
テーブル情報更新 | テーブル情報を更新します。 |
テーブル削除 | テーブルを削除します。 |
スプリット実行 | スプリットを実行します。 |
ストレージ管理¶
機能名 | 概要 |
---|---|
バケット一覧表示 | バケットまたはオブジェクトの一覧を表示します。 |
バケット作成 | バケットを作成します。 |
バケット/オブジェクト削除 | バケットまたはオブジェクトを削除します。 |
オブジェクト書込 | 文字列またはファイルパスを受け取り、指定したオブジェクトに書き込みます。 |
オブジェクト読込 | 指定したオブジェクトの内容を表示します。 |
アカウント管理¶
アカウント情報表示¶
ユーザのアカウント情報を表示します。
$ dag account
+----------------------+---------------------------------+--------------------------------+
| apikey | analysis_api | storage_api |
+----------------------+---------------------------------+--------------------------------+
| XXXXXXXXXXXXXXXXXXXX | http://analysis-dag.iijgio.com/ | http://storage-dag.iijgio.com/ |
+----------------------+---------------------------------+--------------------------------+
1 row in set
クラスタ管理¶
クラスタ指定¶
操作対象とするクラスタを紐付けます。存在しないクラスタを指定した場合エラーとなります。
- クラスタが指定されない場合、 紐付いているクラスタを表示します。
- 現在紐付けられているものと別のクラスタを指定された場合は、クラスタの紐付けは上書きされます
$ dag cluster attach cluster1
Attach cluster cluster1
クラスタ一覧表示¶
クラスタの一覧を表示します。
- ユーザが持つ全クラスタのクラスタ名、 状態, 種別、インスタンス数を表示します。
- クラスタ指定サブコマンドにて紐付けられているクラスタには * で目印が付きます。
$ dag cluster list
+---+----------+--------+------------------+-----------+
| # | name | status | type | instances |
+---+----------+--------+------------------+-----------+
| | cluster1 | norm | DAG5-Hive-Hadoop | 2 |
| | cluster2 | norm | DAG5-Hive-Hadoop | 2 |
| * | cluster3 | norm | DAG5-Hive-Hadoop | 2 |
| | cluster4 | norm | DAG5-Hive-Hadoop | 2 |
+---+----------+--------+------------------+-----------+
項目名 | 概要 |
---|---|
name | クラスタ名 |
status | クラスタのステータス |
type | 使用するHadoopの種別 |
instances | インスタンス数 |
クラスタ詳細情報表示¶
$ dag cluster info
+-------------+---------+----------+--------------+----------+
| instance_id | grade | dfs_used | non_dfs_used | capacity |
+-------------+---------+----------+--------------+----------+
| 1 | a-1-010 | 3.36 MB | 34.1 MB | 100 GB |
| 2 | a-1-010 | 3.36 MB | 33.7 MB | 100 GB |
+-------------+---------+----------+--------------+----------+
2 rows in set
項目名 | 概要 |
---|---|
instance_id | インスタンスID |
grade | グレード |
dfs_used | 分散ファイルシステムのディスク使用量 |
non_dfs_used | 分散ファイルシステム以外のディスク使用量 |
capacity | 全ディスク容量 |
クラスタ再起動¶
$ dag cluster restart
Is this ok [y/N]: y
+----------+------------------+-------+
| name | type | force |
+----------+------------------+-------+
| cluster1 | DAG5-Hive-Hadoop | false |
+----------+------------------+-------+
1 row in set
オプション | 概要 |
---|---|
-f, [–force] | 実行中のクエリを無視して、強制的に再起動を行います。 |
-t, [–type=TYPE] | 使用するクラスタの種別を変更します。 |
-w, [–wait] | クラスタの再起動が完了するまで待機します。 |
-y, [–assuemeyes] | コマンドからの質問に全て yes で答え、コマンドの実行が中断しないようにします。 |
クラスタ起動待機¶
$ dag cluster restart
......
$ dag cluster wait_ready
starting(49s) norm(0s)
クラスタログ出力¶
$ dag cluster log dag://bucket1/object1/
オプション | 概要 |
---|---|
-c, [–compress] | 出力するログファイルをTAR 形式+GZIP 形式(tgz)にて圧縮します。 |
データベース管理¶
データベース一覧表示¶
データベースの一覧を表示します。
$ dag db list
+-----------+
| name |
+-----------+
| database1 |
| database2 |
| database3 |
| database4 |
+-----------+
4 rows in set
テーブル管理¶
テーブル一覧表示¶
テーブルの一覧を表示します。
- データベースが指定された場合、そのデータベースに属するテーブルの一覧を表示します。
- データベースが指定されない場合、全てのデータベースとテーブルを表示します。
$ dag table list database1
+-----------+--------+------------------------+------------------+---------------------+
| database | table | location | comment | created_at |
+-----------+---------+-----------------------+------------------+---------------------+
| database1 | table1 | dag://database1/table1 | its a test table | 2015-03-02 14:00:30 |
| database1 | table2 | dag://database1/table2 | example | 2015-03-02 20:06:57 |
+-----------+--------+------------------------+------------------+---------------------+
項目名 | 概要 |
---|---|
database | データベース名 |
table | テーブル名 |
location | テーブルのストレージ上のパス |
comment | コメント |
created_at | テーブル作成日時 |
テーブル詳細情報表示¶
データベースとテーブルを指定し、テーブルの詳細情報を表示します。
$ dag table info database1 table2
+-------------+-------------------------+
| item | info |
+-------------+-------------------------+
| name | table2 |
| format | csv |
| schema | v array<string> |
| location | dag://database1/table2 |
| comment | example |
| created_at | 2015-03-02 14:00:30 |
| modified_at | 2015-03-02 14:00:30 |
+-------------+-------------------------+
7 rows in set
項目名 | 概要 |
---|---|
name | テーブル名 |
format | フォーマット csv、tsv、json、json_agent の内の何れか |
schema | スキーマ |
location | テーブルのストレージ上のパス |
comment | コメント |
created_at | テーブル作成日時 |
modified_at | テーブル更新日時 |
テーブルデータサイズ表示¶
テーブル内のデータサイズを表示します。
$ dag table size database1 table2
+---------+---------+---------+
| title | objects | size |
+---------+---------+---------+
| Total | 17 | 3.08 MB |
| Gzip-ed | 17 | 3.08 MB |
| Skipped | 2 | 0 Bytes |
+---------+---------+---------+
3 rows in set
$ dag table size database1 table3 -s 3
+---------+---------+---------+--------+--------------+
| Title | Objects | Size | Ratio% | Uncompressed |
+---------+---------+---------+--------+--------------+
| Total | 41 | 20.5 KB | | 156 KB |
| Gzip-ed | 41 | 20.5 KB | 13.17 | 156 KB |
| Skipped | 0 | 0 Bytes | | |
+---------+---------+---------+--------+--------------+
3 rows in set
オプション | 概要 |
---|---|
-s, [–sample=N] | gzipの圧縮率の推定に使用するサンプリング数を指定します。 |
項目名 | 概要 |
---|---|
title | 項目内容 |
objects | オブジェクト数 |
size | データサイズ |
Ratio% | 圧縮率 オプション -s, –sample=N を指定した場合、サンプル数に応じた圧縮率を計算します。 |
Uncompressed | 無圧縮の場合のデータサイズ オプション -s, –sample=N を指定した場合、圧縮されたデータサイズと比較するため表示します。 |
テーブル作成¶
データベースを指定し、テーブルを作成します。
$ dag table create database1 table3
Create table table3
オプション | 概要 |
---|---|
format | フォーマット csv、tsv、json、json_agent の内の何れか |
schema | スキーマ |
comment | コメント |
テーブル情報更新¶
データベースを指定し、テーブルの情報を更新します。
$ dag table update database1 table3 \-\-format=tsv \-\-comment="its a test."
Update table table3
$ dag table info database1 table3
+-------------+-----------------------------------+
| item | info |
+-------------+-----------------------------------+
| name | table3 |
| format | tsv |
| schema | time string, v map<string,string> |
| location | dag://database1/table2 |
| comment | its a test. |
| created_at | 2015-03-02 20:45:02 |
| modified_at | 2015-03-02 20:45:02 |
+-------------+-----------------------------------+
7 rows in set
オプション | 概要 |
---|---|
format | フォーマット csv、tsv、json、json_agent の内の何れか |
comment | コメント |
項目名 | 概要 |
---|---|
name | テーブル名 |
format | テーブルのフォーマット |
schema | テーブルのスキーマ |
location | ストレージ上のテーブルのパス |
comment | コメント |
created_at | 作成日時 |
modified_at | 更新日時 |
スプリット実行¶
$ dag table split database1 table3 -i "dag://bucket1/object1/" "dag://bucket1/object1/" -f csv
オプション | 概要 |
---|---|
format | フォーマット csv、tsv、json の内の何れか |
-i, [–input-objects=one two three] | 入力オブジェクト複数指定可能 |
ストレージ管理¶
バケット一覧表示¶
バケットまたはオブジェクトの一覧を表示します。存在しないバケットを指定した場合はエラーとなります。
- バケットの指定が無い場合は、バケットの一覧を表示します。
- バケットの指定が有る場合は、指定したバケットが保持する全てのオブジェクトを一覧表示します。
- バケット指定時のみ、後述するオプションを指定することができます。
$ dag bucket list
bucket1
bucket2
bucket3
bucket4
$ dag bucket list bucket1
object1/data1
object2/20150201001
object3/000000_2
object4/data1
object4/data2
オプション | 概要 |
---|---|
-p, [–prefix=PREFIX] | 前方一致検索文字列の指定 |
-d, [–delimiter=DELIMITER] | オブジェクトの区切り文字を指定 |
バケット作成¶
指定されたバケット名のバケットを作成します。既に同名のバケットが存在する場合はエラーとなります。
$ dag bucket create bucket5
Create bucket bucket5
バケット/オブジェクト削除¶
指定したバケットまたはオブジェクトを削除します。存在しないバケットまたはオブジェクトを指定した場合はエラーとなります。
- バケットのみ指定した場合は、バケットを削除します。- バケット内にオブジェクトが存在する場合は削除できません。
- バケットとオブジェクトの両方が指定された場合は、指定されたオブジェクトを削除します。- 複数オブジェクトの指定が可能です。
バケットを削除する場合
$ dag bucket delete bucket5
Delete bucket bucket5
オブジェクトを削除する場合
$ dag bucket delete bucket5 object1
Delete object bucket5/object1
複数のオブジェクトを削除する場合
$ dag bucket delete bucket5 object1 object2
Delete object bucket5/object1
Delete object bucket5/object2
オブジェクト書込¶
オプション | 必須 | デフォルト値 | 概要 |
---|---|---|---|
-d, –data=DATA | yes | 書き込み内容 | |
-m, –multipart | no | マルチパートアップロード指定 | |
-j, –multipart-jobs=N | no | 1 | マルチパートアップロード時のジョブ数指定 |
-s, –multipart-splitsz=N | no | 104857600 | マルチパートアップロード時のファイル分割サイズ指定(単位:byte) 5242880byte以上を指定して下さい |
$ dag bucket write bucket5 object1 \-\-data "it's a test data." -m -j 4 -s 120000000
Write object bucket5/object1
もしくは以下のようにデータファイルのファイルパスを指定して下さい。
$ dag bucket write bucket5 object1 \-\-data ~/data.txt -m -j 4 -s 120000000
Write object bucket5/object1
クエリ管理¶
クエリ発行¶
クエリ文字列を指定した場合
$ dag query "SELECT MIN(v['time']),MAX(v['time']),COUNT(v['time']),v['a'] FROM database4.table1 GROUP BY v['a']" -o dag://bucket5/object1/ -f csv
accepted job job_id: 101
クエリ文字列が書き込まれたファイルのファイルパスを指定した場合
$ dag query ~/hiveql.txt -o dag://bucket5/object1/ -f csv
accepted job job_id: 101
オプション | 必須 | デフォルト値 | 概要 |
---|---|---|---|
-o, [–output=OUTPUT] | yes | ストレージ上の結果出力先オブジェクトパス | |
-f, [–format=FORMAT] | no | csv | 出力フォーマット csv または tsv |
-l, [–label=LABEL] | no | ラベル | |
-w, [–wait] | no | クエリ完了待機フラグ 指定された場合、終了まで待ちログと結果を出力します。 | |
-C, [–config=/path/to/file] | no | $HOME/.dag/credential.json | 設定ファイルのファイルパス |
ジョブ管理¶
ジョブ一覧表示¶
- クラスタと紐付けられている場合は、紐付けられたクラスタのジョブの一覧を表示します。
- クラスタに紐付けられていない場合は、全てのクラスタのジョブ一覧を表示します。
$ dag job list
+-----+----------+---------------------+--------+----------+------------------------------------------+
| id | status | start_at | type | cluster | query |
+-----+----------+---------------------+--------+----------+------------------------------------------+
| 100 | finished | 2015-03-02 16:29:09 | select | cluster1 | SELECT v['time'] FROM database1.table1 |
| 101 | running | 2015-03-02 16:31:21 | select | cluster1 | SELECT COUNT(*) FROM database1.testtable |
+-----+----------+---------------------+--------+----------+------------------------------------------+
オプション | 必須 | デフォルト値 | 概要 |
---|---|---|---|
-o, [–order=asc|desc] | no | asc | ジョブIDによる表示順序 asc(昇順)またはdesc(降順) |
-f, [–filter=key:value ... ] | no | status、type、cluster_name、label、cluster_rebooted の何れか 複数指定可 | |
-n, [–limit=Integer | no | 表示するジョブの個数 |
項目名 | 概要 |
---|---|
id | ジョブID |
status | ジョブのステータス |
start_at | ジョブ開始日時 |
type | ジョブ種別 SELECT または SPLIT |
cluster | クラスタ名 |
query | 実行したクエリ 長い場合は途中まで表示されます。 |
例として、クラスタのステータスが finished と error かつ種別が SELECT のジョブ一覧を表示させたい場合は、以下のようになります。
$ dag job list -f status:finished,error type:select
ジョブ詳細情報表示¶
指定したジョブの詳細情報を表示します。引数としてジョブIDを与えます。存在しないジョブを指定した場合はエラーとなります。
$ dag job info 101
+----------------------+-------------------------------------+
| item | info |
+----------------------+-------------------------------------+
| id | 101 |
| status | finished |
| start_at | 2015-03-02 16:31:21 |
| type | select |
| dsl | hive |
| cluster | cluster1 |
| cluster_rebooted | false |
| label | |
| stage | |
| progress | |
| access_key_id | XXXXXXXXXXXXXXXXXXXX |
| output_format | csv |
| output_resource_path | dag://database1/path/to/obj/result/ |
| query | SELECT |
| | COUNT (*) |
| | FROM |
| | database1.testtable |
+----------------------+-------------------------------------+
17 rows in set
項目名 | 概要 |
---|---|
id | ジョブID |
status | ジョブのステータス |
start_at | ジョブ開始日時 |
type | ジョブ種別 |
dsl | ジョブが使用しているhive等のDSLが表示されます。 |
cluster | クラスタ名 |
cluster_rebooted | ジョブ実行後にクラスタが再起動されたか否か |
label | ラベル |
stage | ジョブの実行程度 |
progress | ジョブの進捗度 |
access_key_id | アクセスキーID |
output_format | 出力フォーマット |
output_resource_path | ストレージ上の出力先パス |
query | 実行したクエリ |
ジョブ実行状況表示¶
ジョブの実行状況を表示します。引数としてジョブIDを与えます。存在しないジョブを指定した場合はエラーとなります。
- ジョブの実行が完了するまで実行状況を表示し続けます。
- 既に実行を完了しているジョブを指定した場合は、実行時間が0秒で戻ります。
$ dag job progress 101
Stage-1/Job-11616 Time: 00:00:15 <===================================================
ジョブキャンセル¶
実行中のジョブをキャンセルします。引数としてジョブIDを与えます。存在しないジョブを指定した場合はエラーとなります。
$ dag job kill! 101
Cancelling job 101
ジョブ結果表示¶
$ dag job result 101
job start at 2015-03-02 19:28:32, finished 2015-03-02 20:32:12, 3856 seconds.
+-----+--------------------+
| _c0 | _c1 |
+-----+--------------------+
| 200 | 22.113314675675678 |
| 404 | 18.177119911111113 |
| 503 | 128.76294299999998 |
+-----+--------------------+
3 rows in set
オプション | 必須 | デフォルト値 | 概要 |
---|---|---|---|
-f, [–format=FORMAT] | no | table | 出力フォーマット csv、tsv、table、url、time の何れか |
ジョブログ表示¶
ジョブのログを表示します。引数としてジョブIDを与えます。存在しないジョブを指定した場合はエラーとなります。
$ dag job log 101
15/03/02 13:11:15 INFO exec.Task: 2015-02-24 13:11:15,118 Stage-1 map = 99%, reduce = 33%, Cumulative CPU 2341.1 sec
15/03/02 13:11:25 INFO exec.Task: 2015-02-24 13:11:25,185 Stage-1 map = 99%, reduce = 33%, Cumulative CPU 2341.13 sec
15/03/02 13:11:35 INFO exec.Task: 2015-02-24 13:11:35,247 Stage-1 map = 99%, reduce = 33%, Cumulative CPU 2343.6 sec
......
ジョブ再利用¶
ジョブの再利用を行います。引数として再利用元のジョブIDを与えます。存在しないジョブを指定した場合はエラーとなります。
$ dag job reuse 101
accepted job job_id: 102
オプション | 必須 | デフォルト値 | 概要 |
---|---|---|---|
-o, [–output=OUTPUT] | no | 前回のジョブ実行時に指定されたもの | 出力パス |
-f, [–format=FORMAT] | no | 同上 | 出力フォーマット csv または tsv |
-l, [–label=LABEL] | no | 同上 | ラベル |
-q, [–query=QUERY] | no | 同上 | クエリ |
-w, [–wait] | no | 同上 | ジョブ実行完了待機フラグ |
データインポート¶
$ dag import database4 imported -f json -i ~/data.txt -l test
Initialize...
jobs: 1, splitsz: 104857600
> starting upload part 1, 41
< finished upload part 1, 41
finished upload 1 objects.
upload_objects:
/database1/imported/test_0.gz
オプション | 必須 | デフォルト値 | 概要 |
---|---|---|---|
-i, [–import-files=one two three] | yes | インポート対象ファイル | |
-f, [–format=FORMAT] | yes | csv、tsv、json、json_agent の何れか | |
-s, [–schema=SCHEMA] | no | スキーマ文字列またはスキーマが記述されたファイルのファイルパス | |
-l, [–label=LABEL] | no | テーブルに付加するラベル | |
-j, [–jobs=N] | no | ファイルの並列アップロード数 |