ストリーム処理基盤 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 ネイティブの基盤で、
- 高いスケーラビリティとパフォーマンス
- フォールトトレランスと状態管理
- Hadoop YARN & HDFS
- シンプルな API
などが特徴(らしい)。 Operator と呼ばれる処理単位を作って DAG (有向非巡回グラフ) を組んでストリーム処理アプリケーションを作成する。各 Operator は状態を持つことができる。データフローやコネクティビティ、フォールトトレランスは Apex 側が面倒みてくれるので、開発者は各 Operator が入力タプルをどう扱うか、出力をいつ(そしてどのポートに)送るかだけわかっていれば良い。
Apex Malhar
apache/apex-malhar: Mirror of Apache Apex malhar
Operator を作成するためのライブラリ。 JSON・CSV 操作、 Kafka 連携、 S3への出力などができる(らしい)。
必要なもの
開発に必要なものは下記の通り。
- git
- Java SDK
- Apache Maven
- IDE (Optional)
詳細は: 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
が参考になる。