ストリーム処理基盤 Apache Apex で Hello World
ストリーム処理基盤のひとつである Apache Apex の開発環境を構築します。
参考
Apache Apex とは
Apex is a Hadoop YARN native platform that unifies stream and batch processing.
Apache Apex はストリーム処理とバッチ処理を統合する Hadoop YARN ネイティブの基盤で、
などが特徴(らしい)。 Operator と呼ばれる処理単位を作って DAG (有向非巡回グラフ) を組んでストリーム処理アプリケーションを作成する。各 Operator は状態を持つことができる。データフローやコネクティビティ、フォールトトレランスは Apex 側が面倒みてくれるので、開発者は各 Operator が入力タプルをどう扱うか、出力をいつ(そしてどのポートに)送るかだけわかっていれば良い。
Apex Malhar
apache/apex-malhar: Mirror of Apache Apex malhar
Operator を作成するためのライブラリ。 JSON・CSV 操作、 Kafka 連携、 S3への出力などができる(らしい)。
必要なもの
開発に必要なものは下記の通り。
詳細は: Development Setup - Apache Apex Documentation
Apache Maven のインストール
Maven はなかったので Homebrew で雑にインストールした。
$ brew search maven maven maven-completion maven-shell maven@3.1 maven@3.2 maven@3.3 $ brew install maven ... 🍺 /usr/local/Cellar/maven/3.5.0: 106 files, 9.8MB, built in 17 seconds
バージョン
Java
$ java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) $ javac -version javac 1.8.0_102
git
$ git version git version 2.10.1 (Apple Git-78)
Maven
$ mvn --version Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T04:39:06+09:00) Maven home: /usr/local/Cellar/maven/3.5.0/libexec Java version: 1.8.0_102, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre Default locale: ja_JP, platform encoding: UTF-8 OS name: "mac os x", version: "10.11.6", arch: "x86_64", family: "mac"
プロジェクトの作成
下記のコマンドでプロジェクトが作成される。
$ mvn archetype:generate \ -DarchetypeGroupId=org.apache.apex \ -DarchetypeArtifactId=apex-app-archetype -DarchetypeVersion=3.4.0 \ -DgroupId=com.example -Dpackage=com.example.myapexapp -DartifactId=myapexapp \ -Dversion=1.0-SNAPSHOT
しばらく待てば完了するので、ビルド。
$ cd myapexapp $ mvn clean package -DskipTests
Unit Test
mvn test
すればOK。おわり。
$ mvn test ... hello world: 0.19778332097175633 hello world: 0.3872563781951901 hello world: 0.6822472419746941 hello world: 0.705621338023663 hello world: 0.11655955618022251 hello world: 0.7625487759662669 hello world: 0.029114499662175386 ...
チュートリアル
Hello World の次は公式ドキュメントを読むと良い。
サンプルコード
apache/apex-malhar
リポジトリの examples
や DataTorrent/examples
が参考になる。