Tidoop REST API¶
コンテンツ:
イントロダクション¶
cosmos-tidoop-api は、共有 Hadoop 環境で MapReduce ジョブを実行するための RESTful API を公開しています。
共有する Hadoop 環境を強調していることを確認してください。これは、共有された Hadoop が、データと分析プロセス(ストレージとコンピューティング)の特別な管理を必要とするためです。API を介して MapReduce ジョブを実行することを担当する Oozie のようなツールがありますが、実行ジョブへのアクセス、そのステータス、結果などを考慮に入れないでください。言い換えれば、Oozie を使用すると、ユーザは ID を知ってジョブを殺すことができます。cosmos-tidoop-api を使用すると、ジョブの所有者だけができるようになります。
重要なポイントは、HDFS のユーザ・スペースに MapReduce のすべての操作(実行、強制終了、ステータスの取得など)を関連付けることです。このようにして、単純で効果的な認可ポリシーをユーザ空間ごとに確立することができます。最も基本的なアプローチでは、ユーザは自身のユーザ空間のみにアクセスできます。これは、OAuth2 などの認証メカニズムと簡単に組み合わせることができます。
最後に、ストレージ・クラスタ内のデータを分析するコンピューティング・クラスタで動作するように設計されている Cosmos-tidoop-api について説明することが重要です。もちろん、ストレージとコンピューティングのクラスタの両方が同じである場合もあります。その場合でもソフトウェアはその準備が整っています。
インストール¶
前提条件¶
この REST API は、利用者が管理する Hadoop クラスタでのみ意味があります。
cosmos-tidoop-api は Node.js アプリケーションですので、公式ダウンロードからインストールしてください。先進的な選択肢は、creationix/Tim Caswell によって、Node Version Manager (nvm) をインストールすることです。これにより、Node.js のいくつかのバージョンを持ち、それらの間で切り替えることができます。
もちろん、git
および curl
のような共通のツールが必要とされています。
API のインストール¶
これは、JavaScript で書かれたソフトウェアです。特に、Node.js (サーバサイドの JavaScript)に適しています。JavaScript はインタプリタ型のプログラミング言語なので、コンパイルやパッケージの構築は不要です。マシンのどこかにソースコードをダウンロードしておけば十分です。
まず作成されていなければ、cosmos-tidoop
という名前の Unix ユーザを作成します。アプリケーションのインストールと実行に必要です。これは、root または別の sudoer ユーザとしてのみ行うことができます :
$ sudo useradd cosmos-tidoop
$ sudo passwd cosmos-tidoop <choose_a_password>
あなたが sudoer ユーザであるときは、選択したパスの下に cosmos-tidoop-api ログトレースを保存するためのフォルダを作成します。通常は、/var/log/cosmos/cosmos-tidoop-api
で、所有者として cosmos-tidoop
を設定します :
$ sudo mkdir -p /var/log/cosmos/cosmos-tidoop-api
$ sudo chown -R cosmos-tidoop:cosmos-tidoop /var/log/cosmos
今度は、cosmos-tidoop
ユーザが。リクエスト・ユーザとして Hadoop コマンドを実行できるようにします。これは2つの方法で行うことができます :
- sudoersリストに
cosmos-tidoop
ユーザを追加する。これは最も簡単な方法ですが、最も危険な方法です - すべてのユーザグループに
cosmos-tidoop
ユーザを追加します。既定では、任意のユーザに対して、ユーザと同じ名前のグループが存在します。これは、グループ権限がユーザ権限(つまり77X
)と同じくらい広く開いている場合にのみ有効です
一度、新しいフレッシュな cosmos-tidoop
ユーザに変更します :
$ su - cosmos-tidoop
その後、fiware-cosmos リポジトリをあなたの所有権のどこかにクローンします :
$ git clone https://github.com/telefonicaid/fiware-cosmos.git
cosmos-tidoop-api コードは fiware-cosmos/cosmos-tidoop-api
にあります。そのディレクトリに移動して、インストール・コマンドを実行します :
$ cd fiware-cosmos/cosmos-tidoop-api
$ git checkout release/x.y.z
$ npm install
それは、node_modules
ディレクトリの下のすべての依存関係をダウンロードする必要があります。
単体テスト¶
未定
構成¶
cosmos-tidoop-api は JSON ファイル(conf/cosmos-tidoop-api.json
)によって設定されます。使用可能なパラメータは次のとおりです :
- host: サービスを実行しているホストの FQDN または IP アドレス。ローカルクライアントだけがサービスにアクセスできるようにしたい場合を除き、
localhost
を使用しないでください - port: 着信 API メソッド呼び出し用の TCP リスニングポート。デフォルトでは 12000 です
- storage_cluster:
- namenode_host: ストレージ・クラスタのネームノードの FQDN または IP アドレス
- namenode_ipc_port: ストレージ・クラスタのネームノードが使用するプロセス間通信のTCPリスニングポート。デフォルトでは 8020 です
- log:
- file_name: ログのトレースを1日単位で保存するファイルのパス。このファイルは、
tidoop
ユーザが所有するログフォルダ内に存在する必要があります - date_pattern: ログファイルがローテーションされたときにログファイル名に追加されるデータパターン
- file_name: ログのトレースを1日単位で保存するファイルのパス。このファイルは、
実行¶
cosmos-tidoop-api で実装されている Http サーバは、現在のディレクトリが fiware-cosmos/cosmos-tidoop-api
であると仮定して実行されます :
$ npm start
すべてがうまくいけば、ソフトウェアのバージョンをリモートから、Web ブラウザまたは curl
ツールを使用して、得ることができるはずです :
$ curl -X GET "http://<host_running_the_api>:12000/tidoop/v1/version"
{"version": "0.1.1"}
cosmos-tidoop-api は通常、TCP/12000 ポートで待機しますが、上記のように conf/cosmos-tidoop-api.conf
を編集すると変更できます。
管理¶
2つは、管理目的のためのデータソース、ログ、起動されたジョブのリストです。
トレースのロギング¶
通常は、/var/log/cosmos/cosmos-tidoop-lib
下に保存されたロギング・トレースは、GUI パフォーマンスに関する主要な情報ソースです。これらのトレースは、レベル、メッセージ、タイムスタンプの各フィールドを持つ JSON 形式で記述されています。例えば :
{"level":"info","message":"Connected to http://130.206.81.225:3306/cosmos_gui","timestamp":"2015-07-31T08:44:04.624Z"}
ロギングレベルは、次の階層に従います :
debug < info < warn < error < fatal
ログの中には、多くの info
メッセージと、いくつかの warn
か error
タイプがあります。特に興味があるのはエラーです :
- Hapi サーバの起動中にエラーが発生しました : このメッセージは、API の起動時に表示されることがあります。ほとんどの場合、構成されたホスト IP アドレス/ FQDN は、サービスが実行されている物理マシンに属していないか、構成済みのポートが既に使用されています。
サブミットされたジョブ¶
管理者は、送信されたジョブに関する情報を hadoop job
コマンドで取得できます。このようなコマンドは、MapReduce ジョブに関する情報を返すために REST API が使用する基本的なメカニズムです。このコマンドの完全なリファレンスは、公式のHadoopのドキュメントにあります。