×

Samza 入门

Samza 你好Samza 下载Samza 功能预览

Samza 详细介绍

Samza 背景Samza 概念Samza 结构

Samza 与其他流处理项目比较

Samza 比较介绍Samza MUPD8Samza 与 StormSamza 与 Spark Streaming

Samza API

Samza API概述

Samza 核心

Samza ContainerSamza 流Samza 序列化Samza 定期检查Samza 状态管理Samza 窗口功能Samza 协调器流Samza 事件循环Samza 指标Samza JMX

Samza 作业部署

Samza JobRunnerSamza 配置Samza 打包Samza YARN工作Samza 记录Samza 再处理Samza Web UI和REST APISamza 分离框架和作业部署

Samza YARN

Samza Application MasterSamza YARN执行隔离Samza 主机关联和 YARNSamza YARN资源本地化Samza YARN安全Samza 写入HDFSSamza 从HDFS文件读取

Samza 相关操作

Samza 安全Samza Kafka自动创建主题

Samza REST服务

Samza REST服务概观Samza REST服务资源Samza REST服务监视器

Samza 附录

附录一 工作资源附录二 任务资源附录三 远程调试附录四 从HDFS部署Samza工作附录五 部署Samza Job到CDH附录六 在多节点YARN中运行附录七 在没有联网的情况下运行附录八 Samza REST入门附录九 Async API和多线程指南附录十 代码附录十一 Samza配置参考

用Samza远程调试


让我们使用 Eclipse 将一个远程调试器附加到 Samza 容器。如果您是 IntelliJ 用户,则必须填写空白,但该过程应该非常相似。本教程假设您已经运行了 Hello Samza 教程。

获取代码

首先检查Samza,所以我们可以访问源。

git clone http://git-wip-us.apache.org/repos/asf/samza.git

接下来,抓住你好萨姆扎。

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

设置环境

现在,我们来设置 Eclipse 项目文件。

cd samza
./gradlew eclipse

我们还将 Samza 发布到 Maven 的本地存储库,所以 hello-samza 可以访问它需要的 JAR。

./gradlew -PscalaVersion=2.10 clean publishToMavenLocal

接下来,打开 Eclipse,并将 Samza 源代码导入到您的工作区:“文件”>“导入”>“现有项目进入工作区”>“浏览”。选择 'samza' 文件夹,然后点击 “完成”。

启用远程调试

现在,回到hello-samza项目,并编辑./src/main/config/wikipedia-feed.properties以添加以下行:

task.opts=-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=y

该 task.opts 配置参数是在运行时为您 Samza 容器覆盖的 Java 参数的方式。在这个例子中,我们正在设置 agentlib 参数,以便在本地主机端口 9009 上启用远程调试。在更现实的环境中,您还可以设置Java堆设置(-Xmx,-Xms等)以及垃圾回收记录设置。

注意:如果您在同一台机器上运行多个 Samza 容器,则可能会出现端口冲突。您必须配置 task.opts 为不同的 Samza 作业分配不同的端口。如果 Samza 作业有多个容器(例如,如果您使用 YARN with job.container.count = 2),那么这些容器必须在不同的机器上运行。

启动网格

现在 Samza 的作业已经被设置为在 Samza 容器启动时启用远程调试,让我们启动 ZooKeeper,Kafka 和 YARN。

bin/grid

如果您收到 JAVA_HOME 未设置的投诉,则需要进行设置。这可以通过运行在 OSX 上完成:

export JAVA_HOME=$(/usr/libexec/java_home)

一旦网格启动,您可以启动维基百科的 Samza 工作。

mvn clean package
mkdir -p deploy/samza
tar -xvf ./target/hello-samza-0.12.0-dist.tar.gz -C deploy/samza
deploy/samza/bin/run-job.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file://$PWD/deploy/samza/config/wikipedia-feed.properties

当维基百科自动作业启动时,将创建一个单个 Samza 容器来处理所有传入的消息。这是我们要从远程调试器连接到的容器。

连接远程调试器

切换回 Eclipse,并在 TaskInstance.process 中设置一个断点,方法是单击 TaskInstance.process 中的一行,然后单击 “Run”>“Toggle Breakpoint”。蓝色圆圈应该出现在该行的左侧。这将让您在收到的邮件到达时看到。

设置远程调试会话:“运行”>“调试配置...”>右键单击“远程Java应用程序”>“新建”。将名称设为 'wikipedia-feed-debug'。将端口设置为9009(与task.opts配置中的端口匹配)。点击 “Source”>“Add ...”>“Java Project”。选择您导入的所有 Samza 项目(即 samza-api,samza-core 等)。如果您想在自己的 Stream 任务中设置断点,还可以添加包含 StreamTask 实现的项目。点击“调试”。

过了一会儿,Eclipse 应该连接到维基百科的工作,并要求你切换到调试模式。一旦进行调试,您将看到它在 TaskInstance.process 方法中断开。从这里,您可以逐步执行代码,检查变量值等。

恭喜,您有一个远程调试连接到您的 StreamTask!


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)