Apache Hadoop hadoop-openstack moduleのテストを回す


概要

記事: Apache Hadoopのユニットテストを回すの補足です。試行錯誤の結果ついにhadoop-openstack moduleのテストを回すことに成功したのでメモを共有します。

おおまかな手順

  1. Rackspace Cloudと契約する
  2. auth-keys.xmlを記述する
  3. テストを実行する

以下、各項目の詳細について説明します。

Rackspace Cloudと契約する

自分でOpenStack Swiftを構築してもよいのですが、大変なのでRackspace Cloudを契約しましょう。開発者におすすめされたので、多分これが一番早いと思います。

FWIW, the test setup costs ~20c/month, I have accounts with rackspace US and UK. It's not hard to set up. Openstack you can deploy locally; the external ones just give you different problems (auth, throttling,,,)

契約にはクレジットカードと電話番号が必要です。登録後すぐ使えるようになるわけではなく、電話をかけてアクティベーションする必要があることに注意です。もちろん英語です。今どきSMSじゃないのはつらいよ。

auth-keys.xmlを記述する

公式ドキュメントを参考にauth-keys.xmlを記述します。このファイルが配置されていないと、テストが実行されません。

設定ファイルは以下のような感じになるかと思います。

hadoop-tools/hadoop-openstack/src/test/resources/auth-keys.xml
<configuration>
  <property>
    <name>test.fs.swift.name</name>
    <value>swift://<YOUR CONTAINERNAME>.rackspace/</value>
  </property>
  <property>
    <name>fs.swift.service.rackspace.auth.url</name>
    <value>https://auth.api.rackspacecloud.com/v2.0/tokens</value>
  </property>
  <property>
    <name>fs.swift.service.rackspace.username</name>
    <value>USE YOUR ACCOUNT NAME</value>
  </property>
  <property>
    <name>fs.swift.service.rackspace.region</name>
    <value>HKG</value>
  </property>
  <property>
    <name>fs.swift.service.rackspace.public</name>
    <value>true</value>
  </property>
  <property>
    <name>fs.swift.service.rackspace.apikey</name>
    <value>USE YOUR OWN APIKEY</value>
  </property>
</configuration>

fs.swift.service.rackspace.publicの設定に気づくのに時間がかかった。デフォルトだとfalseで、private URLを利用する。Rackspace Cloud から テストする場合はそのままでOKだが、通常は手元の環境からテストを実行するのでtrueに設定してpublic URLを使う必要がある。また、apikeyはRackspace Cloudにサインインして確認してください。

テストを実行する

cd hadoop-tools/hadoop-openstack
mvn test

テストに利用するコンテナは存在しないか、空である必要があります。