今天,我们很高兴地宣布发布 Spring XD 的 1.0 M1 版本 (下载)。Spring XD 是一个统一的、分布式的、可扩展的系统,用于数据摄取、实时分析、批处理和数据导出。该项目的目的是简化大数据应用程序的开发。
从 10,000 英尺的高度来看,大数据应用程序与企业集成和批处理应用程序具有许多共同特征。Spring 通过 Spring Integration 和 Spring Batch 项目提供了超过 6 年的构建集成和批处理应用程序的成熟解决方案。Spring XD 在此基础上构建,并提供了一个轻量级的运行时环境,可以通过简单的 DSL 轻松配置和组装。
在本博文中,我们将介绍 Spring XD 的关键组件,即流、作业、数据导出、分析以及用于声明它们的 DSL,以及运行时架构。更多详细信息可以在
XD 指南 中找到。
流
流定义了如何收集、处理和存储或转发数据。例如,一个流可以收集 syslog 数据,对其进行过滤,并将其存储在 HDFS 中。Spring XD 提供了一个 DSL 来定义流。DSL 允许您使用 UNIX 管道和过滤器语法从简单开始构建线性处理流程,但也允许您使用扩展语法描述更复杂的流程。
源和接收器
一个简单的线性流由以下序列组成:输入源、(可选)处理步骤和输出接收器。例如,考虑从 HTTP 源收集数据并写入文件接收器的情况。描述此流的 DSL 为
http | file
您可以通过向默认端口为 8080 的 XD Admin Server 发出 HTTP 请求来告诉 Spring XD 创建一个流。在 M2 版本中,我们将提供一个交互式 shell 来与 XD 通信,但对于 M1,最简单的方法是使用“curl”与 XD 交互。
curl -d "http | file" https://127.0.0.1:8080/streams/httptest
流的名称为 httptest
,默认的 HTTP 监听端口为 9000
,默认的文件位置为 /tmp/xd/output/${streamname}
。
如果您使用 curl 在端口 9000 上发布一些数据
curl -d "hello world" https://127.0.0.1:9000
您将在文件 /tmp/xd/output/httptest
中看到字符串 hello world。
要更改默认值,您可以传递选项参数
http --port=9090 | file --dir=/var/streams --name=data.txt
M1 中 支持的源 包括文件、时间、HTTP、尾随、Twitter 搜索、Gemfire(连续查询)、Gemfire(缓存事件)、Syslog 和 TCP。支持的接收器 包括日志、文件、HDFS 等。