codecamp

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。

有关 资源 的更多信息以及如何添加自己的信息,请参阅 资源文档

在没有联网的情况下运行Samza
Samza Async API和多线程用户指南
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Samza API

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }