JubaQL クイックスタート¶
JubaQL 要件¶
JubaQLを動作させるために必要なソフトウェアは以下の通りです。
ソフトウェア | バージョン | 必須 | 備考 |
---|---|---|---|
JDK | 7 | ||
Spark | 1.2.1+ [1] | ✔ [2] | |
Jubatus | 0.8.0 | ✔ [3] | |
Hadoop YARN | JubaQLをProductionモードで動作させる場合のみ必要。 | ||
Jubatus on YARN | 1.0 | JubaQLをProductionモードで動作させる場合のみ必要。 |
[1] | Spark 1.1.x 以前, 1.2.0, 1.3.x 以降では動作しません。 |
[2] | JubaQL Gatewayを実行するノードにSparkをインストールする必要があります。 |
[3] | JubaQLをDevelopmentモードで動作させる場合、JubaQL Gatewayを実行するノードにJubatusをインストールする必要があります。 JubaQLをProductionモードで動作させる場合、すべてのYARNノード上にJubatusをインストールする必要があります。 |
JubaQLおよびJubatus on YARNをビルドするためには、 sbt コマンドのインストールが必要です。
Mavenリポジトリの利用方法¶
Jubatus on YARNをScalaアプリケーションから利用する場合は、Mavenリポジトリを利用することができます。 build.sbtに以下の情報を追記してください。
// Jubatus Maven Repository
resolvers += "Jubatus" at "http://download.jubat.us/maven"
// Dependencies
libraryDependencies ++= Seq(
"us.jubat" %% "jubatus-on-yarn-client" % "1.0"
)
Developmentモード¶
はじめに、簡易な設定のDevelopmentモードのセットアップについて紹介します。 このモードではHadoopクラスタを用意することなくJubaQLを動作させることができます。
セットアップ¶
Hadoopが利用可能な Apache Spark 1.2.2 をダウンロードし、環境変数を設定します。
wget http://d3kbcqa49mib13.cloudfront.net/spark-1.2.2-bin-hadoop2.4.tgz
tar -xzf spark-1.2.2-bin-hadoop2.4.tgz && export SPARK_DIST="$(pwd)/spark-1.2.2-bin-hadoop2.4/"
JubaQLClientをビルドします。
git clone https://github.com/jubatus/jubaql-client.git
cd jubaql-client && sbt start-script && cd ..
JubaQLServerをビルドします。
git clone https://github.com/jubatus/jubaql-server.git
cd jubaql-server/processor && sbt assembly && cd ../..
cd jubaql-server/gateway && sbt assembly && cd ../..
動作確認¶
JubaQLでDevelopモードの動作確認をします。 動作の確認には jubaql-server/data/shogun_data.jsonのデータを使用します。
JubaQL Serverを起動します。
cd jubaql-server && \
java -Dspark.distribution="$SPARK_DIST" \
-Djubaql.processor.fatjar=processor/target/scala-2.10/jubaql-processor-assembly-1.3.0.jar \
-jar gateway/target/scala-2.10/jubaql-gateway-assembly-1.3.0.jar \
-i 127.0.0.1
JubaQL Clientを起動します。
./jubaql-client/target/start
次にJubaQL Clientから以下のクエリを実行します。
CREATE CLASSIFIER MODEL test (label: label) AS name WITH unigram CONFIG '{"method": "AROW", "parameter": {"regularization_weight" : 1.0}}'
CREATE DATASOURCE shogun (label string, name string) FROM (STORAGE: "file://jubaql-server/data/shogun_data.json")
UPDATE MODEL test USING train FROM shogun
START PROCESSING shogun
ANALYZE '{"name": "慶喜"}' BY MODEL test USING classify
SHUTDOWN
Productionモード(GatewayとClientが同一ノード)¶
YARN、HDFSを利用するProductionモードのセットアップを説明します。 はじめにJubaQL GatewayとJubaQL Clientが同一ノード上で動作する場合のセットアップについて説明します。
セットアップ¶
ここでは上記開発モードのインストールに加え以下の条件を満たしている必要があります。
- YARN, HDFSと共にHadoopクラスタがセットアップされていること
- Hadoopクラスタの全ノードにJubatusがインストールされていること
- Jubatus-on-yarn がインストールされていること
- Jubatus-on-yarnのドキュメント 参照
- HDFS上に/jubatus-on-yarn/application-master/jubaconfig/ が存在し、JubaQLProcessorの実行ユーザに書き込み権限があることを確認
動作確認¶
動作確認用の訓練データshogun_data.jsonをHDFSにコピーします
hdfs dfs -put ./jubaql-server/data/shogun_data.json /jubatus-on-yarn/sample/shogun_data.json
Hadoopクラスタの情報を持つcore-site.xml, yarn-site.xml, hdfs-site.xmlをJubaQL Gatewayが動作するマシンの適当なディレクトリにコピーし、環境変数HADOOP_CONF_DIRをそのディレクトリに設定します。
cp core-site.xml yarn-site.xml hdfs-site.xml /etc/hadoop/conf
export HADOOP_CONF_DIR="/etc/hadoop/conf"
JubaQL Gatewayが動作するマシンのIPアドレスを取得します。
Linuxでは以下のようなコマンドで取得できます
export MY_IP=$(ip route get 12.34.56.78 | grep -Po 'src \K.+')
得られたIPアドレスにHadoopクラスタからアクセスできることを確認してください。 アクセスできない場合にはネットワークの設定を確認してください。
Zookeeperが動作するノードを host:port
の形式で環境変数に設定します。
export MY_ZOOKEEPER=zk1:2181,zk2:2181
Spark の checkpoint のための HDFS 上のディレクトリを指定します
export CHECKPOINT=hdfs:///tmp/spark
JubaQL Gatewayを起動します。
cd jubaql-server && \
java -Drun.mode=production \
-Djubaql.checkpointdir=$CHECKPOINT \
-Djubaql.zookeeper=$MY_ZOOKEEPER \
-Dspark.distribution="$SPARK_DIST" \
-Djubaql.processor.fatjar=processor/target/scala-2.10/jubaql-processor-assembly-1.3.0.jar \
-jar gateway/target/scala-2.10/jubaql-gateway-assembly-1.3.0.jar \
-i $MY_IP``
新たにシェルを立ち上げ、JubaQL Clientを起動します
./jubaql-client/target/start
jubaql>
というプロンプトが現れたら以下のようにクエリを実行します。
CREATE CLASSIFIER MODEL test (label: label) AS name WITH unigram CONFIG '{"method": "AROW", "parameter": {"regularization_weight" : 1.0}}'
CREATE DATASOURCE shogun (label string, name string) FROM (STORAGE: "hdfs:///jubatus-on-yarn/sample/shogun_data.json")
UPDATE MODEL test USING train FROM shogun
START PROCESSING shogun
ANALYZE '{"name": "慶喜"}' BY MODEL test USING classify
SHUTDOWN
Productionモード(GatewayとClientが異なるノード)¶
次に、JubaQL GatewayがJubaQL Clientとは異なるノードで動作する場合について説明します。 このモードでのセットアップ手順は上記同一ノード上で動作する場合のセットアップと概ね同様です。 注意すべき点は以下の2点です。
- jarファイルやHadoopの設定ファイルを配置するサーバ
- これらはJubaQL Gatewayが動作するマシン上に配置する必要があります。
- JubaQL Clientの起動方法
- JubaQL Clientの起動時に
-h hostname
でJubaQL Gatewayが動作するホストを指定しなければなりません。
- JubaQL Clientの起動時に