codecamp

Samza 你好

Samza 你好项目是一个示例项目,旨在帮助你运行你的第一个 Samza 工作。

获取代码

查看 hello-samza 项目:

git clone https://git.apache.org/samza-hello-samza.git hello-samza
cd hello-samza

该项目包含运行您的第一个Samza工作所需的一切。

启动一个网格

Samza 网格通常包括三种不同的系统:YARNKafkaZooKeeper。hello-samza 项目附带一个名为 “grid” 的脚本来帮助您设置这些系统。

开始运行:

bin/grid bootstrap

该命令将下载,安装和启动 ZooKeeper,Kafka 和 YARN。它还将检查最新版本的 Samza 并构建它。所有包文件将被放在 hello-samza 的根文件夹内的一个名为 “deploy” 的子目录中。

如果您抱怨 JAVA_HOME 未设置,那么您需要将其设置为系统上安装 Java 的路径。

一旦 grid 命令完成,您可以通过转到 http:// localhost:8088 来验证YARN是否已启动并运行。这就是 YARN UI。

建立Samza工作包

在您可以运行 Samza 工作之前,您需要为其构建一个包,这个包是 YARN 用来在网格上部署你的作业的。

注意:如果您正在从 hello-samza 项目的最新分支建立,请确保您从本地 Samza 项目中运行以下步骤:

./gradlew publishToMavenLocal

然后,您可以在 hello-samza 项目中继续执行以下命令:

mvn clean package
mkdir -p deploy/samza
tar -xvf ./target/hello-samza-0.13.0-dist.tar.gz -C deploy/samza

运行Samza工作

构建 Samza 软件包后,可以使用 run-app.sh 脚本在网格上启动作业。

deploy/samza/bin/run-app.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file://$PWD/deploy/samza/config/wikipedia-feed.properties

这项工作将消耗维基百科的实时编辑资料,并将其制作成名为“维基百科”的 Kafka 话题。给工作一分钟启动,然后跟着 Kafka 话题:

主题:

deploy/kafka/bin/kafka-console-consumer.sh  --zookeeper localhost:2181 --topic wikipedia-raw

很整洁,对不对?现在,再次查看 YARN UI(http:// localhost:8088)。这一次,你会看到你的Samza工作正在运行!

如果您看不到 Kafka 消费者的任何输出,您可能会遇到连接问题。

生成维基百科统计

我们来计算基于维基百科原始主题的消息的一些统计数据。

开始两个工作:

deploy/samza/bin/run-app.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file://$PWD/deploy/samza/config/wikipedia-parser.properties
deploy/samza/bin/run-app.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file://$PWD/deploy/samza/config/wikipedia-stats.properties

第一个工作(维基百科解析器)解析wikipedia-raw中的消息,并提取关于编辑大小,进行更改的信息等信息。您可以通过以下方式查看其输出:

deploy/kafka/bin/kafka-console-consumer.sh  --zookeeper localhost:2181 --topic wikipedia-edits

最后一个工作(维基百科统计)从维基百科编辑主题中读取消息,并计算在该窗口中进行的所有编辑的每10秒计数。它将这些计数输出到维基百科统计信息主题。

deploy/kafka/bin/kafka-console-consumer.sh  --zookeeper localhost:2181 --topic wikipedia-stats

stats 主题中的消息如下所示:

{"is-talk":2,"bytes-added":5276,"edits":13,"unique-titles":13}
{"is-bot-edit":1,"is-talk":3,"bytes-added":4211,"edits":30,"unique-titles":30,"is-unpatrolled":1,"is-new":2,"is-minor":7}
{"bytes-added":3180,"edits":19,"unique-titles":19,"is-unpatrolled":1,"is-new":1,"is-minor":3}
{"bytes-added":2218,"edits":18,"unique-titles":18,"is-unpatrolled":2,"is-new":2,"is-minor":3}

如果您再次查看 YARN UI,您将看到现在列出了所有三个作业。

关掉

要关闭其中一个作业,请使用与额外的 '-operation = kill' 参数相同的脚本

deploy/samza/bin/run-app.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file://$PWD/deploy/samza/config/wikipedia-feed.properties --operation=kill

完成后,您可以使用相同的网格脚本清理所有内容。

bin/grid stop all

恭喜!您现在已经设置了一个包含 YARN,Kafka 和 ZooKeeper 的本地网格,并在其上运行 Samza 作业。接下来,查看 后台 和 API概述 页面。

Samza 下载  >>

Samza 下载
温馨提示
下载编程狮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; }