Cosmos クイック・スタート・ガイド

コンテンツ:

イントロダクション

このクイック・スタート・ガイドは、初心者プログラマが Cosmos と、その機能に精通するために実行する必要がある手順を概説しています。詳細については、FIWARE Catalog の公式ドキュメントおよび Cosmos の項目を参照してください。

トップ

前提

このクイック・スタート・ガイでは、すでに展開されている FIWARE Lab の Cosmos のグローバル・インスタンスを使用することを想定しています。これは、Cosmos の推奨使用法です。このグローバル・インスタンスは、Hadoop 分散ファイルシステム (HDFS) をベースにした分散ストレージ と、 Hadoop MapReduceエンジンとHiveなどのクエリツールをベースにした分散コンピューティング機能を提供するマシンのクラスタ内で実行されます。

実際、FIWARE Lab の Cosmos のグローバル・インスタンスは、実際には単一の Hadoop クラスタではなく、ストレージ・エンドポイント (storage.cosmos.lab.fiware.org) によって管理されるストレージを担当する1つのクラスタと、コンピューティング・エンドポイント (computing.cosmos.lab.fiware.org) によって管理されるコンピューティングを担当する1つのクラスタです。

トップ

ステップ・バイ・ステップ・ガイド

ステップ1 : OAuth2 トークンを取得

FIWARE Lab のすべての API は、OAuth2 トークンによって保護されています。Cosmos も例外ではないため、FIWARE Lab ユーザの有効なトークンをコンピューティング・エンドポイントにリクエストする必要があります。curl ツールは、その目的のために使用することができます:

$ curl -k -X POST "https://computing.cosmos.lab.fiware.org:13000/cosmos-auth/v1/token" -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=password&username=<YOUR_USER_EMAIL>&password=<YOUR_PASSWORD>”

ここで、usernamepassword は、FIWARE Lab に登録したときに使用したメールアドレスとパスワードです。次のようなものが得られるはずです :

{"access_token": "3azH09G1PdaGmgBNODLOtxy52f5a00", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "V2Wlk7aFCnElKlW9BOmRzGhBtqgR2z"}

access_token フィールドが、のOAuth2 トークンです。

トップ

ステップ2 : Cosmos アカウントを作成

執筆の時点で、FIWARE Lab のための Cosmos Portal の導入はロードマップにありますが、まだ完了していません。

したがって、アカウントを作成するには、FIWARE Lab ID を指定して、francisco.romerobueno@telefonica.com に電子メールを送信する必要があります。

この ID は、FIWARE Lab の Identity Manager にクエリすることで取得できます。

$ curl -X GET "https://account.lab.fiware.org/user?access_token=<YOUR_OAUTH2_TOKEN>"

ユーザ frb に対するそのようなクエリの結果は次のとおりです :

{"organizations": [], "displayName": "frb", "roles": [{"name": "provider", "id": "106"}], "app_id": “9556cc76154361b3b43d7b31f0600982", "email": "frb@tid.es", "id": "frb”}

ユーザ frb に対するそのようなクエリの結果は次のとおりです :

トップ

ステップ3 : データを HDFS にアップロード

ストレージ・エンドポイントの TCP/14000ポートでリッスンしている WebHDFS RESTful API を使用して、独自のデータを HDFS スペースにアップロードできます。

