Apache Nemo Runnerの使用
Apache Nemo Runnerは、Apache Nemoを使用してBeamパイプラインを実行するために使用できます。 Nemo Runnerは、Nemoコンパイラを使用してさまざまな最適化パスを介してBeamパイプラインを最適化し、Nemoランタイムを使用して分散方式で実行できます。 また、ローカルモード用の自己完結型アプリケーションをデプロイしたり、YARNやMesosなどのリソースマネージャーを使用して実行したりすることもできます。
Nemo Runnerは、Apache Nemo上でBeamパイプラインを実行し、以下を提供します。
- バッチおよびストリーミングパイプライン
- フォールトトレランス
- YARNおよびApache Hadoopエコシステムの他のコンポーネントとの統合
- Nemoオプティマイザによって提供されるさまざまな最適化のサポート
Beam機能マトリックスには、Nemo Runnerでサポートされている機能が記載されています。
Nemo Runnerの前提条件とセットアップ
Nemo Runnerを使用するには、pom.xmlに `0.1` より新しいバージョンのNemo Runnerへの依存関係を追加するだけです。以下に示すように。
<dependency>
<groupId>org.apache.nemo</groupId>
<artifactId>nemo-compiler-frontend-beam</artifactId>
<version>${nemo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
アプリケーションへのNemoのデプロイ
自己完結型アプリケーションの方が管理しやすく、Nemoが提供する機能をフルに活用できます。 上記の依存関係を追加し、Maven Shadeプラグインを使用してアプリケーションJARをシェーディングするだけです。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>shaded</shadedClassifierName>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
`mvn package`を実行した後、`ls target`を実行すると、次の出力が表示されます(この例では、artifactIdは `beam-examples`、バージョンは `1.0.0` です)。
beam-examples-1.0.0-shaded.jar
このシェーディングされたjarを使用すると、`bin/run_beam.sh`シェルスクリプトを次のように使用できます。
## MapReduce example
./bin/run_beam.sh \
-job_id mr_default \
-user_main org.apache.nemo.examples.beam.WordCount \
-user_args "`pwd`/examples/resources/test_input_wordcount `pwd`/examples/resources/test_output_wordcount"
YARNを使用してNemoを使用するには、Nemoの `-deploy_mode` フラグを `yarn` に設定します。
詳細な手順は、Apache Nemo GitHubのREADMEに記載されています。
Nemo Runnerのパイプラインオプション
Nemo Runnerでパイプラインを実行する場合、次のパイプラインオプションを検討する必要があります。
フィールド | 説明 | デフォルト値 |
---|---|---|
runner | 使用するパイプラインランナー。 このオプションを使用すると、実行時にパイプラインランナーを決定できます。 | Nemoを使用して実行するには、`NemoRunner`に設定します。 |
maxBundleSize | バンドル内の要素の最大数。 | 1000 |
maxBundleTimeMillis | バンドルをファイナライズするまでの最大待機時間(ミリ秒)。 | 1000 |
Nemoがサポートするさまざまなオプションを完全にサポートするために、リストにさらにオプションが追加される予定です。
追加情報と注意事項
Run_beam.shスクリプトの使用
Nemoアプリケーションをクラスタに送信する場合、Nemoインストール内に提供されている `bin/run_beam.sh` スクリプトを使用するのが一般的です。 このスクリプトは、Nemoのさまざまなアクションを設定するために渡すことができる、より豊富なオプションセットも提供します。 詳細については、Apache Nemo GitHub READMEを参照してください。
ジョブの監視
実行中のNemoジョブは、Nemo WebUIを使用して監視できます。 ドキュメントは現在更新されていますが、詳細については、Apache Nemo GitHub READMEを参照してください。
ストリーミング実行
オプション `-scheduler_impl_class_name org.apache.nemo.runtime.master.scheduler.StreamingScheduler` と `-optimization_policy org.apache.nemo.compiler.optimizer.policy.StreamingPolicy` を追加して、Nemo Runnerをストリーミングモードに設定します。 また、`resources.json` でリソースの `capacity` を拡張してください。例:
{
"type": "Reserved",
"memory_mb": 2048,
"capacity": 50000
}
詳細については、Apache Nemo GitHub READMEを参照してください。
最終更新日:2024/10/31
お探しのものはすべて見つかりましたか?
すべて役に立ち、明確でしたか? 変更したいことはありますか? ご意見をお聞かせください!