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: ログファイルがローテーションされたときにログファイル名に追加されるデータパターン

トップ

実行

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 メッセージと、いくつかの warnerror タイプがあります。特に興味があるのはエラーです :

  • Hapi サーバの起動中にエラーが発生しました : このメッセージは、API の起動時に表示されることがあります。ほとんどの場合、構成されたホスト IP アドレス/ FQDN は、サービスが実行されている物理マシンに属していないか、構成済みのポートが既に使用されています。

トップ

サブミットされたジョブ

管理者は、送信されたジョブに関する情報を hadoop job コマンドで取得できます。このようなコマンドは、MapReduce ジョブに関する情報を返すために REST API が使用する基本的なメカニズムです。このコマンドの完全なリファレンスは、公式のHadoopのドキュメントにあります。

トップ