HDFSユーザ空間 (この例では、hdfs:///user/frb) に新しいディレクトリ (testdir) を作成してみましょう。curl は、REST クライアントとして使用されています :

$ curl -X PUT "http://storage.cosmos.lab.fiware.org:14000/webhdfs/v1/user/frb/testdir?op=MKDIRS&user.name=frb" -H "X-Auth-token: 3azH09G1PdaGmgBNODLOtxy52f5a00" | python -m json.tool
{"boolean": true}

さて、作成した新しいディレクトリにローカルファイル(testdata.txt) をアップロードしてみましょう (verbose オプション -v が使用されていることを確認してください) :

$ cat testdata.txt
luke,tatooine,jedi,25
leia,alderaan,politician,25
solo,corellia,pilot,32
yoda,dagobah,jedi,275
vader,tatooine,sith,50
$ curl -v -X PUT -T testdata.txt "http://storage.cosmos.lab.fiware.org:14000/webhdfs/v1/user/frb/testdir/testdata.txt?op=CREATE&user.name=frb" -H "Content-Type: application/octet-stream" -H "X-Auth-token: 3azH09G1PdaGmgBNODLOtxy52f5a00"
*   Trying 195.235.93.174...
* Connected to storage.cosmos.lab.fiware.org (195.235.93.174) port 14000 (#0)
> PUT /webhdfs/v1/user/frb/testdir/testdata.txt?op=CREATE&user.name=frb HTTP/1.1
> Host: storage.cosmos.lab.fiware.org:14000
> User-Agent: curl/7.43.0
> Accept: */*
> Content-Type: application/octet-stream
> X-Auth-token: 3azH09G1PdaGmgBNODLOtxy52f5a00
> Content-Length: 118
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 307 Temporary Redirect
< X-Powered-By: Express
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Methods: HEAD, POST, GET, OPTIONS, DELETE
< Access-Control-Allow-Headers: origin, content-type, X-Auth-Token, Tenant-ID, Authorization
< server: Apache-Coyote/1.1
< set-cookie: hadoop.auth="u=frb&p=frb&t=simple&e=1460661599535&s=Uzn+QdUaqGpZqXsoyNb9cCUuJtU="; Version=1; Path=/; Expires=Thu, 14-Apr-2016 19:19:59 GMT; HttpOnly
< location: http://dev-fiwr-svc-01.tid.es:14000/webhdfs/v1/user/frb/testdir/testdata.txt?op=CREATE&user.name=frb&data=true
< Content-Type: application/json; charset=utf-8
< content-length: 0
< date: Thu, 14 Apr 2016 09:19:59 GMT
< connection: close
<
* Closing connection 0

上のコマンドはアップロード操作を開始したばかりです。ご覧のように、WebHDFS サービスは次の場所にリダイレクトします :

location: http://dev-fiwr-svc-01.tid.es:14000/webhdfs/v1/user/frb/testdir/testdata.txt?op=CREATE&user.name=frb&data=true

これは、最初の操作では、新しいHDFSファイル hdfs:///user/testdir/testdata.txt がネーム・ノードに作成されただけなので、データ・バイトをデータ・ノードにアップロードする時ではなく、リダイレクト URL のローカル・ファイル testdata.txt を再度 PUT することによって達成されます :

$ curl -v -X PUT -T testdata.txt "http://dev-fiwr-svc-01.tid.es:14000/webhdfs/v1/user/frb/testdir/testdata.txt?op=CREATE&user.name=frb&data=true" -H "Content-Type: application/octet-stream" -H "X-Auth-token: 3azH09G1PdaGmgBNODLOtxy52f5a00"
*   Trying 195.235.93.174...
* Connected to storage.cosmos.lab.fiware.org (195.235.93.174) port 14000 (#0)
> PUT /webhdfs/v1/user/frb/testdir/testdata.txt?op=CREATE&user.name=frb&data=true HTTP/1.1
> Host: storage.cosmos.lab.fiware.org:14000
> User-Agent: curl/7.43.0
> Accept: */*
> Content-Type: application/octet-stream
> X-Auth-token: 3azH09G1PdaGmgBNODLOtxy52f5a00
> Content-Length: 118
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 201 Created
< X-Powered-By: Express
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Methods: HEAD, POST, GET, OPTIONS, DELETE
< Access-Control-Allow-Headers: origin, content-type, X-Auth-Token, Tenant-ID, Authorization
< server: Apache-Coyote/1.1
< set-cookie: hadoop.auth="u=frb&p=frb&t=simple&e=1460661759278&s=w59VlQYJNAoJ1iECqXrWOIXN9hQ="; Version=1; Path=/; Expires=Thu, 14-Apr-2016 19:22:39 GMT; HttpOnly
< Content-Type: application/json; charset=utf-8
< content-length: 0
< date: Thu, 14 Apr 2016 09:22:39 GMT
< connection: close
<
* Closing connection 0

データが正常にアップロードされたことを確認できます :

$ curl -X GET "http://storage.cosmos.lab.fiware.org:14000/webhdfs/v1/user/frb/testdir/testdata.txt?op=OPEN&user.name=frb" -H "X-Auth-token: 3azH09G1PdaGmgBNODLOtxy52f5a00"
luke,tatooine,jedi,25
leia,alderaan,politician,25
solo,corellia,pilot,32
yoda,dagobah,jedi,275
vader,tatooine,sith,50

注 :

  • dev-fiwr-svc-01.tid.es は、storage.cosmos.lab.fiware.org の別名です
  • WebHDFS 仕様では、2ステップのアップロード操作の詳細を得ることができます
  • FIWARE Lab の Cosmos のグローバル・インスタンスは、HttpFS gateway ゲートウェイを実行します。そのため、REST オペレーションは TCP/14000 ポートに対して行われ、公開されていない WebHDFSが使用する TCP/50070 ポートに対しては行われません。リダイレクションの場所が実際のデータノードの代わりに HttpFS サーバー自体を指しているのもその理由です

トップ

データをクエリ

近日公開

トップ

ステップ5 : 最初の MapReduce ジョブを実行

すでに開発されたいくつかの MapReduce の例は、Hadoop の各ディストリビューションで見つけることができます。通常は hadoop-mapreduce-examples.jar という Javaファイル .jar に格納されます。このファイルは、ユーザがFIWARE Lab で所有している HDFS スペースに、特に jars/ フォルダの下にコピーされるため、ユーザ frb はそれをコピーする必要があります :

hdfs:///user/frb/jars/hadoop-mapreduce-examples.jar

したがって、次のようにタイプすることで、Word Count の例を実行することができます.これは Hadoop の "hello world"としても知られています :

$ curl -X POST "http://computing.cosmos.lab.fiware.org:12000/tidoop/v1/user/frb/jobs" -d '{"jar":"jars/hadoop-mapreduce-examples.jar","class_name":"wordcount","args":["hdfs://storage.cosmos.lab.fiware.org/user/frb/testdir","hdfs://storage.cosmos.lab.fiware.org/user/frb/testoutput"]}' -H "Content-Type: application/json" -H "X-Auth-Token: 3azH09G1PdaGmgBNODLOtxy52f5a00"
{"success":"true","job_id": "job_1460639183882_0001"}

ご覧のとおり、別の REST API が使用されています。この場合は、コンピューティング・エンドポイントの Tidoop REST API です。API を使用すると、ジョブのステータスも確認できます。

$ curl -X GET "http://computing.cosmos.lab.fiware.org:12000/tidoop/v1/user/frb/jobs/job_1460639183882_0001" -H "X-Auth-Token: 3azH09G1PdaGmgBNODLOtxy52f5a00"
{"success":"true","job":{"job_id":"job_1460639183882_0001","state":"SUCCEEDED","start_time":"1461060258427","user_id":"frb","stderr":"...","stdout":"..."}}

トップ

ステップ6 : データをダウンロード

最後に、MapReduce の実行結果は、ストレージ・エンドポイントの WebHDFS REST API を使用して出力 HDFS フォルダに表示されます。このHDFSフォルダは自動的に作成されます :

$ curl -X GET "http://storage.cosmos.lab.fiware.org:14000/webhdfs/v1/user/frb/testoutput?op=liststatus&user.name=frb" -H "X-Auth-Token: 3azH09G1PdaGmgBNODLOtxy52f5a00"
{"FileStatuses":{"FileStatus":[{"pathSuffix":"_SUCCESS","type":"FILE","length":0,"owner":"frb","group":"frb","permission":"644","accessTime":1461060272601,"modificationTime":1461060272616,"blockSize":134217728,"replication":3},{"pathSuffix":"part-r-00000","type":"FILE","length":47,"owner":"frb","group":"frb","permission":"644","accessTime":1461060272228,"modificationTime":1461060272409,"blockSize":134217728,"replication":3}]}}
$ curl -X GET "http://storage.cosmos.lab.fiware.org:14000/webhdfs/v1/user/frb/testoutput/part-r-00000?op=open&user.name=frb" -o output.txt -H "X-Auth-Token: 3azH09G1PdaGmgBNODLOtxy52f5a00"
$ cat output.txt
leia,alderaan,politician,25 1
luke,tatooine,jedi,25   1
solo,corellia,pilot,32  1
vader,tatooine,sith,50  1
yoda,dagobah,jedi,275   1

トップ

問題のレポートと連絡先情報

問題を報告し、一般的な疑問を尋ねるのに適したチャネルがいくつかあります。それぞれは質問の性質に依存します :

  • このソフトウェアに関する特定の質問については、stackoverflow.com を使用してください。通常、これらはインストールの問題、エラー、バグに関係します。コードを作成する際の開発に関する質問も同様に歓迎されます。fiware-cygnus タグを使用してください。
  • FIWAREを使用している都市の数、アクセラレータ・プログラムへの参加方法などについては、ask.fiware.org を使用してください。このソフトウェアに関する一般的な質問、たとえば、議論したいユースケースやアーキテクチャなどです。
  • 個人的なメール:

: コントリビュータがリクエストしない限り、コントリビュータに個人的に電子メールを送信しないようにしてください。実際にあなたがプライベートな E メールを送る場合、おそらく stackoverflow.com または ask.fiware.org を使うことトなメールはプライベートなもので、共有することはできません。

トップ