Samza REST入门
本教程依赖于 hello-samza 来启动本地群集上的一些示例作业,然后您将通过 JobsResource 访问。完成本教程后,您将在本地构建并部署 Samza REST 资源,更改了 JobsResource 的配置,并执行了几个基本的卷曲请求,以验证该服务的工作原理。
让我们开始吧。
在本地运行 你好 Samza 的工作
按照 hello-samza 教程设置本地网格并运行维基百科工作。跳过 关机步骤,因为您需要运行网格才能查询作业的 REST 服务。kafka-console-consumer.sh 如果您不想验证作业的输出,则可以选择跳过所有命令。
注意你克隆 hello-samza 的路径。您将需要配置 JobsResource 的安装路径。
构建 Samza REST 服务包
Samza REST 的源代码位于 Samza 存储库的 samza-rest 模块中。要构建它,请从项目的根目录执行以下 gradle 任务。
./gradlew samza-rest:clean releaseRestServiceTar
在本地部署 Samza REST 服务
要部署服务,您只需将 tarball 解压缩到所需的位置即可。在这里,我们将在本地主机上部署 tarball
SAMZA_ROOT/samza-rest/build/distributions/deploy/samza-rest
这里 SAMZA_ROO T是通向你的Samza项目的根。
运行以下命令:
cd samza-rest/build/distributions/
mkdir -p deploy/samza-rest
tar -xvf ./samza-rest-0.13.0.tgz -C deploy/samza-rest
配置安装路径
JobsResource 有一个必需的配置job.installations.path,它指定作业的安装路径。编辑配置文件:
deploy/samza-rest/config/samza-rest.properties
将job.installations.path设置为:
job.installations.path=/hello-samza-ROOT/deploy
hello-samza-ROOT 上面提到你的 hello-samza 克隆的路径在哪里。这告诉 JobsResource 抓取此位置以查找所有已安装的作业。
启动Samza REST服务
要部署服务,请从提取的目录中运行 run-samza-rest-service.sh 脚本。
cd deploy/samza-rest
./bin/run-samza-rest-service.sh \
--config-factory=org.apache.samza.config.factories.PropertiesConfigFactory \
--config-path=file://$PWD/config/samza-rest.properties
您可以向 run-samza-rest-service.sh 脚本提供两个参数。一个是配置位置,另一个可选参数是用于读取配置文件的工厂类。SamzaRestService 使用您的 ConfigFactory 从配置路径获取一个 Config 对象。在“ 作业运行器”页面中更详细地介绍了 ConfigFactory 。run -samza-rest-service.sh 脚本将阻塞,直到 SamzaRestService 终止。
注意:使用默认设置,JobsResource 将期望可以通过 ApplicationCLI 访问具有本地资源管理器的 YARN 群集。没有 YARN,JobsResource 将不会响应任何请求。所以重要的是在下一步之前穿过 hello-samza 演示。
卷曲默认 REST 服务
卷曲 JobsResource 以获取所有安装的作业
curl localhost:9139/v1/jobs
[{"jobName":"wikipedia-stats","jobId":"1","status":"STARTED","statusDetail":RUNNING},{"jobName":"wikipedia-parser","jobId":"1","status":"STARTED","statusDetail":RUNNING},{"jobName":"wikipedia-feed","jobId":"1","status":"STARTED","statusDetail":RUNNING}
现在卷曲 JobsResource 以停止其中一个作业
curl -X PUT localhost:9139/v1/jobs/wikipedia-feed/1?status=stopped
{"jobId":"1","jobName":"wikipedia-feed","status":"STOPPED","statusDetail":"FINISHED"}
恭喜,您已成功部署Samza REST服务,并使用JobsResource列出作业并停止工作!
请参阅 JobsResource文档 了解其余的API。
更多建议: