- 内容提要
- 序
- 前言
- 第一部分 背景知识
- 第 1 章 Spring Data 项目
- 第 2 章 Repository:便利的数据访问层
- 第 3 章 使用 Querydsl 实现类型安全的查询
- 第二部分 关系型数据库
- 第 4 章 JPA Repository
- 第 5 章 借助 Querydsl SQL 实现类型安全的 JDBC 编程
- 第三部分 NoSQL
- 第 6 章 MongoDB: 文档存储
- 第 7 章 Neo4j:图数据库
- 第 8 章 Redis:键/值存储
- 第四部分 快速应用开发
- 第 9 章 使用 Spring Roo 实现持久层
- 第 10 章 REST Repository 导出器
- 第五部分 大数据
- 第 11 章 Spring for Apache Hadoop
- 第 12 章 使用 Hadoop 分析数据
- 第 13 章 使用 Spring Batch 和 Spring Integration 创建大数据管道
- 第六部分 数据网格
- 第 14 章 分布式数据网格:GemFire
- 关于封面
13.4 收集并加载数据到 Splunk
Splunk 可收集、索引、搜索并监控机器所产生的大数据,也可以处理实时数据流和历史数据。Splunk 的第一个版本在 2005 年发布,它的目的是分析数据中心内部所产生的数据,以帮助解决基础设施运维所带来的问题。因此,它的核心功能之一是将个机器产生的数据移到中央处理库,并且内置就能识别常用日志文件格式以及类似 syslog 的基础软件。Splunk 的基础架构包含一个用于处理并且索引数据流的 splunk 守护进程,以及可以允许用户搜索和创建报告的 Web 应用程序。Splunk 可在数据需求量增加时,通过增加独立的索引、搜索、转发实例来进行横向扩展。更多关于 Splunk 安装、运行以及开发的细节,可以参考产品网站( http://www.splunk.com/ )与《 Exploring Splunk 》( http://www.splunk.com/goto/book )一书。
虽然 Splunk 内置了收集日志文件和 syslog 数据的进程,但我们仍然需要从其他各种不同来源收集、转换以及加载数据到 Splunk,从而减少分析数据时使用正则表达式的需求。Splunk 也需要转换和提取数据到其他数据库和文件系统中。为了满足这些需求,创建了对应的 Spring Integration 入站和出站通道适配器,而且 Spring Batch 的支持也在规划中。在撰写本文时,支持 Splunk 的 Spring Integration 通道适配器位于 GitHub 资源库( https://github.com/SpringSource/spring-integration-extensions )中,它可以供 Spring Integration 扩展使用。适配器支持所有存取 Splunk 数据的方法。入站适配器支持阻塞和无阻塞的搜索、保存、实时搜索和导出模式。出站适配器支持将数据通过 RESTful API、流或 TCP 放入到 Splunk 中。Splunk 的所有功能都通过完整的 REST API 暴露出来,同时还有多种语言的 SDK,它们使得借助 REST API 进行开发尽可能简单。Spring Integration 适配器使用的 Splunk Java SDK,也可以使用 Github 获取。
为了介绍以 Spring Integration 的方式来使用 Splunk,我们将创建一个应用程序,将来自 Twitter 的搜索结果存储到 Splunk 中。这个应用程序的配置如示例 13-50 所示。
示例 13-50 将 Twitter 搜索结果存储到 Splunk 应用程序的配置
Spring Social 项目( http://www.springsource.org/spring-social )提供了以 OAuth 方式连接到 Twitter 的基础功能,也提供了与 Facebook、LinkedIn、TripIt、Foursquare 等其他数十个社交类软件即服务(Software-as-a-Service)提供商交互的支持。入站通道适配器使用 Spring Social 的 TwitterTemplate 类与 Twitter 进行交互。
为了访问 Twitter 提供的完整功能,需要在 Twitter 开发者网站(Twitter Developer Website)上创建一个新的应用程序。为了连接到 Splunk 服务器,需要使用 XML 命名空间的<int-splunk:server/>标签,以提供主机/端口以及用户验证信息(使用 Spring 占位符来外部化参数)。
Twitter 的入站通道适配器支持以时间轴更新(Timeline Updates)、直接消息(Direct Messages)、提及消息(Mention Messages)及搜索结果(Search Results)来接收 twitter 数据。请注意不久之后它将支持通过 Twitter garden hose 获取消费数据,它支持随机选择数据流,此数据流大小被限制为完整数据流的一个较小的百分比。在示例 13-50 中,查询将查找出带有美国 2012 总统大选标签(hashbag)的数据,并且还有一个标签用来展示贾斯汀·比伯(Justin Bieber)赢得各种奖项的投票情况。处理链会使用过滤器将 Twitter 负载对象转换成一个经过优化的数据格式,以帮助 Splunk 索引和搜索 Twitter。在示例应用中,过滤器被配置成一个简单的数据传递通道(pass-through)。出站通道适配器使用属性 inject = "SUBMIT"来指定使用 REST API 写入 Splunk 资源。数据会被写入到名为 twitter 的 Splunk 资源并且使用默认索引。也可以设定索引属性来指定数据写入到非默认索引。
遵循目录 splunk/tweets 中的说明,执行示例并查看谁是最受欢迎的候选人(或虚拟候选人)。接着可以通过 Splunk Web 应用建立搜索,例如 source = "twitter" | regex tags = "^voteobama$|^votebieber$|^voteromney$" | top tags,来获得显示这些标签相对热门程度的图表。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论