使用 Apache Nemo 运行器
Apache Nemo 运行器可用于使用 Apache Nemo 执行 Beam 管道。Nemo 运行器可以通过各种优化过程使用 Nemo 编译器优化 Beam 管道,并使用 Nemo 运行时以分布式方式执行它们。您还可以部署一个独立的应用程序以用于本地模式或使用 YARN 或 Mesos 等资源管理器运行。
Nemo 运行器在 Apache Nemo 之上执行 Beam 管道,提供
- 批处理和流式管道
- 容错
- 与 YARN 和 Apache Hadoop 生态系统中的其他组件集成
- 支持 Nemo 优化器提供的各种优化
在 Beam 功能矩阵 中记录了 Nemo 运行器的支持功能。
Nemo 运行器先决条件和设置
您可以简单地通过在您的 pom.xml 中添加对 0.1
以上版本的 Nemo 运行器的依赖项来使用 Nemo 运行器,如下所示
<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
shell 脚本,如下所示
## 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 运行器的管道选项
使用 Nemo 运行器执行管道时,您应该考虑以下管道选项
字段 | 描述 | 默认值 |
---|---|---|
运行器 | 要使用的管道运行器。此选项允许您在运行时确定管道运行器。 | 设置为 NemoRunner 以使用 Nemo 运行。 |
maxBundleSize | 捆绑包中元素的最大数量。 | 1000 |
maxBundleTimeMillis | 在最终确定捆绑包之前要等待的最大时间(以毫秒为单位)。 | 1000 |
将更多选项添加到列表中,以完全支持 Nemo 支持的各种选项。
其他信息和注意事项
使用 Run_beam.sh 脚本
将 Nemo 应用程序提交到集群时,通常使用 Nemo 安装中提供的 bin/run_beam.sh
脚本。该脚本还提供了一组更丰富的选项,您可以将其传递以配置 Nemo 的各种操作。有关更多信息,请参阅 Apache Nemo GitHub README。
监控您的作业
您可以使用 Nemo WebUI 监控正在运行的 Nemo 作业。文档目前正在更新,但可以在 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 运行器设置为流式模式。此外,请确保扩展 resources.json
中的资源的 capacity
,例如
{
"type": "Reserved",
"memory_mb": 2048,
"capacity": 50000
}
有关更多信息,请参阅 Apache Nemo GitHub README。
上次更新于 2024/10/31
您找到您要找的所有内容了吗?
一切都有用且清晰吗?您想更改任何内容吗?请告诉我们!