Storm中数据的输入输出

41 篇文章 0 订阅
27 篇文章 0 订阅

转载请注明出处:http://blog.csdn.net/jmppok/article/details/17284817

概述

Storm是一个实时流处理系统,其中运行的是Topology。初学Storm的小伙伴可能会有这样的问题:

我写了Spout和Bolt,创建了Topology,提交到了Cluster中,然后呢?

怎么访问并使用这个Topology呢?

想象中的办法

刚开始接触Storm的时候,我猜想大概可以通过在Spout中监听一个端口如TCP Socket,HTTP之类的,外面向这个端口发送数据. 然后再最后一个Bolt中将处理数据写入文件/数据库/或者发送到指定的地址上。

理论上感觉应该是可行的,但是没有实践。

实际可以通过DPRC访问

进一步研究,发现有DRPC这个咚咚,只需要起一个DRPC Server ,并且把Topology创建为DRPC Topology,提交。就可以通过DRPCClient对该topology进行访问了。十分方便。

Storm中专业的做法

再深入一步,发现原来Storm中正确的做法应该是这样的:

集成一个通讯中间件,外部应用通过该中间件发送数据,Spout订阅这些数据,并发射....,当Bolt处理完之后又可通过该通讯中间件发送出去给应用。

具体可参考:https://github.com/nathanmarz/storm/wiki/Spout-implementations

Spout implementations


Hadoop和Apache Storm都是大数据处理的重要组件,它们通常一起被用来构建实数据流处理系统。Hadoop主要用于大规模批量数据的离线处理,而Storm则专注于实和低延迟的数据流处理。 在Hadoop+Storm数据采集模块开发,一般会经历以下步骤: 1. **数据源集成**:首先,你需要选择或开发数据采集工具(如Kafka、Flume、Logstash等),将各种来源的数据(如日志文件、网络流、数据库事件)实摄入到系统。 2. **数据预处理**:在接入Hadoop之前,可能需要对数据进行清洗和格式转换,使其符合Hadoop的输入格式(如CSV、JSON或Avro)。 3. **Hadoop Streaming或MapReduce**:对于批量数据,使用Hadoop的MapReduce或Hadoop Streaming进行初始处理和存储。这通常包括数据分片、处理和持久化至HDFS(Hadoop分布式文件系统)。 4. **实流处理(Storm)**:数据从Hadoop的输出或间层进入Storm集群,由一系列称为Spouts(数据源)和Bolts(处理节点)的组件组成实处理管道。Spouts读取数据,Bolts执行业务逻辑,如过滤、聚合、分析等。 5. **实结果**:处理后的实数据可以被进一步分析,或者实发送给其他系统,如实仪表板或通知系统。 6. **监控与日志**:确保整个系统有完善的监控机制,包括任务状态、性能指标和错误处理,以便及发现并解决问题。 相关问题: 1. Storm的Spouts和Bolts有何区别? 2. 如何优化Hadoop+Storm的性能以应对大规模数据流? 3. 在实数据处理,如何保证数据的准确性和一致性?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值